J'utilise gitlab-ci chez mon client. Or quelque chose m'a profondément agacé ces derniers jours.
Voilà le contexte : le fichier .gitlab-ci.yml
du projet sur lequel je travaille prévoit qu'un seul pipeline peut être lancé à la fois sur une même branche. Rien de très étonnant jusque là. Du coup, lorsqu'un pipeline est lancé alors qu'un autre est déjà en cours d'exécution, le second tombe en erreur.
Quel est le problème : quand on est tout seul à faire des merge-request, on peut toujours relancer manuellement un pipeline tombé en erreur. Mais quand on est 10 à en faire, je vous laisse deviner ce qui se passe :
Bref. Une bonne âme m'a filé l'astuce, il s'agit d'utiliser la propriété resource_group.
Comme on peut le voir dans l'exemple en lien, il faut simplement :
Il s'agit en fait de créer une "ressource" partagée, qui ne pourra être utilisée que par un seul job à la fois (et donc ici, par un seul pipeline à la fois). Les pipelines qui arriveront ensuite seront mis en file d'attente au lieu d'être mis en échec. Quand le premier job/pipeline se termine, il libère la ressource qui est passée au pipeline suivant, etc.