Gitlab-CI中的上游触发也称为管道依赖性

时间:2020-03-03 10:40:04

标签: gitlab gitlab-ci

我似乎无法从这种工具中找到一个最明显的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中实现的那样使用主动触发器。

1 个答案:

答案 0 :(得分:0)

这里有{@ 3}}和https://about.gitlab.com/blog/2018/10/31/use-multiproject-pipelines-with-gitlab-cicd/

的多项目管道的文档和示例应用程序

在示例项目中,名为“ simple-maven-dep”的项目将触发依赖于该应用程序的另一个应用程序(“ simple-maven-app”)的管道。