ビルドをバッチで実行
AWS CodeBuild を使用して、バッチビルドによりプロジェクトの同時ビルドと協調ビルドを実行できます。
セキュリティロール
バッチビルドでは、バッチ設定に新しいセキュリティロールが導入されます。この新しいロールでは、CodeBuild が StartBuild、StopBuild および RetryBuild アクションを使用して、バッチの一部としてビルドを実行する上で必要です。次の2つの理由により、お客様はビルドで使用するものと同じロールではなく、新しいロールを使用する必要があります。
-
ビルドの役割を与える
StartBuild、StopBuild、およびRetryBuildアクセス権限を使用すると、単一のビルドが buildspec を介してより多くのビルドを開始することができます。 -
CodeBuild バッチビルドには、バッチ内のビルドに使用できるビルドと計算タイプの数を制限する制限があります。ビルドロールにこれらの権限がある場合、ビルド自体がこれらの制限を回避する可能性があります。
バッチビルドのタイプ
CodeBuild は、次のバッチビルドタイプをサポートしています。
ビルドグラフ
ビルドグラフは、バッチ内の他のタスクに依存する一連のタスクを定義します。
次の例では、依存関係チェーンを作成するビルドグラフを定義します。
batch: fast-fail: false build-graph: - identifier: build1 env: variables: BUILD_ID: build1 ignore-failure: false - identifier: build2 buildspec: build2.yml env: variables: BUILD_ID: build2 depend-on: - build1 - identifier: build3 env: variables: BUILD_ID: build3 depend-on: - build2 - identifier: build4 env: compute-type: ARM_LAMBDA_1GB - identifier: build5 env: fleet: fleet_name
この例では、以下のことを行います。
-
build1は、依存関係を持たないため、最初に実行されます。 -
build2はbuild1への依存関係があるため、build2はbuild1の完了後に実行されます。 -
build3はbuild2への依存関係があるため、build3はbuild2の完了後に実行されます。
ビルドグラフの buildspec 構文の詳細については、「batch/build-graph」を参照してください。
ビルドリスト
ビルドリストは、並行して実行されるタスクの数を定義します。
次の例では、ビルドリストを定義します。build1 ビルドと build2 ビルドは並行して実行されます。
batch: fast-fail: false build-list: - identifier: build1 env: variables: BUILD_ID: build1 ignore-failure: false - identifier: build2 buildspec: build2.yml env: variables: BUILD_ID: build2 ignore-failure: true - identifier: build3 env: compute-type: ARM_LAMBDA_1GB - identifier: build4 env: fleet: fleet_name - identifier: build5 env: compute-type: GENERAL_LINUX_XLAGRE
ビルドリストの buildspec 構文の詳細については、「batch/build-list」を参照してください。
ビルドマトリックス
ビルドマトリックスは、並行して実行される異なる構成のタスクを定義します。CodeBuild は、設定可能な組み合わせごとに個別のビルドを作成します。
次の例は、2 つの buildspec ファイルと環境変数の 3 つの値を含むビルド行列を示しています。
batch: build-matrix: static: ignore-failure: false dynamic: buildspec: - matrix1.yml - matrix2.yml env: variables: MY_VAR: - VALUE1 - VALUE2 - VALUE3
この例では、CodeBuild は 6 つのビルドを作成します。
-
matrix1.yml( を含む)$MY_VAR=VALUE1 -
matrix1.yml( を含む)$MY_VAR=VALUE2 -
matrix1.yml( を含む)$MY_VAR=VALUE3 -
matrix2.yml( を含む)$MY_VAR=VALUE1 -
matrix2.yml( を含む)$MY_VAR=VALUE2 -
matrix2.yml( を含む)$MY_VAR=VALUE3
各ビルドには次の設定があります。
-
ignore-failureがfalseに設定 -
env/typeがLINUX_CONTAINERに設定 -
env/imageがaws/codebuild/amazonlinux-x86_64-standard:4.0に設定 -
env/privileged-modeがtrueに設定
これらのビルドは並行して実行されます。
ビルドマトリックスの buildspec 構文の詳細については、「batch/build-matrix」を参照してください。
ビルドファンアウト
ビルドファンアウトは、バッチ内の複数のビルドに分割されるタスクを定義します。これは、テストを並行して実行するために使用できます。CodeBuild は、parallelism フィールドで設定された値に基づいて、テストケースのシャードごとに個別のビルドを作成します。
次の例では、並行して実行される 5 つのビルドを作成するビルドファンアウトを定義します。
version: 0.2 batch: fast-fail: false build-fanout: parallelism: 5 ignore-failure: false phases: install: commands: - npm install build: commands: - mkdir -p test-results - cd test-results - | codebuild-tests-run \ --test-command 'npx jest --runInBand --coverage' \ --files-search "codebuild-glob-search '**/test/**/*.test.js'" \ --sharding-strategy 'equal-distribution'
この例では、実行する必要があるテストが 100 あると仮定して、CodeBuild は 5 つのビルドを作成し、それぞれが 20 のテストを並行して実行します。
ビルドグラフの buildspec 構文の詳細については、「batch/build-fanout」を参照してください。
バッチレポートモード
プロジェクトのソースプロバイダーが Bitbucket、GitHub、または GitHub Enterprise であり、ソースプロバイダーにビルドステータスを報告するようにプロジェクトが設定されている場合は、ソースプロバイダーにバッチビルドステータスを送信する方法を選択できます。バッチに関する単一の集約ステータスレポートとしてステータスを送信する、またはバッチ内の各ビルドのステータスを個別に報告することを選択できます。
詳細については、以下のトピックを参照してください。
詳細情報
詳細については、以下の各トピックを参照してください。