View a markdown version of this page

CodeBuild がホストする GitHub Actions ランナーでサポートされているラベルの上書き - AWS CodeBuild

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

CodeBuild がホストする GitHub Actions ランナーでサポートされているラベルの上書き

GitHub Actions ワークフロー YAML では、セルフホスト型ランナーのビルドを変更するさまざまなラベルの上書きを指定できます。CodeBuild で認識されないビルドは無視されますが、ウェブフックリクエストは失敗しません。次のワークフロー YAML は 2 つのジョブを定義します。 job1はイメージ、インスタンスサイズ、フリート、および buildspec のオーバーライドを使用し、 はイメージオーバーライドのみjob2を使用します。GitHub が各ジョブを作成したランナーにルーティングするように、各ジョブに一意のラベル (job1job2) を付けます。

name: Hello World on: [push] jobs: job1: runs-on: - codebuild-myProject-${{ github.run_id }}-${{ github.run_attempt }} - image:arm-3.0 - instance-size:small - fleet:myFleet - buildspec-override:true - job1 steps: - run: echo "Hello from Job 1!" job2: runs-on: - codebuild-myProject-${{ github.run_id }}-${{ github.run_attempt }} - image:linux-5.0 - job2 steps: - run: echo "Hello from Job 2!"

マトリックス戦略を使用して、複数の設定で単一のジョブを実行することもできます。1 つのマトリックスジョブの拡張には常に同じ数のラベルがあるため、ランナーマッチングの問題はラベルに影響しません。ただし、ワークフロー実行に複数のマトリックスジョブが含まれている場合は、GitHub が別のマトリックスジョブ用に作成されたランナーとジョブが一致しないように、各マトリックスジョブに独自のカスタムラベル ( matrix-job-1や などmatrix-job-2) を付けます。

name: Hello World on: [push] jobs: Hello-World-Job: runs-on: - codebuild-myProject-${{ github.run_id }}-${{ github.run_attempt }} - image:${{ matrix.os }} - instance-size:${{ matrix.size }} - fleet:myFleet - buildspec-override:true - matrix-job-1 strategy: matrix: include: - os: arm-3.0 size: small - os: linux-5.0 size: large steps: - run: echo "Hello World!"
注記

ワークフロージョブが GitHub でハングアップしている場合は、「ウェブフックのトラブルシューティング」および「カスタムラベルを使用してジョブをルーティングする」を参照してください。

codebuild-<project-name>-${{github.run_id}}-${{github.run_attempt}} (必須)

  • 例: codebuild-fake-project-${{ github.run_id }}-${{ github.run_attempt }}

  • すべての GitHub Actions ワークフロー YAML に必須です。<project name> は、セルフホスト型ランナーウェブフックが設定されているプロジェクトの名前と同じである必要があります。

image:<environment-type>-<image-identifier>

instance-size:<instance-size>

fleet:<fleet-name>

buildspec-override:<boolean>

  • 例: buildspec-override:true

  • true に設定されている場合、ビルドが INSTALLPRE_BUILD、および POST_BUILD フェーズで buildspec コマンドを実行できるようにします。

<unique-label> (ワークフロー実行に複数のジョブがある場合に推奨)

  • 例: job1

  • 定義したカスタムラベルで、同じワークフロー実行内の他のジョブが使用しないもの。各ジョブに一意のラベルを割り当てると、GitHub は各ジョブを、そのジョブ用に作成されたランナーにのみルーティングします。これがないと、同じワークフロー実行のジョブのラベルオーバーライドの数が異なる場合、ラベルの数が少ないジョブは、ラベルの数が多いジョブ用に作成されたランナーによって選択され、2 番目のジョブはランナーなしで残ります。詳細については、「ウェブフックのトラブルシューティング」を参照してください。

単一ラベルの上書き

CodeBuild では、以下を使用して、単一のラベルに複数の上書きを指定できます。

注記

すべてのオーバーライドが 1 つのラベルに結合されるため、各ジョブのランナーは 1 つのラベルのみで登録されます。つまり、 で説明されているマルチジョブランナーマッチングの問題は、各ジョブに一意のラベルがない場合でも、この形式では発生ウェブフックのトラブルシューティングしません。この動作を優先し、ジョブでサポートされているオーバーライドのみが必要な場合は、単一ラベル形式を使用します。サポートされていないオーバーライドが必要な場合は、使用しないでください。たとえば、カスタムイメージ (プライベートレジストリ内のイメージを含む) は、image:custom-<environment-type>-<custom-image-identifier>ラベル形式を使用してのみ指定できます。これらの上書きには、このトピックで前述した個別のラベル形式を使用します。

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

    runs-on: codebuild-<project-name>-${{ github.run_id }}-${{ github.run_attempt }}-<environment-type>-<image-identifier>-<instance-size>
  • 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 }}-image-<image-version>-fleet-<fleet-name>
  • ビルド中に buildspec コマンドを実行するには、ラベルにサフィックスとして -with-buildspec を追加できます。

    runs-on: codebuild-<project-name>-${{ github.run_id }}-${{ github.run_attempt }}-<image>-<image-version>-<instance-size>-with-buildspec
  • オプションで、イメージを上書きせずにインスタンスサイズの上書きを指定できます。Amazon EC2 ビルドでは、環境タイプとイメージ識別子の両方を除外できます。Lambda ビルドでは、イメージ識別子を除外できます。