

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# チュートリアル: CodeCommit パイプラインソースでフルクローンを使用する
<a name="tutorials-codecommit-gitclone"></a>

CodePipeline で CodeCommit ソースアクションの完全なクローンオプションを選択できます。このオプションを使用して、CodeBuild がパイプライン構築アクションで Git メタデータにアクセスできるようにします。

このチュートリアルでは、CodeCommit リポジトリにアクセスし、ソースデータの完全なクローンオプションを使用し、リポジトリのクローンを作成してリポジトリの Git コマンドを実行する CodeBuild 構築を実行するパイプラインを作成します。

**注記**  
CodeBuild アクションは、Git クローンオプションで利用可能な Git メタデータの使用をサポートする唯一のダウンストリームアクションです。また、パイプラインにクロスアカウントアクションを含めることはできますが、フルクローンオプションを成功させるには、 CodeCommit アクションと CodeBuild アクションを同じアカウントに含める必要があります。

**重要**  
パイプライン作成の一環として、CodePipeline は、ユーザーが指定した S3 アーティファクトバケットをアーティファクトとして使用します (これは S3 ソースアクションで使用するバケットとは異なります)。S3 アーティファクトバケットがパイプラインのアカウントとは異なるアカウントにある場合は、S3 アーティファクトバケットが によって所有 AWS アカウント されており、安全で信頼できることを確認してください。

