

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

# 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 (ビルドの開始)**] を選択します。