Gitlab-CI 中的上游触发(又名管道依赖项)

Yog*_*oth 10 gitlab gitlab-ci

我似乎无法从这样的工具中找到最明显的 CI 功能:在另一个项目的管道完成后运行项目管道。您可以这样做,trigger但仅限于下游触发,这与您想要的相反,如果您的项目是 20 个其他项目的核心依赖项,而这些项目都需要重建。

在这种情况下,您需要能够定义如下内容:

项目A:没什么特别的,只是一个普通的管道

项目 B,“依赖于”项目 A:

.gitlab-ci.yml

from_upstream:
  stage: pre
  trigger:
    project: ProjectA
Run Code Online (Sandbox Code Playgroud)

它的作用是每当 ProjectA 管道[成功]完成时触发 ProjectB 构建。

相反,您必须以类似的方式声明 ProjectA 中的所有数十个下游,这是愚蠢且适得其反的,特别是当 ProjectA 是一个在各处不断重用的核心库时。

那么,有人可以解释一下为什么 GitlabCI 缺少一个在 Bamboo 和 Hudson/Jenkins 中已有数十年的明显功能(即使在 EE 中也不可用)吗?我如何使用 Gitlab-CI 做我需要的事情?

更新:似乎上游/下游的概念对某些人来说确实令人困惑,所以只是澄清一下:上游 项目 A是而且必须始终与下游 项目 B分离,因为关注点分离是一件事,上游维护者不能也不应该可能不了解他们的项目如何在下游使用。

因此,所需的功能(同样,在 Bamboo 和 Jenkins 中存在了数十年)是下游管道在上游管道上声明被动触发器,而不是像目前在 Gitlab-CI 中实现的那样使用主动触发器。

Ada*_*all 1

这里有用于多项目管道的文档和示例应用程序:https: //about.gitlab.com/blog/2018/10/31/use-multiproject-pipelines-with-gitlab-cicd/和这里:https://gitlab .com/gitlab-examples/multi-project-pipelines

在示例项目中,名为“simple-maven-dep”的项目会触发依赖于它的其他应用程序(“simple-maven-app”)的管道。

  • 再次阅读我的问题,它解释说这与我需要的相反。 (4认同)
  • 同样的问题在这里,我完全同意@YogSothoth ...我有一个库和一个应用程序。但我不想告诉库项目在库发生变化时构建应用程序(推送或下游原则)。我希望每当使用的库发生变化(拉动或上游原则)时就构建应用程序。这与上面的示例多项目 pipline 项目所述完全相反......可悲的是,这似乎根本不可能......真的很糟糕...... (2认同)