本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
您可以使用使用批量生成 AWS CodeBuild 来运行项目的并行和协调生成。
安全角色
批量构建为批量配置引入了全新的安全角色。这个新角色是必需的,因为 CodeBuild 必须能够代表你调用StartBuild
StopBuild
、和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
存在依赖关系,因此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 为每种可能的配置组合创建单独的版本。
以下示例显示了一个具有两个 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。
建立粉丝群
构建 fanout 定义了一个任务,该任务将在批次中拆分为多个构建。这可以用于并行运行测试。 CodeBuild 根据parallelism
字段中设置的值,为每个测试用例分片创建单独的构建。
以下示例定义了一个构建 fanout,它创建了五个并行运行的构建。
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、或 E GitHub nterprise,并且您的项目配置为向源提供商报告构建状态,则可以选择如何将批量生成状态发送给源提供商。您可以选择将状态作为批处理的单个汇总状态报告发送,也可以单独报告批处理中每个构建的状态。
有关更多信息,请参阅以下主题:
更多信息
有关更多信息,请参阅以下主题: