Gitlab CI - Avoir un job manuel sans bloquer les suivants

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é :

Image
gitlab ci job manuel

 

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

Ne sera pas publié
CAPTCHA
Désolé, pour ça, mais c'est le seul moyen pour éviter le spam...