でセルフホスト GitHub アクションランナーを設定する AWS CodeBuild - AWS CodeBuild

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

でセルフホスト GitHub アクションランナーを設定する AWS CodeBuild

Actions GitHub ワークフロージョブを処理するコンテナにセルフホスト型 GitHub Actions ランナーを設定する CodeBuild ようにプロジェクトを設定できます。これを行うには、 CodeBuild プロジェクトを使用してウェブフックを設定し、 CodeBuild マシンでホストされているセルフホストランナーを使用するように GitHub アクションワークフロー YAML を更新します。詳細については、「セルフホストランナーについて」を参照してください。

GitHub Actions ジョブを実行するように CodeBuild プロジェクトを設定する大まかな手順は次のとおりです。

  1. まだ行っていない場合は、個人用アクセストークンを作成するか、OAuth アプリに接続してプロジェクトを に接続します GitHub。

  2. CodeBuild コンソールに移動し、ウェブフックを使用して CodeBuild プロジェクトを作成し、ウェブフックフィルタを設定します。

  3. で GitHub アクションワークフロー YAML を更新 GitHub して、ビルド環境を設定します。

詳細な手順については、「」を参照してくださいチュートリアル: CodeBuild セルフホスト GitHub アクションランナーを設定する

この機能により、 GitHub アクションワークフロージョブは とネイティブに統合できます。これにより AWS、IAM、 AWS Secrets Manager 統合 AWS CloudTrail、Amazon VPC などの機能を通じてセキュリティと利便性が得られます。ARM ベースのインスタンスを含む最新のインスタンスタイプにアクセスできます。

チュートリアル: CodeBuild セルフホスト GitHub アクションランナーを設定する

このチュートリアルでは、 GitHub Actions ジョブを実行するように CodeBuild プロジェクトを設定する方法を示します。

前提条件

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

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

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

    注記

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

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

このステップでは、ウェブフックを使用して CodeBuild プロジェクトを作成し、 GitHub コンソールで確認します。

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

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

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

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

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

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

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

      • Webhook - オプションの で、コード変更がこのリポジトリにプッシュされるたびに再構築を選択します。

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

        注記

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

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

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

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

      • Buildspec は無視されることに注意してください。代わりに、セルフホストランナーをセットアップするコマンドを使用するように CodeBuild オーバーライドします。このプロジェクトの主な責任は、 でセルフホストランナーをセットアップ CodeBuild して GitHub Actions ワークフロージョブを実行することです。

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

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

ステップ 2: GitHub アクションワークフロー YAML を更新する

このステップでは、 の GitHub アクションワークフロー YAML ファイルを更新GitHubしてビルド環境を設定し、 の GitHub アクションセルフホストランナーを使用します CodeBuild。詳細については、「セルフホストランナーでのラベルの使用」を参照してください。

GitHub アクションワークフロー YAML を更新する

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

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

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

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

    GitHub アクションワークフロー 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!"
  • ラベル内のイメージとコンピューティングタイプを上書きすることもできます。これにより、プロジェクトの環境設定が上書きされます。Amazon EC2 コンピューティングビルドの環境設定を上書きするには、次の構文を使用します。

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

    Lambda コンピューティングビルドの環境設定を上書きするには、次の構文を使用します。

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

    GitHub アクションワークフロー YAML の例を次に示します。

    name: Hello World on: [push] jobs: Hello-World-Job: runs-on: codebuild-myProject-${{ github.run_id }}-${{ github.run_attempt }}-arm-3.0-small steps: - run: echo "Hello World!"
注記

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

サポートされているコンピューティングイメージ

ラベルでは、最初の 3 つの列の値を使用して Amazon EC2 環境設定を上書きできます。 は、次の Amazon EC2 コンピューティングイメージ CodeBuild を提供します。

イメージ イメージバージョン インスタンスサイズ プラットフォーム イメージ識別子 定義

linux

4.0

small

medium

large

xlarge

2xlarge

gpu_small

gpu_large

Amazon Linux 2 aws/codebuild/amazonlinux2-x86_64-standard:4.0 al2/standard/4.0

linux

5.0

Amazon Linux 2023 aws/codebuild/amazonlinux2-x86_64-standard:5.0 al2/standard/5.0

arm

2.0

small

large

Amazon Linux 2 aws/codebuild/amazonlinux2-aarch64-standard:2.0 al2/aarch64/standard/2.0

arm

3.0

Amazon Linux 2023 aws/codebuild/amazonlinux2-aarch64-standard:3.0 al2/aarch64/standard/3.0

ubuntu

5.0

small

medium

large

xlarge

2xlarge

gpu_small

gpu_large

Ubuntu 20.04 aws/codebuild/standard:5.0 ubuntu/standard/5.0

ubuntu

6.0

Ubuntu 22.04 aws/codebuild/standard:6.0 ubuntu/standard/6.0

ubuntu

7.0

Ubuntu 22.04 aws/codebuild/standard:7.0 ubuntu/standard/7.0

windows

1.0

medium

large

