

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 배치로 빌드 실행
<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 파일 2개와 환경 변수 값 3개가 포함된 빌드 매트릭스를 보여 줍니다.

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

이 예제에서 CodeBuild는 6개의 빌드를 생성합니다.
+ `$MY_VAR=VALUE1`가 있는 `matrix1.yml`
+ `$MY_VAR=VALUE2`가 있는 `matrix1.yml`
+ `$MY_VAR=VALUE3`가 있는 `matrix1.yml`
+ `$MY_VAR=VALUE1`가 있는 `matrix2.yml`
+ `$MY_VAR=VALUE2`가 있는 `matrix2.yml`
+ `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는 각각 20개의 테스트를 병렬로 실행하는 5개의 빌드를 생성합니다.

빌드 그래프 buildspec 구문에 대한 자세한 내용은 [`batch/build-fanout`](batch-build-buildspec.md#build-spec.batch.build-fanout) 섹션을 참조하세요.

## 배치 보고서 모드
<a name="batch-report-mode"></a>

프로젝트의 소스 공급자가 Bitbucket, GitHub 또는 GitHub Enterprise이고 프로젝트가 소스 공급자에게 빌드 상태를 보고하도록 구성된 경우 배치 빌드 상태를 소스 공급자에게 보내는 방법을 선택할 수 있습니다. 상태를 배치에 대한 단일 집계 상태 보고서로 전송하거나, 배치에 있는 각 빌드의 상태를 개별적으로 보고하도록 선택할 수 있습니다.

자세한 내용은 다음 항목을 참조하세요.
+ [빌드 구성(생성)](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)