kgaut.net // Développeur web PHP / Drupal freelance
contactez-moi

Gitlab CI - Avoir un job manuel sans bloquer les suivants

Cet article a été écrit il y a plus de quatre ans, son contenu n'est peut-être plus d'actualité.

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

 

Commentaires (0)