

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

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

CodePipeline で GitHub ソースアクションの完全なクローンオプションを選択できます。このオプションを使用して、パイプラインビルドアクションで Git メタデータの CodeBuild コマンドを実行します。

**注記**  
ここで説明する完全クローンオプションは、CodePipeline でリポジトリメタデータをクローンするかどうかを指定するもので、CodeBuild コマンドでのみ使用できます。CodeBuild プロジェクトで使用する GitHub [ ユーザーアクセストークン](https://docs.github.com/en/apps/creating-github-apps/authenticating-with-a-github-app/generating-a-user-access-token-for-a-github-app)を使用するには、以下の手順に従って AWS Connector for GitHub アプリをインストールし、アプリのインストールフィールドを空のままにします。CodeConnections は、ユーザーアクセストークンを接続に使用します。



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

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

**注記**  
この機能は、アジアパシフィック (香港）、アフリカ (ケープタウン）、中東 (バーレーン）、欧州 (チューリッヒ）、または AWS GovCloud (米国西部) の各リージョンでは使用できません。利用可能なその他のアクションについては、「[CodePipeline との製品とサービスの統合](integrations.md)」を参照してください。欧州 (ミラノ) リージョンでのこのアクションに関する考慮事項については、「[CodeStarSourceConnection (Bitbucket Cloud、GitHub、GitHub Enterprise Server、GitLab.com、および GitLab セルフマネージドアクションの場合)](action-reference-CodestarConnectionSource.md)」の注意を参照してください。

**Topics**
+ [

## 前提条件
](#tutorials-github-gitclone-prereq)
+ [

## ステップ 1: README ファイルを作成する
](#tutorials-github-gitclone-file)
+ [

## ステップ 2: パイプラインを作成してプロジェクトをビルドする
](#tutorials-github-gitclone-pipeline)
+ [

## ステップ 3: 接続を使用するように CodeBuild サービスロールポリシーを更新する
](#tutorials-github-gitclone-rolepolicy)
+ [

## ステップ 4: ビルド出力でリポジトリコマンドを表示する
](#tutorials-github-gitclone-view)

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

開始する前に、以下を実行する必要があります。
+ GitHub アカウントで GitHub リポジトリを作成します。
+ GitHub の認証情報を準備してください。を使用して接続 AWS マネジメントコンソール を設定すると、GitHub 認証情報を使用してサインインするように求められます。

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

GitHub リポジトリを作成したら、次のステップを使用して README ファイルを追加します。

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

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

   ```
   This is a GitHub repository!
   ```

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

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

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

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

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

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

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

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

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

1. このチュートリアルの目的では、**[パイプラインタイプ]** で、**[V1]** を選択します。**[V2]** を選択することもできますが、パイプラインタイプは特性と価格が異なることに注意してください。詳細については、「[パイプラインのタイプ](pipeline-types.md)」を参照してください。

1. [**サービスロール**] で、[**New service role (新しいサービスロール)**] を選択します。
**注記**  
既存の CodePipeline サービスロールを代わりに使用する場合は、サービスロールポリシーに対する `codestar-connections:UseConnection` IAM アクセス許可を追加したことを確認してください。CodePipeline サービスロールの手順については、「[Add permissions to the the CodePipeline service role](https://docs.aws.amazon.com/codepipeline/latest/userguide/security-iam.html#how-to-update-role-new-services)」を参照してください。

1. **[詳細設定]** では、デフォルト値のままにします。**アーティファクトストア**で、[**Default location**] (デフォルトの場所)を選択し、パイプライン用に選択したリージョン内のパイプラインのデフォルトのアーティファクトストア (デフォルトとして指定された Amazon S3 アーティファクトバケットなど) を使用します。
**注記**  
これはソースコードのソースバケットではありません。パイプラインのアーティファクトストアです。パイプラインごとに S3 バケットなどの個別のアーティファクトストアが必要です。

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

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

   1. **[ソースプロバイダー]** で、**[GitHub (GitHub アプリ経由)]** を選択します。

   1. **接続** で、既存の接続を選択するか、新規の接続を作成します。GitHub ソースアクション用の接続を作成または管理するには、「[GitHub コネクション](connections-github.md)」を参照してください。

      特定のプロバイダーへのすべての接続に対してアプリを 1 つインストールします。 AWS Connector for GitHub アプリを既にインストールしている場合は、それを選択してこのステップをスキップします。
**注記**  
[ユーザーアクセストークン](https://docs.github.com/en/apps/creating-github-apps/authenticating-with-a-github-app/generating-a-user-access-token-for-a-github-app)を作成する場合は、 AWS Connector for GitHub アプリが既にインストール済みであることを確認し、[アプリインストール] フィールドを空のままにします。CodeConnections は、ユーザーアクセストークンを接続に使用します。詳細については、「[CodeBuild でソースプロバイダーにアクセスする](https://docs.aws.amazon.com/codebuild/latest/userguide/access-tokens.html)」を参照してください。

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

   1. **BranchName** に、使用するリポジトリブランチを入力します。

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

   1. [**出力アーティファクト形式**] で [**完全なクローン**] を選択し、ソースリポジトリの Git クローンオプションを有効にします。Git クローンオプションを使用できるのは、CodeBuild によって提供されるアクションだけです。このチュートリアルでは、このオプションを使用するための CodeBuild プロジェクトサービスロールの許可を更新するために [ステップ 3: 接続を使用するように CodeBuild サービスロールポリシーを更新する](#tutorials-github-gitclone-rolepolicy) を使用します。

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

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**] (ビルドコマンドの挿入) を選択します。**エディタに切り替え** を選択し、**ビルドコマンド** に以下を貼り付けます。
**注記**  
ビルド仕様の `env` セクションで、この例に示すように、git コマンドの認証情報ヘルパーが有効になっていることを確認します。

      ```
      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 archive --format=zip HEAD > application.zip
        #post_build:
          #commands:
            # - command
            # - command
      artifacts:
        files:
          - application.zip
          # - 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-github-gitclone-rolepolicy"></a>

CodeBuild サービスロールが接続使用許可の更新をする必要があるため、最初のパイプラインの実行は失敗します。`codestar-connections:UseConnection` IAM 許可をサービスロールポリシーに追加します。IAM コンソールでポリシーを更新する手順については、[Bitbucket、GitHub、GitHub Enterprise Server、または GitLab.com に接続するための CodeBuild GitClone アクセス許可を追加します。](troubleshooting.md#codebuild-role-connections) を参照してください。

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

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

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

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

   コマンドは、`README.md` ファイルの内容を出力し、ディレクトリ内のファイルを一覧表示し、リポジトリのクローンを作成し、ログを表示し、リポジトリを ZIP ファイルとしてアーカイブします。