Via Gitlab CI il est possible de faire qu'un job soit manuel (manual) afin que, comme son nom l'indique, il ne soit exécuté que si l'on en a besoin.
C'est pratique pour des tâches non obligatoires ou que l'on veut ne pas lancer à chaque déploiement.
Le soucis est que par défaut, si le job n'est pas lancé et qu'il y a des jobs dans des étapes (stage) après le job manuel, alors ils ne seront pas exécuté tant que le job manuel n'est pas lancé :
Pour éviter ce comportement on peut ajouter l'attribut « allow_failure: true » à notre règle afin de ne pas bloquer la pipeline, mais de quand même pouvoir déclencher notre job quand on le veut.
Voici la définition complète pour ne proposer ce job manuel que lors de la création d'un tag :
prod_backup_db_manual:
rules:
- if: $CI_COMMIT_TAG != null && $CI_PIPELINE_SOURCE != "schedule"
when: manual
allow_failure: true
script:
- echo "hello world"
stage : backup
environment:
name: prod
Voici la définition complète pour ne proposer ce job manuel que lors d'un commit sur la branche master.
prod_backup_db_manual:
rules:
- if: $CI_COMMIT_BRANCH == "master" && $CI_PIPELINE_SOURCE != "schedule"
when: manual
allow_failure: true
script:
- echo "hello world"
stage : backup
environment:
name: prod
Ajouter un commentaire