**Topics**
+ [前提条件](#tutorials-codecommit-gitclone-prereq)
+ [ステップ 1 : README ファイルを作成する](#tutorials-codecommit-gitclone-file)
+ [ステップ 2: パイプラインを作成してプロジェクトをビルドする](#tutorials-codecommit-gitclone-pipeline)
+ [ステップ 3: CodeBuild サービスロールポリシーを更新してリポジトリをクローンする](#tutorials-codecommit-gitclone-rolepolicy)
+ [ステップ 4: 構築出力でリポジトリコマンドを表示する](#tutorials-codecommit-gitclone-view)

## 前提条件
<a name="tutorials-codecommit-gitclone-prereq"></a>

開始する前に、パイプラインと同じ AWS アカウントとリージョンに CodeCommit リポジトリを作成する必要があります。

## ステップ 1 : README ファイルを作成する
<a name="tutorials-codecommit-gitclone-file"></a>

これらのステップを使用して、README ファイルをソースリポジトリに追加します。README ファイルは、CodeBuild ダウンストリームアクションが読み取るためのサンプルソースファイルを提供します。

**README ファイルを追加するには**

1. リポジトリにログインし、リポジトリを選択します。

1. 新規のファイルを作成するには、**ファイルの追加 > ファイルの作成** を選択します。ファイル `README.md` に名前を付け、ファイルを作成し、次のテキストを追加します。

   ```
   This is a CodeCommit repository!
   ```

1. **[Commit changes]** (変更のコミット) を選択します。

   `README.md` ファイルがリポジトリのルートレベルにあることを確認してください。

## ステップ 2: パイプラインを作成してプロジェクトをビルドする
<a name="tutorials-codecommit-gitclone-pipeline"></a>

 このセクションでは、次のアクションを使用してパイプラインを作成します。
+ CodeCommit ソースアクションを持つソースステージ。
+ ビルドアクションを含む AWS CodeBuild ビルドステージ。

**ウィザードを使用してパイプラインを作成するには**

1. CodePipeline コンソール ([http://console.aws.amazon.com/codesuite/codepipeline/home](https://console.aws.amazon.com/codepipeline/)) にサインインします。

1. [**ようこそ**] ページ、[**開始方法**] ページ、または [**パイプライン**] ページで、[**パイプラインの作成**] を選択します。

1. **[ステップ 1: 作成オプションを選択する]** ページの **[作成オプション]** で、**[カスタムパイプラインを構築する]** オプションを選択します。**[次へ]** を選択します。

1. **[ステップ 2: パイプラインの設定を選択する]** で、**[パイプライン名]** に「**MyCodeCommitPipeline**」と入力します。

1. CodePipeline は、特徴と料金が異なる V1 タイプと V2 タイプのパイプラインを提供しています。V2 タイプは、コンソールで選択できる唯一のタイプです。詳細については、「[パイプラインタイプ](https://docs.aws.amazon.com/codepipeline/latest/userguide/pipeline-types-planning.html?icmpid=docs_acp_help_panel)」を参照してください。CodePipeline の料金については、[料金](https://aws.amazon.com/codepipeline/pricing/)を参照してください。

1. [**Service role (サービスロール)**] で、次のいずれかの操作を行います。
   + [**Existing service role (既存のサービスロール)**] を選択します。
   + 既存の CodePipeline サービスロールを選択します。このロールには、サービスロールポリシーに対する `codecommit:GetRepository` IAM 許可が必要です。[CodePipeline サービスロールに許可を追加する](https://docs.aws.amazon.com/codepipeline/latest/userguide/security-iam.html#how-to-update-role-new-services) を参照してください。

1. **[詳細設定]** では、デフォルト値のままにします。[**次へ**] を選択します。

1. **[ステップ 3: ソースステージの追加]** ページで、次の操作を行います。

   1. **ソースプロバイダ** で、**CodeCommit** を選択します。

   1. **リポジトリ名** で、 リポジトリの名前を選択します。

   1. **ブランチ名** で、ブランチ名を選択します。

   1. **[ソースコードの変更時にパイプラインを開始する]** オプションが選択されていることを確認します。

   1. [**出力アーティファクト形式**] で [**完全なクローン**] を選択し、ソースリポジトリの Git クローンオプションを有効にします。Git クローンオプションを使用できるのは、CodeBuild によって提供されるアクションだけです。

   [**次へ**] を選択します。

1. **[ステップ 4: ビルドステージの追加]** で、以下を行います。

   1. [**ビルドプロバイダ**] で、[**AWS CodeBuild**] を選択します。**[リージョン]** をデフォルトでパイプラインのリージョンにすることを許可します。

   1. **[プロジェクトを作成]** を選択します。

   1. [**プロジェクト名**] に、このビルドプロジェクトの名前を入力します。

   1. [**環境イメージ**] で、[**Managed image (マネージド型イメージ)**] を選択します。[**Operating system**] で、[**Ubuntu**] を選択します。

   1. [**ランタイム**] で、[**Standard (標準)**] を選択します。[**イメージ**] で、[**aws/codebuild/standard:5.0**] を選択します。

   1. [**サービスロール**] で、[**New service role (新しいサービスロール)**] を選択します。
**注記**  
CodeBuild サービスロールの名前を書き留めます。このチュートリアルの最後のステップでは、ロール名が必要になります。

   1. [**Buildspec**] の **Build specifications** (ビルド仕様) で、[**Insert build commands**] (ビルドコマンドの挿入) を選択します。**エディタに切り替え** を選択し、**構築コマンド** の下に次のコードを貼り付けます。

      ```
      version: 0.2
      
      env:
        git-credential-helper: yes
      phases:
        install:
          #If you use the Ubuntu standard image 2.0 or later, you must specify runtime-versions.
          #If you specify runtime-versions and use an image other than Ubuntu standard image 2.0, the build fails.
          runtime-versions:
            nodejs: 12
            # name: version
          #commands:
            # - command
            # - command
        pre_build:
          commands:
            - ls -lt
            - cat README.md
        build:
          commands:
            - git log | head -100
            - git status
            - ls
            - git describe --all
        #post_build:
          #commands:
            # - command
            # - command
      #artifacts:
        #files:
          # - location
        #name: $(date +%Y-%m-%d)
        #discard-paths: yes
        #base-directory: location
      #cache:
        #paths:
          # - paths
      ```

   1. [**Continue to CodePipeline **] (CodePipeline に進む) を選択します。これにより、CodePipeline コンソールに戻り、構築コマンドを使用して構成する CodeBuild プロジェクトが作成されます。ビルドプロジェクトでは、サービスロールを使用して AWS のサービス のアクセス許可を管理します。このステップには数分かかる場合があります。

   1. [**次へ**] を選択します。

1. **[ステップ 5: テストステージの追加]** で、**[テストステージをスキップ]** を選択し、もう一度 **[スキップ]** を選択して警告メッセージを受け入れます。

   [**次へ**] を選択します。

1. **[ステップ 6: デプロイステージの追加]** ページで、**[デプロイステージをスキップ]** を選択し、もう一度 **[スキップ]** を選択して警告メッセージを受け入れます。[**次へ**] を選択します。

1. **ステップ 7: 確認**で、**パイプラインの作成**を選択します。

## ステップ 3: CodeBuild サービスロールポリシーを更新してリポジトリをクローンする
<a name="tutorials-codecommit-gitclone-rolepolicy"></a>

リポジトリからプルを許可した CodeBuild サービスロールを更新する必要があるため、最初のパイプラインの実行は失敗します。

`codecommit:GitPull` IAM 許可をサービスロールポリシーに追加します。IAM コンソールでポリシーを更新する手順については、[CodeBuild GitClone のアクセス権限を CodeCommit ソースアクションに追加します。](troubleshooting.md#codebuild-role-codecommitclone) を参照してください。

## ステップ 4: 構築出力でリポジトリコマンドを表示する
<a name="tutorials-codecommit-gitclone-view"></a>

**ビルド出力 を表示するには**

1. サービスロールが正常に更新されたら、失敗した CodeBuild ステージで **再試行** を選択します。

1. パイプラインが正常に実行されたら、成功したビルドステージで **[詳細を表示]** を選択します。

   詳細ページで、**[ログ]** タブを選択します。CodeBuild ビルド出力を表示します。このコマンドは、入力された変数の値を出力します。

   コマンドは、ファイルの内容を出力し、ディレクトリ内の `README.md` ファイルを一覧表示し、リポジトリのクローンを作成し、ログを表示して、`git describe --all` を実行します。