批量运行构建
您可以使用 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。
构建扇出
构建扇出定义的任务将在批量中拆分为多个构建。这可以用于并行运行测试。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,并且您的项目配置为向源提供程序报告构建状态,则您可以选择希望通过何种方式将批量构建状态发送到源提供程序。您可以选择将状态作为批处理的单个汇总状态报告发送,也可以单独报告批处理中每个构建的状态。
有关更多信息,请参阅以下主题:
更多信息
有关更多信息,请参阅以下主题: