

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Exécuter des builds par lots
<a name="batch-build"></a>

Vous pouvez l'utiliser AWS CodeBuild pour exécuter des versions simultanées et coordonnées d'un projet avec des versions par lots. 

**Topics**
+ [Rôle de sécurité](#batch_security_role)
+ [Types de build par lots](#batch_build_types)
+ [Mode de rapport par lots](#batch-report-mode)
+ [En savoir plus](#batch_more_info)

## Rôle de sécurité
<a name="batch_security_role"></a>

Les générations en lot introduisent un nouveau rôle de sécurité dans la configuration par lots. Ce nouveau rôle est obligatoire car CodeBuild il doit être capable d'appeler les `RetryBuild` actions `StartBuild``StopBuild`, et en votre nom pour exécuter des builds dans le cadre d'un lot. Les clients doivent utiliser un nouveau rôle, et non le même rôle qu’ils utilisent dans leur build, pour deux raisons :
+ Donner au rôle de build `StartBuild`, `StopBuild` et `RetryBuild` les autorisations permettrait à une seule build de lancer davantage de builds via le buildspec.
+ CodeBuild les versions par lots fournissent des restrictions qui limitent le nombre de versions et les types de calcul qui peuvent être utilisés pour les versions du lot. Si le rôle de build dispose de ces autorisations, il est possible que les builds elles-mêmes puissent contourner ces restrictions.

## Types de build par lots
<a name="batch_build_types"></a>

CodeBuild prend en charge les types de génération par lots suivants :

**Topics**
+ [Construire un graphe](#batch_build_graph)
+ [Construire une liste](#batch_build_list)
+ [Construire une matrice](#batch_build_matrix)
+ [Construire un ventilateur](#batch_build_fanout)

### Construire un graphe
<a name="batch_build_graph"></a>

Un graphe de génération définit un ensemble de tâches qui dépendent d'autres tâches du lot. 

L'exemple suivant définit un graphe de construction qui crée une chaîne de dépendances. 

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

Dans cet exemple :
+ `build1`s'exécute en premier car il n'a aucune dépendance.
+ `build2`dépend de`build1`, donc `build2` s'exécute une fois `build1` terminé.
+ `build3`dépend de`build2`, donc `build3` s'exécute une fois `build2` terminé.

Pour plus d'informations sur la syntaxe buildspec du graphe de construction, consultez. [`batch/build-graph`](batch-build-buildspec.md#build-spec.batch.build-graph)

### Construire une liste
<a name="batch_build_list"></a>

Une liste de build définit un certain nombre de tâches exécutées en parallèle. 

L'exemple suivant définit une liste de build. Les `build2` builds `build1` et seront exécutés en parallèle.

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

Pour plus d'informations sur la syntaxe buildspec de la liste de compilation, consultez. [`batch/build-list`](batch-build-buildspec.md#build-spec.batch.build-list)

### Construire une matrice
<a name="batch_build_matrix"></a>

Une matrice de génération définit les tâches avec différentes configurations qui s'exécutent en parallèle. CodeBuild crée une version distincte pour chaque combinaison de configuration possible. 

L'exemple suivant montre une matrice de construction avec deux fichiers buildspec et trois valeurs pour une variable d'environnement.

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

Dans cet exemple, CodeBuild crée six versions :
+ `matrix1.yml` avec `$MY_VAR=VALUE1`
+ `matrix1.yml` avec `$MY_VAR=VALUE2`
+ `matrix1.yml` avec `$MY_VAR=VALUE3`
+ `matrix2.yml` avec `$MY_VAR=VALUE1`
+ `matrix2.yml` avec `$MY_VAR=VALUE2`
+ `matrix2.yml` avec `$MY_VAR=VALUE3`

Chaque build comportera les paramètres suivants :
+ `ignore-failure`réglé sur `false`
+ `env/type`réglé sur `LINUX_CONTAINER`
+ `env/image`réglé sur `aws/codebuild/amazonlinux-x86_64-standard:4.0`
+ `env/privileged-mode`réglé sur `true`

Ces builds s'exécutent en parallèle.

Pour plus d'informations sur la syntaxe buildspec de la matrice de construction, consultez. [`batch/build-matrix`](batch-build-buildspec.md#build-spec.batch.build-matrix)

### Construire un ventilateur
<a name="batch_build_fanout"></a>

Un fanout de build définit une tâche qui sera divisée en plusieurs builds dans le lot. Cela peut être utilisé pour exécuter des tests en parallèle. CodeBuild crée une version distincte pour chaque fragment de cas de test en fonction de la valeur définie dans le `parallelism` champ.

L'exemple suivant définit un fanout de build qui crée cinq builds exécutés en parallèle.

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

Dans cet exemple, en supposant que 100 tests doivent être exécutés, CodeBuild crée cinq versions qui exécutent chacune 20 tests en parallèle.

Pour plus d'informations sur la syntaxe buildspec du graphe de construction, consultez. [`batch/build-fanout`](batch-build-buildspec.md#build-spec.batch.build-fanout)

## Mode de rapport par lots
<a name="batch-report-mode"></a>

Si le fournisseur source de votre projet est Bitbucket ou GitHub Enterprise GitHub, et que votre projet est configuré pour signaler les statuts de construction au fournisseur source, vous pouvez sélectionner la manière dont vous souhaitez que les statuts de génération par lots soient envoyés au fournisseur source. Vous pouvez choisir d'envoyer les statuts sous forme de rapport d'état agrégé unique pour le lot, ou de faire en sorte que le statut de chaque build du lot soit signalé individuellement.

Pour plus d’informations, consultez les rubriques suivantes :
+ [Configuration par lots (création)](create-project.md#create-project-console-batch-config)
+ [Configuration par lots (mise à jour)](change-project.md#change-project-console-batch-config)

## En savoir plus
<a name="batch_more_info"></a>

Pour plus d’informations, consultez les rubriques suivantes :
+ [Référence Batch Build Buildspec](batch-build-buildspec.md)
+ [Configuration par lots](create-project.md#create-project-console-batch-config)
+ [Exécuter une compilation par lots (AWS CLI)](run-batch-build-cli.md)
+ [Arrêter les compilations par lots AWS CodeBuild](stop-batch-build.md)