Cookie の設定を選択する

当社は、当社のサイトおよびサービスを提供するために必要な必須 Cookie および類似のツールを使用しています。当社は、パフォーマンス Cookie を使用して匿名の統計情報を収集することで、お客様が当社のサイトをどのように利用しているかを把握し、改善に役立てています。必須 Cookie は無効化できませんが、[カスタマイズ] または [拒否] をクリックしてパフォーマンス Cookie を拒否することはできます。

お客様が同意した場合、AWS および承認された第三者は、Cookie を使用して便利なサイト機能を提供したり、お客様の選択を記憶したり、関連する広告を含む関連コンテンツを表示したりします。すべての必須ではない Cookie を受け入れるか拒否するには、[受け入れる] または [拒否] をクリックしてください。より詳細な選択を行うには、[カスタマイズ] をクリックしてください。

チュートリアル: CodeBuild がホストする GitHub Actions ランナーを設定

フォーカスモード
チュートリアル: CodeBuild がホストする GitHub Actions ランナーを設定 - AWS CodeBuild

このチュートリアルでは、CodeBuild プロジェクトを設定して GitHub Actions ジョブを実行する方法について説明します。CodeBuild で GitHub Actions を使用する方法の詳細については、「チュートリアル: CodeBuild がホストする GitHub Actions ランナーを設定」を参照してください。

このチュートリアルを完了するには、まず以下を行う必要があります。

  • 個人用アクセストークン、Secrets Manager シークレット、OAuth アプリ、または GitHub アプリに接続します。OAuth アプリを使用して接続する場合は、CodeBuild コンソールを使用して接続する必要があります。個人用アクセストークンを作成する場合は、CodeBuild コンソールを使用するか、ImportSourceCredentials API を使用できます。詳細な手順については、「CodeBuild の GitHub および GitHub Enterprise Server アクセス」を参照してください。

  • CodeBuild を GitHub アカウントに接続します。これを行うには、次のいずれかで実行できます。

    • コンソールで GitHub をソースプロバイダーとして追加できます。個人用アクセストークン、Secrets Manager シークレット、OAuth アプリ、または GitHub アプリのいずれかを使用して接続できます。手順については、CodeBuild の GitHub および GitHub Enterprise Server アクセス を参照してください。

    • GitHub 認証情報は、ImportSourceCredentials API 経由でインポートできます。これは、個人用アクセストークンでのみ実行できます。OAuth アプリを使用して接続する場合は、代わりにコンソールを使用して接続する必要があります。手順については、 GitHub をアクセストークンで接続する(CLI) を参照してください。

    注記

    これを行う必要があるのは、アカウントで GitHub に接続していない場合のみです。

ステップ 1: ウェブフックを使用して CodeBuild プロジェクトを作成

このステップでは、ウェブフックを使用して CodeBuild プロジェクトを作成し、GitHub コンソールで確認します。ソースプロバイダとして GitHub Enterprise を選択することもできます。GitHub Enterprise 内でウェブフックを作成する方法の詳細については、「GitHub 手動ウェブフック」を参照してください。

