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 codejunit2html
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'ostefactdocker rm
Pour détruire un conteneur créé plus tôt dans le pipelineMon 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?
À 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