

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 批量运行构建
<a name="batch-build"></a>

您可以使用使用批量生成 AWS CodeBuild 来运行项目的并行和协调生成。

**Topics**
+ [安全角色](#batch_security_role)
+ [批量构建类型](#batch_build_types)
+ [批量报告模式](#batch-report-mode)
+ [更多信息](#batch_more_info)

## 安全角色
<a name="batch_security_role"></a>

批量构建为批量配置引入了全新的安全角色。这个新角色是必需的，因为 CodeBuild 必须能够代表你调用`StartBuild``StopBuild`、和`RetryBuild`操作才能将生成作为批处理的一部分运行。客户应该使用新角色，而不是他们在构建中使用的角色，原因有两个：
+ 向构建角色授予 `StartBuild`、`StopBuild` 和 `RetryBuild` 权限后，将允许单个构建通过 buildspec 启动多个构建。
+ CodeBuild 批处理生成提供了限制，限制了可用于批次构建的生成数量和计算类型。如果构建角色拥有这些权限，则构建本身就有可能绕过这些限制。

## 批量构建类型
<a name="batch_build_types"></a>

CodeBuild 支持以下批量构建类型：

**Topics**
+ [构建图](#batch_build_graph)
+ [构建列表](#batch_build_list)
+ [构建矩阵](#batch_build_matrix)
+ [构建扇出](#batch_build_fanout)

### 构建图
<a name="batch_build_graph"></a>

构建图定义了一组任务，这些任务依赖于批量处理中的其他任务。

以下示例定义了构建图，展示如何创建依赖项链。

```
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`](batch-build-buildspec.md#build-spec.batch.build-graph)。

### 构建列表
<a name="batch_build_list"></a>

构建列表定义了多个并行运行的任务。

以下示例定义了构建列表。`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`](batch-build-buildspec.md#build-spec.batch.build-list)。

### 构建矩阵
<a name="batch_build_matrix"></a>

生成矩阵定义了并行运行的具有不同配置的任务。 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`](batch-build-buildspec.md#build-spec.batch.build-matrix)。

### 构建扇出
<a name="batch_build_fanout"></a>

构建扇出定义的任务将在批量中拆分为多个构建。这可以用于并行运行测试。 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`](batch-build-buildspec.md#build-spec.batch.build-fanout)。

## 批量报告模式
<a name="batch-report-mode"></a>

如果您的项目的源提供商是 Bitbucket GitHub、或 E GitHub nterprise，并且您的项目配置为向源提供商报告构建状态，则可以选择如何将批量生成状态发送给源提供商。您可以选择将状态作为批处理的单个汇总状态报告发送，也可以单独报告批处理中每个构建的状态。

有关更多信息，请参阅以下主题：
+ [批量配置（创建）](create-project.md#create-project-console-batch-config)
+ [批量配置（更新）](change-project.md#change-project-console-batch-config)

## 更多信息
<a name="batch_more_info"></a>

有关更多信息，请参阅以下主题：
+ [批量构建 buildspec 参考](batch-build-buildspec.md)
+ [批量配置](create-project.md#create-project-console-batch-config)
+ [运行批量构建 (AWS CLI)](run-batch-build-cli.md)
+ [在 AWS CodeBuild 中停止批量构建](stop-batch-build.md)