

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

# CodeBuild のサードパーティーソースリポジトリのサンプル
<a name="sample-third-party-source"></a>

このセクションでは、サードパーティーのソースリポジトリと CodeBuild 間のサンプル統合について説明します。


| サンプル | 説明 | 
| --- | --- | 
|  Bitbucket プルリクエストとウェブフックフィルタのサンプル - 「[CodeBuild の 'Bitbucket プルリクエストとウェブフックフィルタ' のサンプルを実行](sample-bitbucket-pull-request.md)」参照  |  このサンプルでは、Bitbucket リポジトリを使用してプルリクエストを作成する方法について説明します。また、Bitbucket ウェブフックを使用して CodeBuild をトリガーし、プロジェクトのビルドを作成する方法についても説明します。  | 
|  GitHub Enterprise Server サンプル - 「[CodeBuild の GitHub Enterprise Server サンプルを実行](sample-github-enterprise.md)」参照  |  このサンプルでは、GitHub Enterprise Server リポジトリに証明書がインストールされている場合に、CodeBuild を設定する方法を示します。また、Webhook を有効にして、GitHub Enterprise Server リポジトリにコード変更がプッシュされるたびに CodeBuild でソースコードを再ビルドする方法についても示します。  | 
|  GitHub プルリクエストとウェブフックフィルタのサンプル - 「[CodeBuild の GitHub プルリクエストとウェブフックフィルタのサンプルを実行](sample-github-pull-request.md)」参照  |  このサンプルでは、GitHub Enterprise Server リポジトリを使用してプルリクエストを作成する方法について説明します。また、Webhook を有効にして、GitHub Enterprise Server リポジトリにコード変更がプッシュされるたびに CodeBuild でソースコードを再ビルドする方法についても示します。  | 

# CodeBuild の 'Bitbucket プルリクエストとウェブフックフィルタ' のサンプルを実行
<a name="sample-bitbucket-pull-request"></a>

AWS CodeBuild は、ソースリポジトリが Bitbucket の場合にウェブフックをサポートします。つまり、ソースコードが Bitbucket リポジトリに保存されている CodeBuild ビルドプロジェクトでは、ウェブフックを使用することで、コード変更がリポジトリにプッシュされるたびにソースコードを再構築できます。詳細については、「[Bitbucket ウェブフックイベント](bitbucket-webhook.md)」を参照してください。

このサンプルでは、Bitbucket リポジトリを使用してプルリクエストを作成する方法について説明します。また、Bitbucket ウェブフックを使用して CodeBuild をトリガーし、プロジェクトのビルドを作成する方法についても説明します。

**注記**  
Webhook を使用する場合、ユーザーが予期しないビルドをトリガーする可能性があります。このリスクを軽減するには、「[ウェブフック使用のベストプラクティス。](webhooks.md#webhook-best-practices)」を参照してください。

**Topics**
+ [前提条件](#sample-bitbucket-pull-request-prerequisites)
+ [ステップ 1: Bitbucket を使用してビルドプロジェクトを作成し、ウェブフックを有効化](#sample-bitbucket-pull-request-create)
+ [ステップ 2: Bitbucket ウェブフックを使用してビルドをトリガー](#sample-bitbucket-pull-request-trigger)

## 前提条件
<a name="sample-bitbucket-pull-request-prerequisites"></a>

 このサンプルを実行するには、 AWS CodeBuild プロジェクトを Bitbucket アカウントに接続する必要があります。

**注記**  
 CodeBuild によって、Bitbucket を使用したアクセス許可が更新されています。以前にプロジェクトを Bitbucket に接続し、Bitbucket 接続エラーになったことがある場合は、再接続の上、CodeBuild アクセス許可を付与してウェブフックを管理する必要があります。

## ステップ 1: Bitbucket を使用してビルドプロジェクトを作成し、ウェブフックを有効化
<a name="sample-bitbucket-pull-request-create"></a>

 次の手順では、Bitbucket をソースリポジトリとして AWS CodeBuild プロジェクトを作成し、ウェブフックを有効にする方法について説明します。

1. [https://console.aws.amazon.com/codesuite/codebuild/home](https://console.aws.amazon.com/codesuite/codebuild/home) で AWS CodeBuild コンソールを開きます。

1.  CodeBuild の情報ページが表示された場合、**ビルドプロジェクトを作成する**を選択します。それ以外の場合は、ナビゲーションペインで**ビルド**を展開し、**[ビルドプロジェクト] **を選択し、次に **[Create build project (ビルドプロジェクトの作成)] **を選択します。

1. [**Create build project (ビルドプロジェクトの作成)**] を選択します。

1. [**Project configuration (プロジェクトの設定)**] で、次のようにします。  
**[Project name]** (プロジェクト名)  
このビルドプロジェクトの名前を入力します。ビルドプロジェクト名は、 AWS アカウントごとに一意である必要があります。また、他のユーザーがこのプロジェクトの使用目的を理解できるように、ビルドプロジェクトの説明を任意で指定することもできます。

1. [**Source (ソース)**] で、次のようにします。  
**ソースプロバイダー**  
[**Bitbucket**] を選択します。手順に従って Bitbucket に接続 (または再接続) し、[**Authorize**] (承認) を選択します。  
**リポジトリ**  
[**Bitbucket アカウントのリポジトリ**] を選択します。  
まだ Bitbucket アカウントに接続していない場合は、Bitbucket のユーザーネームとパスワードを入力し、[**Bitbucket 認証情報の保存**] を選択します。  
**Bitbucket リポジトリ**  
Bitbucket リポジトリの URL を入力します。

1. [**プライマリソース Webhook イベント**] で、以下を選択します。
**注記**  
[**プライマリソース Webhook イベント**] セクションは、前のステップで [**Bitbucket アカウントのリポジトリ**] を選択した場合のみに表示されます。

   1. プロジェクトの作成時に [**コードの変更がこのレポジトリにプッシュされるたびに再構築する**] を選択します。

   1. [**イベントタイプ**] から、1 つ以上のイベントを選択します。

   1. イベントでビルドをトリガーされた時間をフィルタリングするには、[**これらの条件でビルドを開始する**] で、1 つ以上のオプションフィルタを追加します。

   1. イベントがトリガーされていない時間をフィルタリングするには、[**これらの条件でビルドを開始しない**] で、1 つ以上のオプションフィルタを追加します。

   1. 別のフィルタグループを追加する必要がある場合、[**フィルタグループの追加**] を選択します。

   Bitbucket ウェブフックイベントタイプとフィルターの詳細については、「[Bitbucket ウェブフックイベント](bitbucket-webhook.md)」を参照してください。

1. [**環境**] で以下の操作を行います。  
**環境イメージ**  
次のいずれかを選択します。    
によって管理される Docker イメージを使用するには AWS CodeBuild:  
**[Managed image (マネージドイメージ)]** を選択し、次に **[オペレーティングシステム]**、**[ランタイム]**、**[イメージ]**、および **[ランタイムバージョン] **で適切な選択を行います。利用可能な場合は、[**環境タイプ**] から選択します。  
別の Docker イメージを使用するには:  
[**カスタムイメージ**] を選択します。**[Environment type (環境タイプ)]** で、 [**ARM**]、[**Linux**]、[**Linux GPU**] または [**Windows**] を選択します。[**Other registry (その他のレジストリ)**] を選択した場合は、[**External registry URL (外部のレジストリ URL)**] に `docker repository/docker image name` の形式に従って Docker Hub の Docker イメージの名前とタグを入力します。**Amazon ECR** を選択した場合は、**Amazon ECR リポジトリ**と **Amazon ECR イメージ**を使用して、 AWS アカウントの Docker イメージを選択します。  
プライベートDockerイメージを使用するには：  
[**カスタムイメージ**] を選択します。**[Environment type (環境タイプ)]** で、 [**ARM**]、[**Linux**]、[**Linux GPU**] または [**Windows**] を選択します。[**Image registry (イメージレジストリ)**] に [**Other registry (その他のレジストリ)**] を選択して、その後プライベート Docker イメージの認証情報の ARN を入力します。認証情報は、Secrets Manager で作成する必要があります。詳細については、「 *AWS Secrets Manager ユーザーガイド*」の[「What is AWS Secrets Manager?](https://docs.aws.amazon.com/secretsmanager/latest/userguide/)」を参照してください。  
**サービスロール**  
次のいずれかを選択します。  
   + CodeBuild サービスロールがない場合は、[**新しいサービスロール**] を選択します。[**Role name**] に、新しいロールの名前を入力します。
   + CodeBuild サービスロールがある場合は、**[Existing service role (既存のサービスロール)]** を選択します。[**Role ARN**] で、サービスロールを選択します。
コンソールでは、ビルドプロジェクトの作成時や更新時に CodeBuild サービスロールも作成できます。デフォルトでは、ロールはそのビルドプロジェクトでのみ使用できます。コンソールでは、このサービスロールを別のビルドプロジェクトと関連付けると、この別のビルドプロジェクトで使用できるようにロールが更新されます。サービスロールは最大 10 個のビルドプロジェクトで使用できます。

1. [**Buildspec**] で、次のいずれかを行います。
   + [**Use a buildspec file**] (ビルド仕様ファイルの使用) を選択して、ソースコードのルートディレクトリの buildspec.yml を使用します。
   + [**ビルドコマンドの挿入**] を選択して、コンソールを使用してビルドコマンドを挿入します。

   詳細については、「[ビルド仕様 (buildspec) に関するリファレンス](build-spec-ref.md)」を参照してください。

1. [**アーティファクト**] で、次のようにします。  
**タイプ**  
次のいずれかを選択します。  
   + ビルド出力アーティファクトを作成しない場合は、[**No artifacts (アーティファクトなし)**] を選択します。
   + ビルド出力を S3 バケットに保存する場合は、[**Amazon S3**] を選択して次のいずれかの操作を行います。
     + ビルド出力 ZIP ファイルまたはフォルダにプロジェクト名を使用する場合は、[**Name (名前)**] を空白のままにします。それ以外の場合は、名前を入力します。デフォルトでは、アーティファクト名はプロジェクト名です。別の名前を使用する場合は、アーティファクト名ボックスに名前を入力します。ZIP ファイルを出力する場合は、zip 拡張子を含めます。
     + [**Bucket name (バケット名)**] で、出力バケットの名前を選択します。
     + この手順の前の方で [**ビルドコマンドの挿入**] を選択した場合は、[**出力ファイル**] に、ビルド出力 ZIP ファイルまたはフォルダに格納するビルドのファイルの場所を入力します。複数の場所の場合は、各場所をコンマで区切ります (例: `appspec.yml, target/my-app.jar`)。詳細については、「`files`」で [buildspec の構文](build-spec-ref.md#build-spec-ref-syntax) の説明を参照してください。  
**追加設定**  
[**Additional configuration (追加設定)**] オプションを展開し、必要に応じてオプションを設定します。

1. [**Create build project (ビルドプロジェクトの作成)**] を選択します。[**確認**] ページで、[**ビルドの開始**] を選択してビルドを実行します。

## ステップ 2: Bitbucket ウェブフックを使用してビルドをトリガー
<a name="sample-bitbucket-pull-request-trigger"></a>

Bitbucket ウェブフックを使用するプロジェクトの場合、Bitbucket リポジトリがソースコードの変更を検出すると、 はビルド AWS CodeBuild を作成します。

1. [https://console.aws.amazon.com/codesuite/codebuild/home](https://console.aws.amazon.com/codesuite/codebuild/home) で AWS CodeBuild コンソールを開きます。

1. ナビゲーションペインで [**ビルドプロジェクト**] を選択後、ウェブフックを使用して Bitbucket リポジトリと関連付けられているプロジェクトを選択します。Bitbucket Webhook プロジェクトの作成の詳細については、「[ステップ 1: Bitbucket を使用してビルドプロジェクトを作成し、ウェブフックを有効化](#sample-bitbucket-pull-request-create)」を参照してください。

1. プロジェクトの Bitbucket リポジトリのコードに一部変更を加えます。

1. Bitbucket リポジトリにプルリクエストを作成します。詳細については、「[プルリクエストを行う](https://www.atlassian.com/git/tutorials/making-a-pull-request)」を参照してください。

1. Bitbucket ウェブフックページで、[**View request (リクエストの表示)**] を選択して最新イベントのリストを表示します。

1. [**View details**] (詳細の表示) を選択して、CodeBuild より返されるレスポンスに関する詳細を表示します。次のように表示されます。

   ```
   "response":"Webhook received and build started: https://us-east-1.console.aws.amazon.com/codebuild/home..."
   "statusCode":200
   ```

1. Bitbucket プルリクエストページに移動して、ビルドのステータスを表示します。

# CodeBuild の GitHub Enterprise Server サンプルを実行
<a name="sample-github-enterprise"></a>

AWS CodeBuild は、ソースリポジトリとして GitHub Enterprise Server をサポートしています。このサンプルでは、GitHub Enterprise Server リポジトリが証明書をインストールしている場合に、CodeBuild をセットアップする方法を示します。また、Webhook を有効にして、GitHub Enterprise Server リポジトリにコード変更がプッシュされるたびに CodeBuild でソースコードを再ビルドする方法についても示します。

**Topics**
+ [前提条件](#sample-github-enterprise-prerequisites)
+ [ステップ 1: GitHub Enterprise Server でビルドプロジェクトを作成し、ウェブフックを有効化](#sample-github-enterprise-running)

## 前提条件
<a name="sample-github-enterprise-prerequisites"></a>

1. CodeBuild プロジェクトの個人用アクセストークンを生成する。GitHub Enterprise ユーザーを作成して、このユーザーの個人用アクセストークンを生成することをお勧めします。CodeBuild プロジェクトを作成する際に使用できるように、クリップボードにこれをコピーします。詳細については、GitHub Help ウェブサイトの [Creating a personal access token for the command line](https://help.github.com/articles/creating-a-personal-access-token-for-the-command-line/) を参照してください。

   個人用アクセストークンを作成するときには、定義に**リポジトリ**スコープを含めてください。  
![\[定義内の [リポジトリ] スコープ。\]](http://docs.aws.amazon.com/ja_jp/codebuild/latest/userguide/images/scopes.png)

1. GitHub Enterprise サーバーから証明書をダウンロードします。CodeBuild は、証明書を使用して信頼された SSL 接続をリポジトリに作成します。

   **Linux/macOS クライアント:**

   のターミナルウィンドウから、以下のコマンドを実行します。

   ```
   echo -n | openssl s_client -connect HOST:PORTNUMBER \
       | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > /folder/filename.pem
   ```

   コマンドのプレースホルダを次の値で置き換えます。

   *HOST* GitHub Enterprise Server リポジトリの IP アドレス。

   *PORTNUMBER*。接続するときに使用するポート番号 (たとえば、443)。

   *folder* 証明書をダウンロードしたフォルダ。

   *filename* 証明書ファイルのファイル名。
**重要**  
証明書を .pem ファイルとして保存します。

   **Windows クライアント:**

   ブラウザを使用して GitHub Enterprise Server から証明書をダウンロードします。サイトの証明書の詳細を表示するには、南京錠アイコンを選択します。証明書をエクスポートする方法についての詳細は、ブラウザのドキュメントを参照してください。
**重要**  
証明書を .pem ファイルとして保存します。

1. 証明書ファイルを S3 バケットにアップロードします。S3 バケットを作成する方法については、「[S3 バケットを作成する方法](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket.html)」を参照してください。S3 バケットにオブジェクトをアップロードする方法については、「[バケットにファイルとフォルダをアップロードする方法](https://docs.aws.amazon.com/AmazonS3/latest/userguide/upload-objects.html)」を参照してください。
**注記**  
このバケットは、ビルドと同じ AWS リージョンにある必要があります。たとえば、米国東部 (オハイオ) リージョンでビルドを実行するように CodeBuild に指示している場合、バケットは米国東部 (オハイオ) リージョンにある必要があります。

## ステップ 1: GitHub Enterprise Server でビルドプロジェクトを作成し、ウェブフックを有効化
<a name="sample-github-enterprise-running"></a>

1. [https://console.aws.amazon.com/codesuite/codebuild/home](https://console.aws.amazon.com/codesuite/codebuild/home) で AWS CodeBuild コンソールを開きます。

1.  CodeBuild の情報ページが表示された場合、**ビルドプロジェクトを作成する**を選択します。それ以外の場合は、ナビゲーションペインで**ビルド**を展開し、**[ビルドプロジェクト] **を選択し、次に **[Create build project (ビルドプロジェクトの作成)] **を選択します。

1. [**プロジェクト名**] に、このビルドプロジェクトの名前を入力します。ビルドプロジェクト名は、 AWS アカウントごとに一意である必要があります。また、他のユーザーがこのプロジェクトの使用目的を理解できるように、ビルドプロジェクトの説明を任意で指定することもできます。

1. [**ソース**] の [**ソースプロバイダ**] で、[**GitHub Enterprise Server**] を選択します。
   + [**アカウント認証情報の管理**] を選択し、[**個人用アクセストークン**] を選択します。[**サービス**] で、[**Secrets Manager (推奨)**] を選択し、シークレットを設定します。次に、[**GitHub Enterprise 個人用アクセストークン**] で、個人用アクセストークンを入力し、[**保存**] を選択します。
   + [**Repository URL**] に、リポジトリへのパス (例: リポジトリの名前) を入力します。
   + [**Additional configuration (追加設定)**] を展開します。
   + [**Rebuild every time a code change is pushed to this repository (コード変更がこのリポジトリにプッシュされるたび再構築)**] を選択して、コード変更がこのリポジトリにプッシュされるたびに再構築します。
   + GitHub Enterprise Server プロジェクトリポジトリに接続するときの SSL 警告を無視するには、[**Enable insecure SSL (安全でない SSL を有効にする)**] を選択します。
**注記**  
[**Enable insecure SSL (セキュアでない SSL を有効にする)**] はテストのみに使用することが推奨されます。本番環境では使用しないでください。  
![\[GitHub Enterprise Server プロジェクトリポジトリの設定。\]](http://docs.aws.amazon.com/ja_jp/codebuild/latest/userguide/images/github-enterprise.png)

1. [**環境**] で以下の操作を行います。

   [**Environment image (環境イメージ)**] で、次のいずれかの操作を行います。
   + によって管理される Docker イメージを使用するには AWS CodeBuild、**マネージドイメージ**を選択し、**オペレーティングシステム**、**ランタイム (複数可)**、**イメージ**、**イメージバージョン**から選択します。利用可能な場合は、[**環境タイプ**] から選択します。
   + 別の Docker イメージを使用するには、[**カスタムイメージ**] を選択します。**[Environment type (環境タイプ)]** で、 [**ARM**]、[**Linux**]、[**Linux GPU**] または [**Windows**] を選択します。[**Other registry (その他のレジストリ)**] を選択した場合は、[**External registry URL (外部のレジストリ URL)**] に `docker repository/docker image name` の形式に従って Docker Hub の Docker イメージの名前とタグを入力します。**Amazon ECR** を選択した場合は、**Amazon ECR リポジトリ**と **Amazon ECR イメージ**を使用して、 AWS アカウントの Docker イメージを選択します。
   + プライベート Docker イメージを使用するには、[**カスタムイメージ**] を選択します。**[Environment type (環境タイプ)]** で、 [**ARM**]、[**Linux**]、[**Linux GPU**] または [**Windows**] を選択します。[**Image registry (イメージレジストリ)**] に [**Other registry (その他のレジストリ)**] を選択して、その後プライベート Docker イメージの認証情報の ARN を入力します。認証情報は、Secrets Manager で作成する必要があります。詳細については、*AWS Secrets Manager ユーザーガイド*の「[AWS Secrets Managerとは](https://docs.aws.amazon.com/secretsmanager/latest/userguide/)」を参照してください。

1. [**Service role (サービスロール)**] で、次のいずれかの操作を行います。
   + CodeBuild サービスロールがない場合は、[**新しいサービスロール**] を選択します。[**Role name**] に、新しいロールの名前を入力します。
   + CodeBuild サービスロールがある場合は、**[Existing service role (既存のサービスロール)]** を選択します。[**Role ARN**] で、サービスロールを選択します。
**注記**  
コンソールでは、ビルドプロジェクトの作成時や更新時に CodeBuild サービスロールも作成できます。デフォルトでは、ロールはそのビルドプロジェクトでのみ使用できます。コンソールでは、このサービスロールを別のビルドプロジェクトと関連付けると、この別のビルドプロジェクトで使用できるようにロールが更新されます。サービスロールは最大 10 個のビルドプロジェクトで使用できます。

1. [**Additional configuration (追加設定)**] を展開します。

   CodeBuild を VPC と連携させたい場合:
   + **[VPC]** で、CodeBuild が使用する VPC ID を選択します。
   + [**VPC Subnets (サブネット)**] で、CodeBuild が使用するリソースを含むサブネットを選択します。
   + **[VPC Security groups (VPC セキュリティグループ)] **で、CodeBuild が VPC 内のリソースへのアクセスを許可するために使用するセキュリティグループを選択します。

   詳細については、「[Amazon Virtual Private Cloud AWS CodeBuild で を使用する](vpc-support.md)」を参照してください。

1. [**Buildspec**] で、次のいずれかを行います。
   + [**Use a buildspec file**] (ビルド仕様ファイルの使用) を選択して、ソースコードのルートディレクトリの buildspec.yml を使用します。
   + [**ビルドコマンドの挿入**] を選択して、コンソールを使用してビルドコマンドを挿入します。

   詳細については、「[ビルド仕様 (buildspec) に関するリファレンス](build-spec-ref.md)」を参照してください。

1. [**アーティファクト**] の [**タイプ**] で、次のいずれかの操作を行います。
   + ビルド出力アーティファクトを作成しない場合は、[**No artifacts (アーティファクトなし)**] を選択します。
   + ビルド出力を S3 バケットに保存する場合は、[**Amazon S3**] を選択して次のいずれかの操作を行います。
     + ビルド出力 ZIP ファイルまたはフォルダにプロジェクト名を使用する場合は、[**Name (名前)**] を空白のままにします。それ以外の場合は、名前を入力します。デフォルトでは、アーティファクト名はプロジェクト名です。別の名前を使用する場合は、アーティファクト名ボックスに名前を入力します。ZIP ファイルを出力する場合は、zip 拡張子を含めます。
     + [**Bucket name (バケット名)**] で、出力バケットの名前を選択します。
     + この手順の前の方で [**ビルドコマンドの挿入**] を選択した場合は、[**出力ファイル**] に、ビルド出力 ZIP ファイルまたはフォルダに格納するビルドのファイルの場所を入力します。複数の場所の場合は、各場所をコンマで区切ります (例: `appspec.yml, target/my-app.jar`)。詳細については、「`files`」で [buildspec の構文](build-spec-ref.md#build-spec-ref-syntax) の説明を参照してください。

1. [**キャッシュタイプ**] で、以下のいずれかを選択します。
   + キャッシュを使用しない場合は、[**No cache**] を選択します。
   + Amazon S3 キャッシュを使用するには、[**Amazon S3**] を選択して次の操作を行います。
     + [**バケット**] では、キャッシュが保存される S3 バケットの名前を選択します。
     + (オプション) **[Cache path prefix (キャッシュパスのプレフィックス)] **に、Amazon S3 パスのプレフィックスを入力します。[**キャッシュパスのプレフィックス**] 値はディレクトリ名に似ています。これにより、バケット内の同じディレクトリにキャッシュを保存できます。
**重要**  
パスのプレフィックスの末尾にスラッシュ (/) を付加しないでください。
   +  ローカルキャッシュを使用する場合は、[**ローカル**] を選択し、ローカルキャッシュモードを 1 つ以上選択します。
**注記**  
Docker レイヤーキャッシュモードは Linux でのみ利用可能です。このモードを選択する場合、プロジェクトは権限モードで実行する必要があります。

   キャッシュを使用すると、再利用可能なビルド環境がキャッシュに保存され、ビルド全体で使用されるため、かなりのビルド時間が節約されます。ビルド仕様ファイルのキャッシュの指定に関する詳細については、「[buildspec の構文](build-spec-ref.md#build-spec-ref-syntax)」を参照してください。キャッシングの詳細については、「[パフォーマンスを向上させるためのキャッシュビルド](build-caching.md)」を参照してください。

1. [**Create build project (ビルドプロジェクトの作成)**] を選択します。ビルドプロジェクトページで、[**Start build (ビルドの開始)**] を選択します。

# CodeBuild の GitHub プルリクエストとウェブフックフィルタのサンプルを実行
<a name="sample-github-pull-request"></a>

AWS CodeBuild は、ソースリポジトリが GitHub の場合にウェブフックをサポートします。つまり、ソースコードが GitHub リポジトリに保存されている CodeBuild ビルドプロジェクトでは、ウェブフックを使用することで、コード変更がリポジトリにプッシュされるたびにソースコードを再構築できます。CodeBuild のサンプルについては、「[AWS CodeBuild のサンプル](https://github.com/aws-samples/aws-codebuild-samples)」を参照してください。

**注記**  
Webhook を使用する場合、ユーザーが予期しないビルドをトリガーする可能性があります。このリスクを軽減するには、「[ウェブフック使用のベストプラクティス。](webhooks.md#webhook-best-practices)」を参照してください。

**Topics**
+ [ステップ 1: GitHub でビルドプロジェクトを作成し、ウェブフックを有効化](#sample-github-pull-request-running)
+ [ステップ 2: ウェブフックが有効になっていることを確認](#verification-checks)

## ステップ 1: GitHub でビルドプロジェクトを作成し、ウェブフックを有効化
<a name="sample-github-pull-request-running"></a>

1. [https://console.aws.amazon.com/codesuite/codebuild/home](https://console.aws.amazon.com/codesuite/codebuild/home) で AWS CodeBuild コンソールを開きます。

1.  CodeBuild の情報ページが表示された場合、**ビルドプロジェクトを作成する**を選択します。それ以外の場合は、ナビゲーションペインで**ビルド**を展開し、**[ビルドプロジェクト] **を選択し、次に **[Create build project (ビルドプロジェクトの作成)] **を選択します。

1. [**Create build project (ビルドプロジェクトの作成)**] を選択します。

1. [**Project configuration (プロジェクトの設定)**] で、次のようにします。  
**[Project name]** (プロジェクト名)  
このビルドプロジェクトの名前を入力します。ビルドプロジェクト名は、 AWS アカウントごとに一意である必要があります。また、他のユーザーがこのプロジェクトの使用目的を理解できるように、ビルドプロジェクトの説明を任意で指定することもできます。

1. [**Source (ソース)**] で、次のようにします。  
**ソースプロバイダー**  
[**GitHub**] を選択します。手順に従って GitHub に接続 (または再接続) し、[**Authorize (承認)**] を選択します。  
**リポジトリ**  
[**GitHub アカウントのリポジトリ**] を選択します。  
**GitHub リポジトリ**  
GitHub リポジトリの URL を入力します。

1. [**プライマリソース Webhook イベント**] で、以下を選択します。
**注記**  
[**プライマリソースの Webhook イベント**] セクションは、前のステップで [**GitHub アカウントのリポジトリ**] を選択した場合のみに表示されます。

   1. プロジェクトの作成時に [**コードの変更がこのレポジトリにプッシュされるたびに再構築する**] を選択します。

   1. [**イベントタイプ**] から、1 つ以上のイベントを選択します。

   1. イベントでビルドをトリガーされた時間をフィルタリングするには、[**これらの条件でビルドを開始する**] で、1 つ以上のオプションフィルタを追加します。

   1. イベントがトリガーされていない時間をフィルタリングするには、[**これらの条件でビルドを開始しない**] で、1 つ以上のオプションフィルタを追加します。

   1. 別のフィルタグループを追加する必要がある場合、[**フィルタグループの追加**] を選択します。

   GitHub Webhook イベントタイプとフィルターの詳細については、「[GitHub ウェブフックイベント](github-webhook.md)」を参照してください。

1. [**環境**] で以下の操作を行います。  
**環境イメージ**  
次のいずれかを選択します。    
によって管理される Docker イメージを使用するには AWS CodeBuild:  
**[Managed image (マネージドイメージ)]** を選択し、次に **[オペレーティングシステム]**、**[ランタイム]**、**[イメージ]**、および **[ランタイムバージョン] **で適切な選択を行います。利用可能な場合は、[**環境タイプ**] から選択します。  
別の Docker イメージを使用するには:  
[**カスタムイメージ**] を選択します。**[Environment type (環境タイプ)]** で、 [**ARM**]、[**Linux**]、[**Linux GPU**] または [**Windows**] を選択します。[**Other registry (その他のレジストリ)**] を選択した場合は、[**External registry URL (外部のレジストリ URL)**] に `docker repository/docker image name` の形式に従って Docker Hub の Docker イメージの名前とタグを入力します。[**Amazon ECR**] を選択した場合は、[**Amazon ECR レポジトリ**] および [**Amazon ECR イメージ**] を使用して AWS アカウントの Docker イメージを選択します。  
プライベートDockerイメージを使用するには：  
[**カスタムイメージ**] を選択します。**[Environment type (環境タイプ)]** で、 [**ARM**]、[**Linux**]、[**Linux GPU**] または [**Windows**] を選択します。[**Image registry (イメージレジストリ)**] に [**Other registry (その他のレジストリ)**] を選択して、その後プライベート Docker イメージの認証情報の ARN を入力します。認証情報は、Secrets Manager で作成する必要があります。詳細については、「 *AWS Secrets Manager ユーザーガイド*」の[「What is AWS Secrets Manager?](https://docs.aws.amazon.com/secretsmanager/latest/userguide/)」を参照してください。  
**サービスロール**  
次のいずれかを選択します。  
   + CodeBuild サービスロールがない場合は、[**新しいサービスロール**] を選択します。[**Role name**] に、新しいロールの名前を入力します。
   + CodeBuild サービスロールがある場合は、**[Existing service role (既存のサービスロール)]** を選択します。[**Role ARN**] で、サービスロールを選択します。
コンソールでは、ビルドプロジェクトの作成時や更新時に CodeBuild サービスロールも作成できます。デフォルトでは、ロールはそのビルドプロジェクトでのみ使用できます。コンソールでは、このサービスロールを別のビルドプロジェクトと関連付けると、この別のビルドプロジェクトで使用できるようにロールが更新されます。サービスロールは最大 10 個のビルドプロジェクトで使用できます。

1. [**Buildspec**] で、次のいずれかを行います。
   + [**Use a buildspec file**] (ビルド仕様ファイルの使用) を選択して、ソースコードのルートディレクトリの buildspec.yml を使用します。
   + [**ビルドコマンドの挿入**] を選択して、コンソールを使用してビルドコマンドを挿入します。

   詳細については、「[ビルド仕様 (buildspec) に関するリファレンス](build-spec-ref.md)」を参照してください。

1. [**アーティファクト**] で、次のようにします。  
**タイプ**  
次のいずれかを選択します。  
   + ビルド出力アーティファクトを作成しない場合は、[**No artifacts (アーティファクトなし)**] を選択します。
   + ビルド出力を S3 バケットに保存する場合は、[**Amazon S3**] を選択して次のいずれかの操作を行います。
     + ビルド出力 ZIP ファイルまたはフォルダにプロジェクト名を使用する場合は、[**Name (名前)**] を空白のままにします。それ以外の場合は、名前を入力します。デフォルトでは、アーティファクト名はプロジェクト名です。別の名前を使用する場合は、アーティファクト名ボックスに名前を入力します。ZIP ファイルを出力する場合は、zip 拡張子を含めます。
     + [**Bucket name (バケット名)**] で、出力バケットの名前を選択します。
     + この手順の前の方で [**ビルドコマンドの挿入**] を選択した場合は、[**出力ファイル**] に、ビルド出力 ZIP ファイルまたはフォルダに格納するビルドのファイルの場所を入力します。複数の場所の場合は、各場所をコンマで区切ります (例: `appspec.yml, target/my-app.jar`)。詳細については、「`files`」で [buildspec の構文](build-spec-ref.md#build-spec-ref-syntax) の説明を参照してください。  
**追加設定**  
[**Additional configuration (追加設定)**] オプションを展開し、必要に応じてオプションを設定します。

1. [**Create build project (ビルドプロジェクトの作成)**] を選択します。[**確認**] ページで、[**ビルドの開始**] を選択してビルドを実行します。

## ステップ 2: ウェブフックが有効になっていることを確認
<a name="verification-checks"></a>

1. [https://console.aws.amazon.com/codesuite/codebuild/home](https://console.aws.amazon.com/codesuite/codebuild/home) で AWS CodeBuild コンソールを開きます。

1. ナビゲーションペインで、[**Build projects**] を選択します。

1. 次のいずれかを行ってください。
   + 確認する Webhook を持つビルドプロジェクトのリンクを選択し、[**ビルドの詳細**] を選択します。
   + 確認する Webhook を持つビルドプロジェクトの横にあるラジオボタンを選択して、[**View details**] (詳細を表示) を選択後、[**ビルドの詳細**] タブを選択します。

1. [**プライマリソース Webhook イベント**] で、[**Webhook**] の URL リンクを選択します。

1. GitHub リポジトリの [**設定**] ページの [**ウェブフック**] で、[**プルリクエスト**] と [**プッシュ**] が選択されていることを確認します。

1. GitHub プロファイル設定の**「個人設定**」、**「アプリケーション****」、「認可された OAuth アプリ**」で、アプリケーションが選択した AWS リージョンへのアクセスを許可されていることを確認できます。

# チュートリアル: 証明書ストレージに S3 を使用した CodeBuild での Fastlane による Apple コード署名
<a name="sample-fastlane"></a>

[fastlane](https://docs.fastlane.tools/) は、iOS および Android アプリのベータデプロイとリリースを自動化する際によく使用されているオープンソース自動化ツールです。スクリーンショットの生成、コード署名の処理、アプリケーションのリリースなど、面倒なタスクがすべて処理されます。

## 前提条件
<a name="sample-fastlane-prerequisites"></a>

このチュートリアルを完了するには、まず以下をセットアップする必要があります。
+  AWS アカウント
+ [Apple 開発者アカウント](https://developer.apple.com/)
+ 証明書を保存するための S3 バケット
+ プロジェクトにインストールされた fastlane - fastlane のインストールに関する[ガイド](https://docs.fastlane.tools/getting-started/ios/setup/)

## ステップ 1: ローカルマシンで S3 を使用して Fastlane Match を設定する
<a name="sample-fastlane-S3"></a>

[Fastlane Match](https://docs.fastlane.tools/actions/match/) は [Fastlane ツール](https://fastlane.tools/)の 1 つであり、ローカル開発環境と CodeBuild の両方でコード署名をシームレスに設定できます。Fastlane Match は、すべてのコード署名証明書とプロビジョニングプロファイルを Git リポジトリ/S3 バケット/Google クラウドストレージに保存し、必要に応じて必要な証明書とプロファイルをダウンロードおよびインストールします。

この例では、ストレージに Amazon S3 バケットをセットアップして使用します。

****

1. プロジェクトで一致を初期化します。

   ```
   fastlane match init
   ```

1. プロンプトが表示されたら、ストレージモードとして S3 を選択します。

1. S3 を使用するよう `*Matchfile*` を更新します。

   ```
   storage_mode("s3")
      s3_bucket("your-s3-bucket-name")
      s3_region("your-aws-region")
      type("appstore") # The default type, can be: appstore, adhoc, enterprise or development
   ```

## ステップ 2: Fastfile をセットアップする
<a name="sample-fastlane-S3-fastfile"></a>

次のレーンで `Fastfile` を作成または更新します。

CodeBuild では、アプリをビルドして署名するたびに Fastlane Match を実行する必要があります。これを行うには、アプリを構築するレーンに `match` アクションを追加するのが最も簡単です。

```
default_platform(:ios)

platform :ios do
  before_all do
    setup_ci
  end
  
  desc "Build and sign the app"
  lane :build do
    match(type: "appstore", readonly: true)
    gym(
      scheme: "YourScheme",
      export_method: "app-store"
    )
  end
end
```

**注記**  
一致アクションが正しく機能するよう、`Fastfile` の `before_all ` セクションに `setup_ci` を追加してください。これにより、適切なアクセス許可を持つ一時的な Fastlane キーチェーンが使用されます。これを使用しないと、ビルドが失敗したり、一貫性のない結果が表示されたりすることがあります。



## ステップ 3: `fastlane match` コマンドを実行して、それぞれの証明書とプロファイルを生成する
<a name="sample-fastlane-S3-certificates"></a>

指定されたタイプ (開発、アプリストア、アドホック、エンタープライズ) の fastlane match コマンドは、証明書とプロファイルを生成します (リモートストアにない場合)。証明書とプロファイルは、fastlane によって S3 に保存されます。

```
bundle exec fastlane match appstore
```

コマンドの実行がインタラクティブになり、証明書を復号するためのパスフレーズを設定するよう fastlane により求められます。

## ステップ 4: プロジェクトのアプリケーションファイルを作成する
<a name="sample-fastlane-S3-appfile"></a>

プロジェクトに応じてアプリケーションファイルを作成または追加します。

****

1. プロジェクトのビルド要件に基づいて、[Gymfile](http://docs.fastlane.tools/actions/gym/#gymfile)、[Appfile](http://docs.fastlane.tools/advanced/Appfile/)、[Snapfile](http://docs.fastlane.tools/actions/snapshot/#snapfile)、[Deliverfile](http://docs.fastlane.tools/actions/deliver/#editing-the-deliverfile) を作成または追加します。

1. 変更内容をリモートリポジトリにコミットする

## ステップ 5: Secrets Manager で環境変数を作成する
<a name="sample-fastlane-S3-secrets"></a>

fastlane セッション Cookie と一致するパスフレーズを保存するための 2 つのシークレットを作成します。Secrets Manager でシークレットを作成する方法の詳細については、「[AWS Secrets Manager シークレットを作成する](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html)」を参照してください。

****

1. 次のように fastlane セッション Cookie にアクセスします。

   1. シークレットキー - `FASTLANE_SESSION`

   1. シークレット値 - ローカルマシンで次のコマンドを実行して生成されたセッション Cookie。
**注記**  
この値は、ローカルファイル `~/.fastlane/spaceship/my_appleid_username/cookie` での認証後に使用できます。

      ```
      fastlane spaceauth -u <apple account>
      ```

1. Fastlane Match パスフレーズ - Fastlane Match が S3 バケットに保存されている証明書とプロファイルを復号できるようにするには、Match セットアップのステップで設定した暗号化パスフレーズを CodeBuild プロジェクトの環境変数に追加する必要があります。

   1. シークレットキー - `MATCH_PASSWORD`

   1. シークレット値 - *<証明書を復号するためのパスフレーズと一致>*。パスフレーズは、ステップ 3 で証明書を生成するときに設定されます。

**注記**  
Secrets Manager で上記のシークレットを作成するときは、必ずシークレット名にプレフィックス `/CodeBuild/` を付けてください。

## ステップ 6: コンピューティングフリートを作成する
<a name="sample-fastlane-S3-fleet"></a>

プロジェクトのコンピューティングフリートを作成します。

****

1. コンソールで CodeBuild に移動し、新しいコンピューティングフリートを作成します。

1. オペレーティングシステムとして「macOS」を選択し、適切なコンピューティングタイプとイメージを選択します。

## ステップ 7: CodeBuild でプロジェクトを作成する
<a name="sample-fastlane-S3-project"></a>

CodeBuild でプロジェクトを作成します。



****

1. [https://console.aws.amazon.com/codesuite/codebuild/home](https://console.aws.amazon.com/codesuite/codebuild/home) で AWS CodeBuild コンソールを開きます。

1. ビルドプロジェクトを作成します。詳細については、「[ビルドプロジェクトの作成 (コンソール)](create-project.md#create-project-console)」および「[ビルドの実行 (コンソール)](run-build-console.md)」を参照してください。

1. ソースプロバイダー (GitHub、CodeCommit など) をセットアップします。これは、証明書リポジトリではなく iOS プロジェクトソースリポジトリです。

1.  [**環境**] で以下の操作を行います。
   + [**リザーブドキャパシティ**] を選択します。
   + [**フリート**] で、上記で作成したフリートを選択します。
   + CodeBuild で自動作成するサービスロールの名前を指定します。
   + 以下の環境変数を指定します。
     + 名前: `MATCH_PASSWORD`、値: *<secrets arn>*、タイプ: Secrets Manager (MATCH\$1PASSWORD のステップ 5 で作成されたシークレット ARN)
     + 名前: `FASTLANE_SESSION`、値: *<secrets arn>*、タイプ: Secrets Manager (FASTLANE\$1SESSION のステップ 5 で作成されたシークレット ARN)

1. [**Buildspec**] で、以下を追加します。

   ```
   version: 0.2
   
   phases:
     install:
       commands:
         - gem install bundler
         - bundle install
     build:
       commands:
         - echo "Building and signing the app..."
         - bundle exec fastlane build
     post_build:
       commands:
         - echo "Build completed on date"
   
   artifacts:
     files:
       - '*/.ipa'
     name: app-$(date +%Y-%m-%d)
   ```

## ステップ 8: IAM ロールを設定する
<a name="sample-fastlane-S3-role"></a>

プロジェクトが作成されたら、CodeBuild プロジェクトのサービスロールに、証明書を含む S3 バケットにアクセスするアクセス許可があることを確認します。以下のポリシーをロールに追加します。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetBucketLocation",
                "s3:ListBucket"
            ],
            "Resource": "arn:aws:s3:::your-s3-bucket-name"
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:PutObject",
                "s3:DeleteObject"
            ],
            "Resource": "arn:aws:s3:::your-s3-bucket-name/*"
        }
    ]
}
```

------

## ステップ 9: ビルドを実行する
<a name="sample-fastlane-S3-run"></a>

ビルドを実行します。CodeBuild でビルドステータスとログを確認できます。

ジョブが完了すると、ジョブのログを表示できるようになります。

## トラブルシューティング
<a name="sample-fastlane-S3-troubleshooting"></a>
+ 証明書の取得で問題が発生した場合は、S3 にアクセスできるように IAM アクセス許可が正しく設定されていることを確認します。
+ 証明書の復号で問題が発生した場合は、MATCH\$1PASSWORD 環境変数で正しいパスフレーズを設定してください。
+ コード署名の問題については、Apple 開発者アカウントに必要な証明書とプロファイルがあり、Xcode プロジェクトのバンドル識別子がプロビジョニングプロファイルのものと一致していることを確認します。

## セキュリティに関する考慮事項
<a name="sample-fastlane-considerations"></a>

このチュートリアルのセキュリティに関する考慮事項を次に示します。
+ 保管データ暗号化など、適切なセキュリティ設定が S3 バケットにあることを確認します。特に、バケットにパブリックアクセスがないことを確認し、アクセスが必要な CodeBuild とシステムのみにアクセスを制限します。
+ MATCH\$1PASSWORD や FASTLANE\$1SESSION などの機密情報を保存 AWS Secrets Manager するために を使用することを検討してください。

このサンプルでは、証明書ストレージに Amazon S3 を使用して CodeBuild の Fastlane で iOS コード署名をセットアップします。場合によっては、具体的なプロジェクト要件と CodeBuild 環境に応じて、いくつかのステップを調整する必要があります。このアプローチでは、 AWS サービスを活用して、 AWS エコシステム内のセキュリティと統合を強化します。

# チュートリアル: 証明書ストレージに GitHub を使用した CodeBuild での Fastlane による Apple コード署名
<a name="sample-fastlane-github"></a>

[fastlane](https://docs.fastlane.tools/) は、iOS および Android アプリのベータデプロイとリリースを自動化する際によく使用されているオープンソース自動化ツールです。スクリーンショットの生成、コード署名の処理、アプリケーションのリリースなど、面倒なタスクがすべて処理されます。

このサンプルでは、証明書とプロビジョニングプロファイルのストレージとして GitHub を使用し、Mac フリートで実行されている CodeBuild プロジェクトで Fastlane を使用して Apple コード署名をセットアップする方法を示します。

## 前提条件
<a name="sample-fastlane-github-prerequisites"></a>

このチュートリアルを完了するには、まず以下をセットアップする必要があります。
+  AWS アカウント
+ [Apple 開発者アカウント](https://developer.apple.com/)
+ 証明書を保存するプライベート GitHub リポジトリ
+ プロジェクトにインストールされた fastlane - fastlane のインストールに関する[ガイド](https://docs.fastlane.tools/getting-started/ios/setup/)

## ステップ 1: ローカルマシンで GitHub を使用して Fastlane Match を設定する
<a name="sample-fastlane-github-certificates"></a>

[Fastlane Match](https://docs.fastlane.tools/actions/match/) は [Fastlane ツール](https://fastlane.tools/)の 1 つであり、ローカル開発環境と CodeBuild の両方でコード署名をシームレスに設定できます。Fastlane Match は、すべてのコード署名証明書とプロビジョニングプロファイルを Git リポジトリ/S3 バケット/Google クラウドストレージに保存し、必要に応じて必要な証明書とプロファイルをダウンロードおよびインストールします。

この例では、ストレージに Git リポジトリをセットアップして使用します。

****

1. プロジェクトで一致を初期化します。

   ```
   fastlane match init
   ```

1. プロンプトが表示されたら、ストレージモードとして GitHub を選択します。

1. GitHub を使用するよう `*Matchfile*` を更新します。

   ```
   git_url("https://github.com/your-username/your-certificate-repo.git")
   storage_mode("git")
   type("development") # The default type, can be: appstore, adhoc, enterprise or development
   ```

**注記**  
fastlane が正常に認証とクローン作成を行えるよう、必ず Git リポジトリの HTTPS URL を入力してください。そうしない場合、一致を使用しようとすると認証エラーが表示されることがあります。

## ステップ 2: Fastfile をセットアップする
<a name="sample-fastlane-github-fastfile"></a>

次のレーンで `Fastfile` を作成または更新します。

CodeBuild では、アプリをビルドして署名するたびに Fastlane Match を実行する必要があります。これを行うには、アプリを構築するレーンに `match` アクションを追加するのが最も簡単です。

```
default_platform(:ios)

platform :ios do
  before_all do
    setup_ci
  end
  
  desc "Build and sign the app"
  lane :build do
    match(type: "appstore", readonly: true)
    gym(
      scheme: "YourScheme",
      export_method: "app-store"
    )
  end
end
```

**注記**  
一致アクションが正しく機能するよう、`Fastfile` の `before_all ` セクションに `setup_ci` を追加してください。これにより、適切なアクセス許可を持つ一時的な Fastlane キーチェーンが使用されます。これを使用しないと、ビルドが失敗したり、一貫性のない結果が表示されたりすることがあります。

## ステップ 3: `fastlane match` コマンドを実行して、それぞれの証明書とプロファイルを生成する
<a name="sample-fastlane-github-certificates"></a>

指定されたタイプ (開発、アプリストア、アドホック、エンタープライズ) の fastlane match コマンドは、証明書とプロファイルを生成します (リモートストアにない場合)。証明書とプロファイルは、fastlane によって GitHub に保存されます。

```
bundle exec fastlane match appstore
```

コマンドの実行がインタラクティブになり、証明書を復号するためのパスフレーズを設定するよう fastlane により求められます。

## ステップ 4: プロジェクトのアプリケーションファイルを作成する
<a name="sample-fastlane-github-appfile"></a>

プロジェクトに応じてアプリケーションファイルを作成または追加します。

****

1. プロジェクトのビルド要件に基づいて、[Gymfile](http://docs.fastlane.tools/actions/gym/#gymfile)、[Appfile](http://docs.fastlane.tools/advanced/Appfile/)、[Snapfile](http://docs.fastlane.tools/actions/snapshot/#snapfile)、[Deliverfile](http://docs.fastlane.tools/actions/deliver/#editing-the-deliverfile) を作成または追加します。

1. 変更内容をリモートリポジトリにコミットします。

## ステップ 5: Secrets Manager で環境変数を作成する
<a name="sample-fastlane-github-secrets"></a>

fastlane セッション Cookie と一致するパスフレーズを保存するための 3 つのシークレットを作成します。Secrets Manager でシークレットを作成する方法の詳細については、「[AWS Secrets Manager シークレットを作成する](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html)」を参照してください。

****

1. 次のように fastlane セッション Cookie にアクセスします。

   1. シークレットキー - `FASTLANE_SESSION`

   1. シークレット値 - ローカルマシンで次のコマンドを実行して生成されたセッション Cookie。
**注記**  
この値は、ローカルファイル `~/.fastlane/spaceship/my_appleid_username/cookie` での認証後に使用できます。

      ```
      fastlane spaceauth -u <Apple_account>
      ```

1. Fastlane Match パスフレーズ - Fastlane Match が Git リポジトリに保存されている証明書とプロファイルを復号できるようにするには、Match セットアップのステップで設定した暗号化パスフレーズを CodeBuild プロジェクトの環境変数に追加する必要があります。

   1. シークレットキー - `MATCH_PASSWORD`

   1. シークレット値 - `<match passphrase to decrypt certificates>`。パスフレーズは、ステップ 3 で証明書を生成するときに設定されます。

1. Fastlane `MATCH_GIT_BASIC_AUTHORIZATION` - *match* の基本認可を設定します。

   1. シークレットキー: 

      `MATCH_GIT_BASIC_AUTHORIZATION`

   1. シークレット値 - 値は、ユーザー名と個人用アクセストークン (PAT) の base64 でエンコードされた文字列を `username:password` 形式で指定する必要があります。次のコマンドを使用して生成できます。

      ```
      echo -n your_github_username:your_personal_access_token | base64
      ```

      GitHub コンソールの **[Your Proﬁle] > [Settings] > [Developers Settings] > [Personal Access Token]** で PAT を生成できます。詳細については、ガイド ([https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens)) を参照してください。

**注記**  
Secrets Manager で上記のシークレットを作成するときは、必ずシークレット名にプレフィックス `/CodeBuild/` を付けてください。

## ステップ 6: コンピューティングフリートを作成する
<a name="sample-fastlane-github-fleet"></a>

プロジェクトのコンピューティングフリートを作成します。

****

1. コンソールで CodeBuild に移動し、新しいコンピューティングフリートを作成します。

1. オペレーティングシステムとして `macOS` を選択し、適切なコンピューティングタイプとイメージを選択します。

## ステップ 7: CodeBuild でプロジェクトを作成する
<a name="sample-fastlane-github-project"></a>

CodeBuild でプロジェクトを作成します。

****

1. [https://console.aws.amazon.com/codesuite/codebuild/home](https://console.aws.amazon.com/codesuite/codebuild/home) で AWS CodeBuild コンソールを開きます。

1. ビルドプロジェクトを作成します。詳細については、「[ビルドプロジェクトの作成 (コンソール)](create-project.md#create-project-console)」および「[ビルドの実行 (コンソール)](run-build-console.md)」を参照してください。

1. ソースプロバイダー (GitHub、CodeCommit など) をセットアップします。これは、証明書リポジトリではなく iOS プロジェクトソースリポジトリです。

1.  [**環境**] で以下の操作を行います。
   + [**リザーブドキャパシティ**] を選択します。
   + [**フリート**] で、上記で作成したフリートを選択します。
   + CodeBuild で自動作成するサービスロールの名前を指定します。
   + 以下の環境変数を指定します。
     + 名前: `MATCH_PASSWORD`、値: *<secrets arn>*、タイプ: Secrets Manager (MATCH\$1PASSWORD のステップ 5 で作成されたシークレット ARN)
     + 名前: `FASTLANE_SESSION`、値: *<secrets arn>*、タイプ: Secrets Manager (FASTLANE\$1SESSION のステップ 5 で作成されたシークレット ARN)
     + 名前: `MATCH_GIT_BASIC_AUTHORIZATION`、値: *<secrets ARN>*、タイプ: Secrets Manager のシークレット ARN (`MATCH_GIT_BASIC_AUTHORIZATION` のステップ 5 で作成)

1. [**Buildspec**] で、以下を追加します。

   ```
   version: 0.2
   
   phases:
     install:
       commands:
         - gem install bundler
         - bundle install
     build:
       commands:
         - echo "Building and signing the app..."
         - bundle exec fastlane build
     post_build:
       commands:
         - echo "Build completed on date"
   
   artifacts:
     files:
       - '*/.ipa'
     name: app-$(date +%Y-%m-%d)
   ```

## ステップ 8: ビルドを実行する
<a name="sample-fastlane-github-run"></a>

ビルドを実行します。CodeBuild でビルドステータスとログを確認できます。

ジョブが完了すると、ジョブのログを表示できるようになります。

## トラブルシューティング
<a name="sample-fastlane-github-troubleshooting"></a>
+ GitHub リポジトリにアクセスする際に問題が発生した場合は、個人用アクセストークンと MATCH\$1GIT\$1BASIC\$1AUTHORIZATION 環境変数を再確認してください。
+ 証明書の復号で問題が発生した場合は、MATCH\$1PASSWORD 環境変数で正しいパスフレーズを設定してください。
+ コード署名の問題については、Apple 開発者アカウントに必要な証明書とプロファイルがあり、Xcode プロジェクトのバンドル識別子がプロビジョニングプロファイルのものと一致していることを確認します。

## セキュリティに関する考慮事項
<a name="sample-fastlane-github-considerations"></a>

このチュートリアルのセキュリティに関する考慮事項を次に示します。
+ 証明書の GitHub リポジトリを秘密に保ち、定期的にアクセスを監査します。
+ MATCH\$1PASSWORD や FASTLANE\$1SESSION などの機密情報を保存 AWS Secrets Manager するために を使用することを検討してください。

このサンプルでは、証明書ストレージに GitHub を使用して CodeBuild の Fastlane で iOS コード署名をセットアップします。場合によっては、具体的なプロジェクト要件と CodeBuild 環境に応じて、いくつかのステップを調整する必要があります。このアプローチでは、 AWS サービスを活用して、 AWS エコシステム内のセキュリティと統合を強化します。