web-dev-qa-db-fra.com

Gitlab CI: Comment continuer le travail même lorsque le script échoue

J'ai un travail dans mon pipeline qui a un script avec deux étapes très importantes:

  • mvn test Pour exécuter des tests Junit contre mon code
  • junit2html Pour convertir le résultat XML des tests en un format HTML (moyen possible de voir les résultats que mes pipelines ne sont pas terminés via MRS) qui est téléchargé sur Gitlab en tant qu'ostefact
  • docker rm Pour détruire un conteneur créé plus tôt dans le pipeline

Mon problème est que lorsque mes tests échouent, le script s'arrête immédiatement à mvn test, alors le junit2html L'étape n'est jamais atteinte, ce qui signifie que les résultats des tests ne sont jamais téléchargés en cas d'échec et docker rm n'est jamais exécuté non plus non plus, de sorte que le conteneur reste et dégage des pipelines ultérieures en conséquence.

Ce que je veux, c'est être capable de garder un emploi aller jusqu'à la fin même si le script échoue à un moment donné. Fondamentalement, le travail doit toujours compter comme ayant échoué dans Gitlab CI/CD, mais tout son script doit être exécuté. Comment puis-je configurer cela?

7
Grumbunks

À chaque étape que vous devez continuer même si la marche échoue, vous pouvez ajouter un drapeau à votre .gitlab-ci.yml fichier dans cette étape. Par exemple:

...
Unit Tests:
  stage: tests
  only:
    - branches
  allow_failure: true
  script:
    - ...

C'est ça allow_failure: true Drapeau qui continuera le pipeline même si cette étape spécifique échoue. GITLAB CI Documentation sur APPLOY_FAILURE est ici: https://docs.gitlab.com/ee/ci/yaml/#allow_failure

3
Adam