我似乎无法从这种工具中找到一个最明显的CI功能:在另一个项目的管道完成之后运行项目管道。您可以使用trigger
进行此操作,但只能用于下游触发,如果您的项目是其他20个需要重新构建的项目的核心依赖项,则与您想要的相反。
在这种情况下,您需要定义如下内容:
项目A :没什么特别的,只是普通的管道
项目B ,它“依赖”项目A:
.gitlab-ci.yml
from_upstream:
stage: pre
trigger:
project: ProjectA
它的作用是在ProjectA管道[成功]完成后触发ProjectB构建。
相反,您必须以类似的方式声明ProjectA中的所有数十条下游,这既愚蠢又适得其反,特别是当ProjectA是一个不断在各处重用的核心库时。
那么,有人可以解释为什么GitlabCI缺少几十年来在Bamboo和Hudson / Jenkins中存在的一项显而易见的功能(即使在EE中也无法使用)吗?以及如何使用Gitlab-CI做我需要的事情?
更新: 似乎上游/下游的概念确实使某些人感到困惑,因此只需澄清一下:上游 项目A 必须且必须始终与下游脱钩 strong> 项目B ,因为关注点分离是一件事情,上游维护者不能也不应该对他们的项目如何在下游使用有任何了解。
因此,期望的功能(在Bamboo和Jenkins中再次存在数十年)是下游管道在上游管道上声明被动触发器,而不是像当前在Gitlab-CI中实现的那样使用主动触发器。
答案 0 :(得分:0)
这里有{@ 3}}和https://about.gitlab.com/blog/2018/10/31/use-multiproject-pipelines-with-gitlab-cicd/
的多项目管道的文档和示例应用程序在示例项目中,名为“ simple-maven-dep”的项目将触发依赖于该应用程序的另一个应用程序(“ simple-maven-app”)的管道。