Exécuter des builds par lots - AWS CodeBuild

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

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

Rôle de sécurité

Les builds par lots 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 StartBuildStopBuild, 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 que celui qu'ils utilisent dans leur build, pour deux raisons :

  • L'attribution du rôle StartBuild de construction et RetryBuild des autorisations permettrait à une seule version de démarrer d'autres versions via le buildspec. StopBuild

  • 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 eux-mêmes puissent contourner ces restrictions.

Types de build par lots

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

Construire un graphe

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 :

  • build1s'exécute en premier car il n'a aucune dépendance.

  • build2dépend debuild1, donc build2 s'exécute une fois build1 terminé.

  • build3dépend debuild2, 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

Construire une liste

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

Construire une matrice

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-failureréglé sur false

  • env/typeréglé sur LINUX_CONTAINER

  • env/imageréglé sur aws/codebuild/amazonlinux-x86_64-standard:4.0

  • env/privileged-moderé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

Construire un ventilateur

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

Mode de rapport par lots

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 :

En savoir plus

Pour plus d’informations, consultez les rubriques suivantes :