本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
您可以使用 AWS CodeBuild 執行具有批次建置的專案並行和協調建置。
安全角色
批次建置會在批次組態中引入新的安全角色。此新角色是必要的StopBuild
,因為 CodeBuild 必須能夠代表您呼叫 StartBuild
、 和 RetryBuild
動作,才能在批次中執行組建。客戶應該使用新角色,而不是他們在建置中使用的相同角色,原因有兩個:
-
提供組建角色
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
,因此 會在build1
完成後build2
執行。 -
build3
具有 的相依性build2
,因此 會在build2
完成後build3
執行。
如需建置圖表 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 會為每個可能的組態組合建立個別的組建。
下列範例顯示具有兩個 buildspec 檔案和三個環境變數值的建置矩陣。
batch:
build-matrix:
static:
ignore-failure: false
dynamic:
buildspec:
- matrix1.yml
- matrix2.yml
env:
variables:
MY_VAR:
- VALUE1
- VALUE2
- VALUE3
在此範例中,CodeBuild 會建立六個組建:
-
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
欄位中設定的值,為每個測試案例碎片建立個別的組建。
下列範例定義了組建散發,可建立五個平行執行的組建。
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 會建立五個組建,每個組建會平行執行 20 個測試。
如需建置圖表 buildspec 語法的詳細資訊,請參閱 batch/build-fanout。
批次報告模式
如果專案的來源提供者是 Bitbucket、GitHub 或 GitHub Enterprise,且您的專案設定為向來源提供者報告建置狀態,則您可以選取希望批次建置狀態傳送至來源提供者的方式。您可以選擇 ,將狀態做為批次的單一彙總狀態報告傳送,或讓批次中每個組建的狀態個別報告。
如需詳細資訊,請參閱下列主題:
其他資訊
如需詳細資訊,請參閱下列主題: