

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# ビルドをバッチで実行
<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` アクションを使用して、バッチの一部としてビルドを実行する上で必要です。次の2つの理由により、お客様はビルドで使用するものと同じロールではなく、新しいロールを使用する必要があります。
+ ビルドの役割を与える `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 は、設定可能な組み合わせごとに個別のビルドを作成します。

次の例は、2 つの buildspec ファイルと環境変数の 3 つの値を含むビルド行列を示しています。

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

この例では、CodeBuild は 6 つのビルドを作成します。
+ `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` フィールドで設定された値に基づいて、テストケースのシャードごとに個別のビルドを作成します。

次の例では、並行して実行される 5 つのビルドを作成するビルドファンアウトを定義します。

```
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 は 5 つのビルドを作成し、それぞれが 20 のテストを並行して実行します。

ビルドグラフの buildspec 構文の詳細については、「[`batch/build-fanout`](batch-build-buildspec.md#build-spec.batch.build-fanout)」を参照してください。

## バッチレポートモード
<a name="batch-report-mode"></a>

プロジェクトのソースプロバイダーが Bitbucket、GitHub、または GitHub Enterprise であり、ソースプロバイダーにビルドステータスを報告するようにプロジェクトが設定されている場合は、ソースプロバイダーにバッチビルドステータスを送信する方法を選択できます。バッチに関する単一の集約ステータスレポートとしてステータスを送信する、またはバッチ内の各ビルドのステータスを個別に報告することを選択できます。

詳細については、以下の各トピックを参照してください。
+ [Batch 設定 (作成)](create-project.md#create-project-console-batch-config)
+ [Batch 設定 (更新)](change-project.md#change-project-console-batch-config)

## 詳細情報
<a name="batch_more_info"></a>

詳細については、以下の各トピックを参照してください。
+ [バッチビルドのビルド仕様 (buildspec) のリファレンス](batch-build-buildspec.md)
+ [Batch 構成](create-project.md#create-project-console-batch-config)
+ [バッチビルドの実行 (AWS CLI)](run-batch-build-cli.md)
+ [AWS CodeBuild でのバッチビルドを停止](stop-batch-build.md)