web-dev-qa-db-fra.com

La construction de code continue après l'échec de la construction

Je construis un pipeline CI/CD en utilisant git, codebuild et élastique beanstalk.

Pendant l'exécution de la construction de code lorsque la construction échoue en raison d'une erreur de syntaxe d'un scénario de test, je vois la progression de la construction de code à l'étape suivante et je continue ultimement à produire les artefacts.

Ma compréhension était que si la construction échoue, l'exécution devrait s'arrêter. est-ce un comportement correct?

Veuillez consulter la spécification de build ci-dessous.

version: 0.2

phases:
  install:
    commands:
      - echo Installing package.json..
      - npm install
      - echo Installing Mocha...
      - npm install -g mocha
  pre_build:
    commands:
      - echo Installing source NPM placeholder dependencies...
  build:
    commands:
      - echo Build started on `date`
      - echo Compiling the Node.js code
      - mocha modules/**/tests/*.js
  post_build:
    commands:
      - echo Build completed on `date`
artifacts:
  files:
    - modules/*
    - node_modules/*
    - package.json
    - config/*
    - server.js
17
pkpk

CodeBuild détecte les échecs de génération par des codes de sortie. Vous devez vous assurer que votre exécution de test renvoie un code de sortie différent de zéro en cas d'échec.

POST_BUILD s'exécutera toujours tant que BUILD sera également exécuté (indépendamment du succès ou de l'échec de BUILD.) Il en va de même pour UPLOAD_ARTIFACTS. Cela vous permet de récupérer des informations/artefacts de débogage.

Si vous voulez faire quelque chose de différent dans POST_BUILD selon le succès ou l'échec de BUILD, vous pouvez tester la variable d'environnement intégrée CODEBUILD_BUILD_SUCCEEDING , qui est défini sur 1 si BUILD a réussi et 0 en cas d'échec.

20
Unsigned

CodeBuild utilise la variable d'environnement CODEBUILD_BUILD_SUCCEEDING pour montrer si le processus de construction semble aller bien.

la meilleure façon que j'ai trouvée en ce moment est de créer un petit script dans la section d'installation, puis d'utiliser toujours ceci comme:

phases:
  install:
    commands:
      - echo '#!/bin/bash' > /usr/local/bin/ok; echo 'if [[ "$CODEBUILD_BUILD_SUCCEEDING" == "0" ]]; then exit 1; else exit 0; fi' >> /usr/local/bin/ok; chmod +x /usr/local/bin/ok
  post_build:
    commands:
      - ok && echo Build completed on `date`
9
wodka

L'étape post_build sera exécutée et les artefacts seront produits. Le post_build est bon pour arrêter correctement l'environnement de build, si nécessaire, et les artefacts pourraient être utiles même si la build a échoué. Par exemple. journaux supplémentaires, fichiers intermédiaires, etc.

Je suggérerais d'utiliser post_build uniquement pour les commandes agnostiques au résultat de votre build, et de correctement initialiser l'environnement de build. Sinon, vous pouvez simplement exclure cette étape.

0
Ernie Jay