CodeBuild の GitHub Enterprise Server サンプル - AWS CodeBuild

CodeBuild の GitHub Enterprise Server サンプル

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

前提条件

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

    個人用アクセストークンを作成するときには、定義にリポジトリスコープを含めてください。

  2. 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 ファイルとして保存します。

  3. 証明書ファイルを S3 バケットにアップロードします。S3 バケットを作成する方法については、「S3 バケットを作成する方法」を参照してください。S3 バケットにオブジェクトをアップロードする方法については、「バケットにファイルとフォルダをアップロードする方法」を参照してください。

    注記

    このバケットは、ビルドと同じ AWS リージョン内にある必要があります。たとえば、米国東部 (オハイオ) リージョンでビルドを実行するように CodeBuild に指示している場合、バケットは米国東部 (オハイオ) リージョンにある必要があります。

GitHub Enterprise Server をソースリポジトリとするビルドプロジェクトを作成し、Webhook を有効にする (コンソール)

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

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

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

  4. [ソース] の [ソースプロバイダ] で、[GitHub Enterprise] を選択します。

    • [個人用アクセストークン] には、クリップボードにコピーしたトークンを貼り付け、[トークンの保存] を選択します。[リポジトリ URL] には、GitHub Enterprise Server リポジトリの URL を入力します。

      注記

      個人用アクセストークンは、一回のみ入力して保存することが必要となります。以降の AWS CodeBuild プロジェクトにはこのトークンが使用されます。

    • [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 を有効にする)] はテストのみに使用することが推奨されます。本番環境では使用しないでください。

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

    [Environment image (環境イメージ)] で、次のいずれかの操作を行います。

    • が管理する 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 repository] (Amazon ECR レポジトリ) および [Amazon ECR image] (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 とは」を参照してください。

  6. [Service role (サービスロール)] で、次のいずれかの操作を行います。

    • CodeBuild サービスロールがない場合は、[新しいサービスロール] を選択します。[Role name] に、新しいロールの名前を入力します。

    • CodeBuild サービスロールがある場合は、[Existing service role (既存のサービスロール)] を選択します。[Role ARN] で、サービスロールを選択します。

    注記

    コンソールでは、ビルドプロジェクトの作成時や更新時に CodeBuild サービスロールも作成できます。デフォルトでは、ロールはそのビルドプロジェクトでのみ使用できます。コンソールでは、このサービスロールを別のビルドプロジェクトと関連付けると、この別のビルドプロジェクトで使用できるようにロールが更新されます。サービスロールは最大 10 個のビルドプロジェクトで使用できます。

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

    CodeBuild を VPC と連携させたい場合:

    • [VPC] で、CodeBuild が使用する VPC ID を選択します。

    • [VPC Subnets (サブネット)] で、CodeBuild が使用するリソースを含むサブネットを選択します。

    • [VPC Security groups (VPC セキュリティグループ)] で、CodeBuild が VPC 内のリソースへのアクセスを許可するために使用するセキュリティグループを選択します。

    詳細については、「Amazon Virtual Private Cloud での AWS CodeBuild の使用」を参照してください。

  8. [Buildspec] で、次のいずれかを行います。

    • [Use a buildspec file] (ビルド仕様ファイルの使用) を選択して、ソースコードのルートディレクトリの buildspec.yml を使用します。

    • [ビルドコマンドの挿入] を選択して、コンソールを使用してビルドコマンドを挿入します。

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

  9. [アーティファクト] の [タイプ] で、次のいずれかの操作を行います。

    • ビルド出力アーティファクトを作成しない場合は、[No artifacts (アーティファクトなし)] を選択します。

    • ビルド出力を S3 バケットに保存する場合は、[Amazon S3] を選択して次のいずれかの操作を行います。

      • ビルド出力 ZIP ファイルまたはフォルダにプロジェクト名を使用する場合は、[Name (名前)] を空白のままにします。それ以外の場合は、名前を入力します。デフォルトでは、アーティファクト名はプロジェクト名です。別の名前を使用する場合は、アーティファクト名ボックスに名前を入力します。ZIP ファイルを出力する場合は、zip 拡張子を含めます。

      • [Bucket name (バケット名)] で、出力バケットの名前を選択します。

      • この手順の前の方で [ビルドコマンドの挿入] を選択した場合は、[出力ファイル] に、ビルド出力 ZIP ファイルまたはフォルダに格納するビルドのファイルの場所を入力します。複数の場所の場合は、各場所をコンマで区切ります (例: appspec.yml, target/my-app.jar)。詳細については、「files」で buildspec の構文 の説明を参照してください。

  10. [キャッシュタイプ] で、以下のいずれかを選択します。

    • キャッシュを使用しない場合は、[No cache] を選択します。

    • Amazon S3 キャッシュを使用するには、[Amazon S3] を選択して次の操作を行います。

      • [バケット] では、キャッシュが保存される S3 バケットの名前を選択します。

      • (オプション) [Cache path prefix (キャッシュパスのプレフィックス)] に、Amazon S3 パスのプレフィックスを入力します。[キャッシュパスのプレフィックス] 値はディレクトリ名に似ています。これにより、バケット内の同じディレクトリにキャッシュを保存できます。

        重要

        パスのプレフィックスの末尾にスラッシュ (/) を付加しないでください。

    • ローカルキャッシュを使用する場合は、[ローカル] を選択し、ローカルキャッシュモードを 1 つ以上選択します。

      注記

      Docker レイヤーキャッシュモードは Linux でのみ利用可能です。このモードを選択する場合、プロジェクトは権限モードで実行する必要があります。

    キャッシュを使用すると、再利用可能なビルド環境がキャッシュに保存され、ビルド全体で使用されるため、かなりのビルド時間が節約されます。ビルド仕様ファイルのキャッシュの指定に関する詳細については、「buildspec の構文」を参照してください。キャッシングの詳細については、「AWS CodeBuild でのキャッシュのビルド」を参照してください。

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

  12. [ソース] でウェブフックを有効にすると、[ペイロードの URL] の値および [シークレット] を示した [ウェブフックの作成] ダイアログボックスが表示されます。

    重要

    [ウェブフックの作成] ダイアログボックスが表示されるのは 1 回だけです。ペイロード URL とシークレットキーをコピーします。これらは、GitHub Enterprise Server に Webhook を追加するときに必要となります。

    ペイロード URL およびシークレットキーの作成が必要な場合には、まず GitHub Enterprise Server リポジトリから Webhook を削除してください。CodeBuild プロジェクトで [Webhook] チェックボックスをオフにし、[保存] を選択します。次に、[Webhook] チェックボックスをオンにして CodeBuild プロジェクトを作成または更新できます。[ウェブフックの作成] ダイアログボックスが再度表示されます。

  13. GitHub Enterprise Server で、CodeBuild プロジェクトが保存されているリポジトリを選択します。

  14. [設定]、[Hooks & services]、[Add webhook] の順に選択します。

  15. ペイロード URL とシークレットキーを入力し、その他のフィールドにはデフォルト値を選択して、[Add webhook] を選択します。

  16. CodeBuild プロジェクトに戻ります。[ウェブフックの作成] ダイアログボックスを閉じ、[ビルドの開始] を選択します。