ウェブフックを使用して CodeBuild プロジェクトを作成するには
  1. AWS CodeBuild コンソール (https://console.aws.amazon.com/codesuite/codebuild/home) を開きます。

  2. ビルドプロジェクトを作成します。詳細については、「ビルドプロジェクトの作成 (コンソール)」および「ビルドの実行 (コンソール)」を参照してください。

    • [Source (ソース)] で、次のようにします。

      • [ソースプロバイダー] で [GitHub] を選択します。

      • [リポジトリ] では、[GitHub アカウントのリポジトリ] を選択します。

      • [リポジトリの URL] に、「https://github.com/user-name/repository-name」と入力します。

      注記

      デフォルトでは、プロジェクトは単一リポジトリの WORKFLOW_JOB_QUEUED イベントのみを受信します。組織またはエンタープライズ内のすべてのリポジトリのイベントを受信する場合は、「GitHub グローバルおよび組織のウェブフック」を参照してください。

    • [プライマリソースのウェブフックイベント] の場合:

      • [ウェブフック - オプション] で、[コードの変更がこのレポジトリにプッシュされるたびに再ビルド] を選択します。

      • [イベントタイプ] で、[WORKFLOW_JOB_QUEUED] を選択します。これを有効にすると、ビルドは [GitHub Actions ワークフロージョブ] イベントによってのみトリガーされます。

        注記

        CodeBuild は、ウェブフックに [WORKFLOW_JOB_QUEUED] イベントフィルタを含むフィルタグループがある場合にのみ、GitHub Actions ワークフロージョブイベントを処理します。

        [GitHub Actions ワークフロージョブ] イベントによってのみトリガーされるビルド設定。
    • [環境] で以下の操作を行います。

      • サポートされている [環境イメージ][コンピューティング] を選択します。GitHub Actions ワークフロー YAML のラベルを使用して、イメージとインスタンスの設定を上書きするオプションがあることに注意してください。詳細については、「ステップ 2: GitHub Actions ワークフロー YAML を更新」を参照してください。

    • [Buildspec (Buildspec)] で、次のようにします。

      • buildspec-override:true がラベルとして追加されない限り、buildspec は無視されることに注意してください。代わりに、CodeBuild は、セルフホスト型ランナーを設定するコマンドを使用するように上書きします。

  3. デフォルト値のまま続行し、[ビルドプロジェクトを作成する] を選択します。

  4. https://github.com/user-name/repository-name/settings/hooks で GitHub コンソールを開き、ウェブフックが作成され、[ワークフロージョブ] イベントの配信が有効になっていることを確認します。

ステップ 2: GitHub Actions ワークフロー YAML を更新

このステップでは、GitHub で GitHub Actions ワークフロー YAML ファイルを更新してビルド環境を設定し、CodeBuild で GitHub Actions セルフホスト型ランナーを使用します。詳細については、「Using labels with self-hosted runners」および「CodeBuild がホストする GitHub Actions ランナーでサポートされているラベルの上書き」を参照してください。

GitHub Actions ワークフロー YAML を更新

GitHub に移動し、GitHub Actions ワークフロー YAML の runs-on の設定を更新して、ビルド環境を設定します。これを行うには、次のいずれかで実行できます。

  • プロジェクト名と実行 ID を指定できます。その場合、ビルドはコンピューティング、イメージ、イメージバージョン、インスタンスサイズに既存のプロジェクト設定を使用します。GitHub Actions ジョブの AWS 関連の設定を特定の CodeBuild プロジェクトにリンクするには、プロジェクト名が必要です。YAML にプロジェクト名を含めることで、CodeBuild は正しいプロジェクト設定でジョブを呼び出すことができます。実行 ID を指定することで、CodeBuild はビルドを特定のワークフロー実行にマッピングし、ワークフロー実行がキャンセルされたときにビルドを停止します。詳細については、「github context」を参照してください。

    runs-on: codebuild-<project-name>-${{ github.run_id }}-${{ github.run_attempt }}
    注記

    <project-name> が、前のステップで作成したプロジェクトの名前と一致していることを確認してください。一致しない場合、CodeBuild はウェブフックを処理せず、GitHub Actions ワークフローがハングする可能性があります。

    次に、GitHub Actions ワークフロー YAML の例を示します。

    name: Hello World on: [push] jobs: Hello-World-Job: runs-on: - codebuild-myProject-${{ github.run_id }}-${{ github.run_attempt }} steps: - run: echo "Hello World!"
  • ラベル内のイメージとコンピューティングタイプを上書きすることもできます。使用可能なイメージのリストについては、「CodeBuild がホストする GitHub Actions ランナーでサポートされているコンピューティングイメージ」を参照してください。ラベル内のコンピューティングタイプとイメージは、プロジェクトの環境設定を上書きします。CodeBuild EC2 または Lambda コンピューティングビルドの環境設定を上書きするには、次の構文を使用します。

    runs-on: - codebuild-<project-name>-${{ github.run_id }}-${{ github.run_attempt }} - image:<environment-type>-<image-identifier> - instance-size:<instance-size>

    次に、GitHub Actions ワークフロー YAML の例を示します。

    name: Hello World on: [push] jobs: Hello-World-Job: runs-on: - codebuild-myProject-${{ github.run_id }}-${{ github.run_attempt }} - image:arm-3.0 - instance-size:small steps: - run: echo "Hello World!"
  • ラベル内のビルドに使用するフリートを上書きできます。これにより、プロジェクトで設定されたフリート設定が上書きされ、指定されたフリートが使用されます。詳細については、「リザーブドキャパシティキャパシティフリートでビルドを実行」を参照してください。Amazon EC2 コンピューティングビルドのフリート設定を上書きするには、次の構文を使用します。

    runs-on: - codebuild-<project-name>-${{ github.run_id }}-${{ github.run_attempt }} - fleet:<fleet-name>

    ビルドに使用されるフリートとイメージの両方を上書きするには、次の構文を使用します。

    runs-on: - codebuild-<project-name>-${{ github.run_id }}-${{ github.run_attempt }} - fleet:<fleet-name> - image:<environment-type>-<image-identifier>

    次に、GitHub Actions ワークフロー YAML の例を示します。

    name: Hello World on: [push] jobs: Hello-World-Job: runs-on: - codebuild-myProject-${{ github.run_id }}-${{ github.run_attempt }} - image:arm-3.0 - instance-size:small steps: - run: echo "Hello World!"
  • カスタムイメージで GitHub Actions ジョブを実行するには、CodeBuild プロジェクトでカスタムイメージを設定し、イメージ上書きラベルを指定しないようにします。CodeBuild は、イメージ上書きラベルが指定されていない場合、プロジェクトで設定されたイメージを使用します。

  • 必要に応じて、CodeBuild がサポートするラベル以外のラベルを提供できます。これらのラベルは、ビルドの属性を上書きする目的で無視されますが、ウェブフックリクエストは失敗しません。例えば、testLabel をラベルとして追加しても、ビルドの実行は妨げられません。

注記

GitHub がホストするランナーが提供する依存関係が CodeBuild 環境で利用できない場合は、ワークフロー実行時に GitHub アクションを使用して依存関係をインストールできます。例えば、setup-python アクションを使用して、ビルド環境に Python をインストールできます。

INSTALL、PRE_BUILD、POST_BUILD フェーズで buildspec コマンドを実行

デフォルトでは、CodeBuild はセルフホスト型 GitHub Actions ビルドを実行するときに buildspec コマンドを無視します。ビルド中に buildspec コマンドを実行するには、ラベルにサフィックスとして buildspec-override:true を追加できます。

runs-on: - codebuild-<project-name>-${{ github.run_id }}-${{ github.run_attempt }} - buildspec-override:true

このコマンドを使用すると、CodeBuild はコンテナのプライマリソースフォルダに actions-runner というフォルダを作成します。GitHub Actions ランナーが BUILD フェーズ中に起動すると、ランナーはその actions-runner ディレクトリで実行されます。

セルフホスト型 GitHub Actions ビルドで buildspec の上書きを使用する場合、いくつかの制限があります。

  • CodeBuild は、セルフホスト型ランナーが BUILD フェーズで実行されるため、BUILD フェーズ中は buildspec コマンドを実行しません。

  • CodeBuild は、DOWNLOAD_SOURCE フェーズ中はプライマリソースもセカンダリソースもダウンロードしません。buildspec ファイルが設定されている場合、プロジェクトのプライマリソースからそのファイルのみがダウンロードされます。

  • ビルドコマンドが PRE_BUILD または INSTALL フェーズで失敗した場合、CodeBuild はセルフホスト型ランナーを起動せず、GitHub Actions ワークフロージョブは手動でキャンセルする必要があります。

  • CodeBuild は、DOWNLOAD_SOURCE フェーズ中にランナートークンを取得します。有効期限は 1 時間です。PRE_BUILD または INSTALL フェーズが 1 時間を超えると、GitHub セルフホスト型ランナーが起動する前にランナートークンの有効期限が切れる可能性があります。

ステップ 3: 結果を確認

GitHub Actions ワークフローが実行されるたびに、CodeBuild はウェブフックを介してワークフロージョブイベントを受信します。ワークフロー内のジョブごとに、CodeBuild はビルドを開始して一時的な GitHub Actions ランナーを実行します。ランナーには、単一のワークフロージョブを実行する役割があります。ジョブが完了すると、ランナーおよび関連付けられたビルドプロセスは即座に終了します。

ワークフロージョブログを表示するには、GitHub のリポジトリに移動し、[アクション] を選択して、目的のワークフローを選択し、ログを確認する特定の [ジョブ] を選択します。

ジョブが CodeBuild のセルフホスト型ランナーによって取得されるのを待っている間に、リクエストされたラベルをログで確認できます。

ジョブのログの読み込み。

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

ジョブのログ。

GitHub Actions ウェブフックイベントをフィルタリング (AWS CloudFormation)

AWS CloudFormation テンプレートの次の YAML 形式の部分は、true と評価されたときにビルドをトリガーするフィルタグループを作成します。次のフィルタグループは、正規表現 \[CI-CodeBuild\] に一致するワークフロー名を持つ GitHub Actions ワークフロージョブリクエストを指定します。

CodeBuildProject: Type: AWS::CodeBuild::Project Properties: Name: MyProject ServiceRole: service-role Artifacts: Type: NO_ARTIFACTS Environment: Type: LINUX_CONTAINER ComputeType: BUILD_GENERAL1_SMALL Image: aws/codebuild/standard:5.0 Source: Type: GITHUB Location: CODEBUILD_DEFAULT_WEBHOOK_SOURCE_LOCATION Triggers: Webhook: true ScopeConfiguration: Name: organization-name FilterGroups: - - Type: EVENT Pattern: WORKFLOW_JOB_QUEUED - Type: WORKFLOW_NAME Pattern: \[CI-CodeBuild\]

GitHub Actions ウェブフックイベントをフィルタリング (AWS CDK)

次の AWS CDK テンプレートは、true と評価されたときにビルドをトリガーするフィルタグループを作成します。次のフィルタグループは、GitHub Actions ワークフロージョブリクエストを指定します。

import { aws_codebuild as codebuild } from 'aws-cdk-lib'; import {EventAction, FilterGroup} from "aws-cdk-lib/aws-codebuild"; const source = codebuild.Source.gitHub({ owner: 'owner', repo: 'repo', webhook: true, webhookFilters: [FilterGroup.inEventOf(EventAction.WORKFLOW_JOB_QUEUED)], })

GitHub Actions ウェブフックイベントをフィルタリング (Terraform)

次の Terraform テンプレートは、true と評価されたときにビルドをトリガーするフィルタグループを作成します。次のフィルタグループは、GitHub Actions ワークフロージョブリクエストを指定します。

resource "aws_codebuild_webhook" "example" { project_name = aws_codebuild_project.example.name build_type = "BUILD" filter_group { filter { type = "EVENT" pattern = "WORKFLOW_JOB_QUEUED" } } }
プライバシーサイト規約Cookie の設定
© 2025, Amazon Web Services, Inc. or its affiliates.All rights reserved.