

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 批次建置 buildspec 參考
<a name="batch-build-buildspec"></a>

本主題包含批次建置屬性的 buildspec 參考。

## 批次
<a name="build-spec.batch"></a>

選用的映射。專案的批次建置設定。

批次/**快速失敗**  
選用。指定一或多個建置任務失敗時批次建置的行為。    
`false`  
預設值。所有執行中的組建都會完成。  
`true`  
當其中一個組建任務失敗時，所有執行中的組建都會停止。

根據預設，所有批次建置任務都會使用 buildspec 檔案中指定的建置設定執行`phases`，例如 `env`和 。您可以在 `batch/<batch-type>/buildspec` 參數中指定不同的`env`值或不同的 buildspec 檔案，以覆寫預設建置設定。

`batch` 屬性的內容會根據指定的批次建置類型而有所不同。可能的批次建置類型包括：
+ [`batch/build-graph`](#build-spec.batch.build-graph)
+ [`batch/build-list`](#build-spec.batch.build-list)
+ [`batch/build-matrix`](#build-spec.batch.build-matrix)
+ [`batch/build-fanout`](#build-spec.batch.build-fanout)

## `batch/build-graph`
<a name="build-spec.batch.build-graph"></a>

定義*建置圖表*。建置圖表定義一組任務，這些任務對批次中的其他任務具有相依性。如需詳細資訊，請參閱[組建圖表](batch-build.md#batch_build_graph)。

此元素包含建置任務的陣列。每個建置任務都包含下列屬性。

**識別符**  
必要。任務的識別符。

**buildspec**  
選用。用於此任務的 buildspec 檔案路徑和檔案名稱。如果未指定此參數，則會使用目前的 buildspec 檔案。

**除錯工作階段**  
選用。布林值，指出是否為此批次建置啟用工作階段偵錯。如需工作階段偵錯的詳細資訊，請參閱 [使用 Session Manager 偵錯組建](session-manager.md)。    
`false`  
工作階段偵錯已停用。  
`true`  
工作階段偵錯已啟用。

**依存項目**  
選用。此任務所依賴的任務識別符陣列。直到這些任務完成之前，此任務將不會執行。

**env**  
選用。任務的建置環境會覆寫 。這可以包含下列屬性：    
**運算類型**  
用於任務的運算類型識別符。如需可能的值[建置環境運算模式和類型](build-env-ref-compute-types.md)，請參閱 中的 **computeType**。  
**機群**  
用於任務的機群識別符。如需更多資訊，請參閱[在預留容量機群上執行組建](fleets.md)。  
**映像**  
用於任務的映像識別符。如需可能的值[CodeBuild 提供的 Docker 映像](build-env-ref-available.md)，請參閱 中的**影像識別符**。  
**特權模式**  
布林值，指出是否要在 Docker 容器內執行 Docker 協助程式。`true` 只有在建置專案用於建置 Docker 映像時，才將 設定為 。否則，嘗試與 Docker 協助程式互動的組建會失敗。預設設定為 `false`。  
**type**  
用於任務的環境類型識別符。如需可能的值[建置環境運算模式和類型](build-env-ref-compute-types.md)，請參閱 中的**環境類型**。  
**變數**  
將出現在建置環境中的環境變數。如需更多資訊，請參閱[env/variables](build-spec-ref.md#build-spec.env.variables)。
請注意，**運算類型**和**機群**無法在單一組建的相同識別符中提供。

**ignore-failure**  
選用。布林值，指出是否可以忽略此建置任務的失敗。    
`false`  
預設值。如果此建置任務失敗，批次建置將會失敗。  
`true`  
如果此建置任務失敗，批次建置仍然可以成功。

以下是組建圖表 buildspec 項目的範例：

```
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
```

## `batch/build-list`
<a name="build-spec.batch.build-list"></a>

定義*建置清單*。建置清單用於定義平行執行的許多任務。如需詳細資訊，請參閱[組建清單](batch-build.md#batch_build_list)。

此元素包含建置任務的陣列。每個建置任務都包含下列屬性。

**識別符**  
必要。任務的識別符。

**buildspec**  
選用。用於此任務的 buildspec 檔案路徑和檔案名稱。如果未指定此參數，則會使用目前的 buildspec 檔案。

**除錯工作階段**  
選用。布林值，指出是否為此批次建置啟用工作階段偵錯。如需工作階段偵錯的詳細資訊，請參閱 [使用 Session Manager 偵錯組建](session-manager.md)。    
`false`  
工作階段偵錯已停用。  
`true`  
工作階段偵錯已啟用。

**env**  
選用。任務的建置環境會覆寫 。這可以包含下列屬性：    
**運算類型**  
用於任務的運算類型識別符。如需可能的值[建置環境運算模式和類型](build-env-ref-compute-types.md)，請參閱中的 **computeType**。  
**機群**  
用於任務的機群識別符。如需更多資訊，請參閱[在預留容量機群上執行組建](fleets.md)。  
**映像**  
用於任務的映像識別符。如需可能的值[CodeBuild 提供的 Docker 映像](build-env-ref-available.md)，請參閱 中的**影像識別符**。  
**特權模式**  
布林值，指出是否要在 Docker 容器內執行 Docker 協助程式。`true` 只有在建置專案用於建置 Docker 映像時，才將 設定為 。否則，嘗試與 Docker 協助程式互動的組建會失敗。預設設定為 `false`。  
**type**  
用於任務的環境類型識別符。如需可能的值[建置環境運算模式和類型](build-env-ref-compute-types.md)，請參閱 中的**環境類型**。  
**變數**  
將出現在建置環境中的環境變數。如需更多資訊，請參閱[env/variables](build-spec-ref.md#build-spec.env.variables)。
請注意，**運算類型**和**機群**無法在單一組建的相同識別符中提供。

**ignore-failure**  
選用。布林值，指出是否可以忽略此建置任務的失敗。    
`false`  
預設值。如果此建置任務失敗，批次建置將會失敗。  
`true`  
如果此建置任務失敗，批次建置仍然可以成功。

以下是組建清單 buildspec 項目的範例：

```
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
```

## `batch/build-matrix`
<a name="build-spec.batch.build-matrix"></a>

定義*建置矩陣*。建置矩陣會定義具有平行執行之不同組態的任務。CodeBuild 會為每個可能的組態組合建立個別的組建。如需詳細資訊，請參閱[建置矩陣](batch-build.md#batch_build_matrix)。

**靜態**  
靜態屬性會套用至所有建置任務。    
**ignore-failure**  
選用。布林值，指出是否可以忽略此建置任務的失敗。    
`false`  
預設值。如果此建置任務失敗，批次建置將會失敗。  
`true`  
如果此建置任務失敗，批次建置仍然可以成功。  
**env**  
選用。建置環境會覆寫所有任務。    
**特權模式**  
布林值，指出是否要在 Docker 容器內執行 Docker 協助程式。`true` 只有在建置專案用於建置 Docker 映像時，才將 設定為 。否則，嘗試與 Docker 協助程式互動的組建會失敗。預設設定為 `false`。  
**type**  
用於任務的環境類型識別符。如需可能的值[建置環境運算模式和類型](build-env-ref-compute-types.md)，請參閱 中的**環境類型**。

**動態**  
動態屬性定義建置矩陣。    
**buildspec**  
選用。陣列，其中包含用於這些任務之 buildspec 檔案的路徑和檔案名稱。如果未指定此參數，則會使用目前的 buildspec 檔案。  
**env**  
選用。建置環境會覆寫這些任務。    
**運算類型**  
陣列，其中包含用於這些任務的運算類型識別符。如需可能的值[建置環境運算模式和類型](build-env-ref-compute-types.md)，請參閱中的 **computeType**。  
**映像**  
陣列，其中包含用於這些任務的影像識別符。如需可能的值[CodeBuild 提供的 Docker 映像](build-env-ref-available.md)，請參閱 中的**影像識別符**。  
**變數**  
陣列，其中包含這些任務在建置環境中存在的環境變數。如需更多資訊，請參閱[env/variables](build-spec-ref.md#build-spec.env.variables)。

以下是組建矩陣 buildspec 項目的範例：

```
batch:
  build-matrix:
    static:
      ignore-failure: false
    dynamic:
      buildspec: 
        - matrix1.yml
        - matrix2.yml
      env:
        variables:
          MY_VAR:
            - VALUE1
            - VALUE2
            - VALUE3
```

如需詳細資訊，請參閱[建置矩陣](batch-build.md#batch_build_matrix)。

## `batch/build-fanout`
<a name="build-spec.batch.build-fanout"></a>

定義*建置散發*。建置散發用於定義任務，該任務會分割成多個平行執行的建置。如需詳細資訊，請參閱[在批次建置中執行平行測試](parallel-test.md)。

此元素包含可分割為多個組建的組建任務。`build-fanout` 區段包含下列屬性。

**平行處理**  
必要。將平行執行測試的組建數目。

**ignore-failure**  
選用。布林值，指出是否可以忽略任何散發建置任務中的失敗。此 **ignore-failure** 值將套用至所有散發組建。    
**false**  
預設值。如果任何散發建置任務失敗，批次建置將會失敗。  
**true**  
如果任何散發建置任務失敗，批次建置仍然可以成功。

以下是建置散發 buildspec 項目的範例：

```
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'
```

如需詳細資訊，請參閱 [建置分發](batch-build.md#batch_build_fanout) 和 [使用 `codebuild-tests-run` CLI 命令](parallel-test-tests-run.md)。