3 votes

Déclenchement en amont dans Gitlab-CI alias dépendances du pipeline

Je n'arrive pas à trouver la fonctionnalité de CI la plus évidente dont on ait jamais eu besoin dans un tel outil : exécuter le pipeline d'un projet après que le pipeline d'un autre projet soit terminé. Vous pouvez le faire avec trigger mais seulement pour le déclenchement en aval, ce qui est le contraire de ce que vous voulez dans le cas où vous avez un projet qui est une dépendance principale de 20 autres projets qui doivent tous être reconstruits.

Ce dont vous avez besoin dans ce cas est de pouvoir définir quelque chose comme :

Projet A : rien de particulier, juste un pipeline normal

Projet B qui "dépend" du projet A :

.gitlab-ci.yml

from_upstream:
  stage: pre
  trigger:
    project: ProjectA

Ce qu'il fait, c'est déclencher la construction de ProjectB chaque fois qu'un pipeline de ProjectA a terminé [avec succès].

Au lieu de cela, vous devez déclarer toutes les douzaines d'avalanches dans ProjectA de la même manière, ce qui est stupide et contre-productif, surtout lorsque ProjectA est une bibliothèque centrale qui est constamment réutilisée partout.

Quelqu'un peut-il expliquer pourquoi il manque à GitlabCI une fonctionnalité évidente (qui n'est pas disponible même dans EE) qui existe dans Bamboo et Hudson/Jenkins depuis des décennies ? Et comment puis-je faire ce dont j'ai besoin avec Gitlab-CI ?

UPDATE : Il semble que la notion d'amont/aval soit vraiment confuse pour certaines personnes, donc juste pour clarifier : en amont Projet A est et doit toujours être découplé de en aval Projet B parce que la séparation des préoccupations est une chose et que les mainteneurs en amont ne pourraient et ne devraient pas avoir la moindre connaissance de la façon dont leur projet est utilisé en aval.

Ainsi, la fonctionnalité souhaitée (qui, encore une fois, existe depuis des décennies dans Bamboo et Jenkins) est que les pipelines en aval déclarent des déclencheurs passifs sur les pipelines en amont, et non l'inverse avec des déclencheurs actifs comme c'est actuellement implémenté dans Gitlab-CI.

0voto

Adam Marshall Points 1988

Il y a de la documentation et des exemples d'applications pour les pipelines multi-projets ici : https://about.gitlab.com/blog/2018/10/31/use-multiproject-pipelines-with-gitlab-cicd/ et ici : https://gitlab.com/gitlab-examples/multi-project-pipelines

Dans les projets d'exemple, le projet appelé "simple-maven-dep" déclenche le pipeline pour l'autre application ("simple-maven-app") qui en dépend.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X