翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
でセルフホスト GitHub アクションランナーを設定する AWS CodeBuild
Actions GitHub ワークフロージョブを処理するコンテナにセルフホスト型 GitHub Actions ランナーを設定する CodeBuild ようにプロジェクトを設定できます。これを行うには、 CodeBuild プロジェクトを使用してウェブフックを設定し、 CodeBuild マシンでホストされているセルフホストランナーを使用するように GitHub アクションワークフロー YAML を更新します。詳細については、「セルフホストランナーについて
GitHub Actions ジョブを実行するように CodeBuild プロジェクトを設定する大まかな手順は次のとおりです。
-
まだ行っていない場合は、個人用アクセストークンを作成するか、OAuth アプリに接続してプロジェクトを に接続します GitHub。
-
CodeBuild コンソールに移動し、ウェブフックを使用して CodeBuild プロジェクトを作成し、ウェブフックフィルタを設定します。
-
で 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 として を追加できます。OAuth アプリまたは個人用アクセストークンを使用して接続できます。手順については、「アクセストークン GitHub で接続する (コンソール) 」を参照してください。
-
API を介して GitHub 認証情報をインポートできますImportSourceCredentials 。これは、個人用のアクセストークンでのみ実行できます。OAuth アプリを使用して接続する場合は、代わりにコンソールを使用して接続する必要があります。手順については、「 アクセストークン GitHub で接続する (CLI) 」を参照してください。
注記
これは、 GitHub アカウントの に接続していない場合にのみ行う必要があります。
-
ステップ 1: ウェブフックを使用して CodeBuild プロジェクトを作成する
このステップでは、ウェブフックを使用して CodeBuild プロジェクトを作成し、 GitHub コンソールで確認します。
ウェブフックを使用して CodeBuild プロジェクトを作成するには
-
https://console.aws.amazon.com/codesuite/codebuild/home
で AWS CodeBuild コンソールを開きます。 -
ビルドプロジェクトを作成します。詳細については、「ビルドプロジェクトの作成 (コンソール)」および「ビルドの実行 (コンソール)」を参照してください。
-
[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 ワークフロージョブを実行することです。
-
-
-
デフォルト値を続行し、ビルドプロジェクトの作成を選択します。
-
で GitHub コンソールを開き
https://github.com/
、ウェブフックが作成され、ワークフロージョブイベントの配信が有効になっていることを確認します。user-name
/repository-name
/settings/hooks
ステップ 2: GitHub アクションワークフロー YAML を更新する
このステップでは、 の GitHub アクションワークフロー YAML ファイルを更新GitHub
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
サポートされているコンピューティングイメージ
ラベルでは、最初の 3 つの列の値を使用して Amazon EC2 環境設定を上書きできます。 は、次の Amazon EC2 コンピューティングイメージ CodeBuild を提供します。
イメージ | イメージバージョン | インスタンスサイズ | プラットフォーム | イメージ識別子 | 定義 |
---|---|---|---|---|---|
|
|
|
Amazon Linux 2 | aws/codebuild/amazonlinux2-x86_64-standard:4.0 |
al2/standard/4.0 |
|
|
Amazon Linux 2023 | aws/codebuild/amazonlinux2-x86_64-standard:5.0 |
al2/standard/5.0 |
|
|
|
|
Amazon Linux 2 | aws/codebuild/amazonlinux2-aarch64-standard:2.0 |
al2/aarch64/standard/2.0 |
|
|
Amazon Linux 2023 | aws/codebuild/amazonlinux2-aarch64-standard:3.0 |
al2/aarch64/standard/3.0 |
|
|
|
|
Ubuntu 20.04 | aws/codebuild/standard:5.0 |
ubuntu/standard/5.0 |
|
|
Ubuntu 22.04 | aws/codebuild/standard:6.0 |
ubuntu/standard/6.0 |
|
|
|
Ubuntu 22.04 | aws/codebuild/standard:7.0 |
ubuntu/standard/7.0 |
|
|
|
|
Windows Server Core 2019 | aws/codebuild/windows-base:2019-1.0 |
該当なし |
|
|
Windows Server Core 2019 | aws/codebuild/windows-base:2019-2.0 |
該当なし | |
|
|
Windows Server Core 2019 | aws/codebuild/windows-base:2019-3.0 |
該当なし |
さらに、以下の値を使用して Lambda 環境設定を上書きできます。 CodeBuild Lambda コンピューティングの詳細については、「 の使用」を参照してくださいでの AWS Lambda コンピューティングの使用 AWS CodeBuild。 は、次の Lambda コンピューティングイメージ CodeBuild をサポートします。
環境タイプ | ランタイムバージョン | インスタンスサイズ |
---|---|---|
|
|
|
|
詳細については、「ビルド環境のコンピューティングモードおよびタイプ」および「が提供する Docker イメージ CodeBuild」を参照してください。
ステップ 3: 結果を確認する
GitHub Actions ワークフローが実行されるたびに、 CodeBuild はウェブフックを介してワークフロージョブイベントを受信できます。ワークフロー内のジョブごとに、 はビルド CodeBuild を開始してエフェメラル GitHub Actions ランナーを実行します。ランナーは 1 つのワークフロージョブを実行します。ジョブが完了すると、ランナーと関連するビルドプロセスはすぐに終了します。
ワークフロージョブログを表示するには、 でリポジトリに移動し GitHub、アクション を選択し、目的のワークフローを選択して、ログを確認する特定のジョブを選択します。
ジョブが のセルフホストランナーによって取得されるのを待っている間に、ログでリクエストされたラベルを確認できます CodeBuild。
![](images/hello-world-loading.png)
ジョブが完了すると、ジョブのログを表示できます。
![](images/hello-world-log.png)
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 ワークフロージョブイベントがビルドのトリガーに失敗している可能性があります。レスポンスログを確認して、レスポンスまたはエラーメッセージを表示します。
推奨される解決策: このエラーをデバッグするには、次の手順を使用します。
-
で GitHub コンソールを開き
https://github.com/
、リポジトリのウェブフック設定を表示します。このページには、リポジトリ用に作成されたウェブフックが表示されます。user-name
/repository-name
/settings/hooks -
編集を選択し、ウェブフックがワークフロージョブイベントの配信を有効にしていることを確認します。
-
「最近の配信」タブに移動し、対応する
workflow_job.queued
イベントを見つけて、イベントを展開します。 -
ペイロードのラベルフィールドを確認し、想定どおりに動作していることを確認します。
-
最後に、レスポンス タブを確認します。これには、 から返されるレスポンスまたはエラーメッセージが含まれているためです CodeBuild。