Windows Server Core 2019 aws/codebuild/windows-base:2019-1.0 該当なし

windows

2.0

Windows Server Core 2019 aws/codebuild/windows-base:2019-2.0 該当なし

windows

3.0

Windows Server Core 2019 aws/codebuild/windows-base:2019-3.0 該当なし

さらに、以下の値を使用して Lambda 環境設定を上書きできます。 CodeBuild Lambda コンピューティングの詳細については、「 の使用」を参照してくださいでの AWS Lambda コンピューティングの使用 AWS CodeBuild。 は、次の Lambda コンピューティングイメージ CodeBuild をサポートします。

環境タイプ ランタイムバージョン インスタンスサイズ

linux-lambda

dotnet6

go1.21

corretto11

corretto17

corretto21

nodejs18

nodejs20

python3.11

python3.12

ruby3.2

1GB

2GB

4GB

8GB

10GB

arm-lambda

詳細については、「ビルド環境のコンピューティングモードおよびタイプ」および「が提供する Docker イメージ CodeBuild」を参照してください。

ステップ 3: 結果を確認する

GitHub Actions ワークフローが実行されるたびに、 CodeBuild はウェブフックを介してワークフロージョブイベントを受信できます。ワークフロー内のジョブごとに、 はビルド CodeBuild を開始してエフェメラル GitHub Actions ランナーを実行します。ランナーは 1 つのワークフロージョブを実行します。ジョブが完了すると、ランナーと関連するビルドプロセスはすぐに終了します。

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

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

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

CodeBuild-hosted GitHub Actions ランナーについて

ラベルにイメージとインスタンスの上書きを含める必要があるのはどのような場合ですか?

Actions GitHub ワークフロージョブごとに異なるビルド環境を指定するために、イメージとインスタンスのオーバーライドをラベルに含めることができます。これは、複数の CodeBuild プロジェクトやウェブフックを作成することなく実行できます。例えば、ワークフロージョブにマトリックス を使用する必要がある場合などに便利です。

name: Hello World on: [push] jobs: Hello-World-Job: runs-on: codebuild-myProject-${{ github.run_id }}-${{ github.run_attempt }}-${{ matrix.os }} strategy: matrix: os: [arm-3.0-small, al2-5.0-large] steps: - run: echo "Hello World!"
注記

Actions GitHub コンテキストを含む複数のラベルruns-onがある場合は、引用符が必要になる場合があります。

この機能 AWS CloudFormation に を使用できますか?

はい。プロジェクトウェブフックの GitHub アクションワークフロージョブイベントフィルターを指定するフィルターグループを AWS CloudFormation テンプレートに含めることができます。

Triggers: Webhook: true FilterGroups: - - Type: EVENT Pattern: WORKFLOW_JOB_QUEUED

詳細については、「 GitHub ウェブフックイベントのフィルタリング (AWS CloudFormation)」を参照してください。

AWS CloudFormation テンプレートでのプロジェクト認証情報の設定に関するヘルプが必要な場合は、「 AWS CloudFormation ユーザーガイドAWS::CodeBuild::SourceCredential」の「」を参照してください。

CodeBuild-hosted GitHub Actions ランナーの使用をサポートするリージョン

CodeBuildホストされた GitHub Actions ランナーは、すべての CodeBuild リージョンでサポートされています。 CodeBuild が利用可能な の場所の詳細については AWS リージョン 、AWS 「リージョン別のサービス」を参照してください。

CodeBuild-hosted GitHub Actions ランナーの使用をサポートするプラットフォーム

CodeBuildホストされた GitHub Actions ランナーは、Amazon EC2 と AWS Lambda コンピューティングの両方でサポートされています。Amazon Linux 2、Amazon Linux 2023、Ubuntu、および Windows Server Core 2019 プラットフォームを使用できます。詳細については、「EC2 コンピューティングイメージ」および「Lambda コンピューティングイメージ」を参照してください。

トラブルシューティング: ウェブフックが機能していない場合のトラブルシューティング方法を教えてください。

問題: ウェブフックが機能していないか、ワークフロージョブが にまとめられています GitHub。

考えられる原因: Webhook ワークフロージョブイベントがビルドのトリガーに失敗している可能性があります。レスポンスログを確認して、レスポンスまたはエラーメッセージを表示します。

推奨される解決策: このエラーをデバッグするには、次の手順を使用します。

  1. で GitHub コンソールを開きhttps://github.com/user-name/repository-name/settings/hooks、リポジトリのウェブフック設定を表示します。このページには、リポジトリ用に作成されたウェブフックが表示されます。

  2. 編集を選択し、ウェブフックがワークフロージョブイベントの配信を有効にしていることを確認します。

  3. 「最近の配信」タブに移動し、対応するworkflow_job.queuedイベントを見つけて、イベントを展開します。

  4. ペイロードラベルフィールドを確認し、想定どおりに動作していることを確認します。

  5. 最後に、レスポンス タブを確認します。これには、 から返されるレスポンスまたはエラーメッセージが含まれているためです CodeBuild。