我似乎无法从这样的工具中找到最明显的 CI 功能:在另一个项目的管道完成后运行一个项目管道。你可以用 trigger
来做但仅用于下游触发,这与您想要的相反,以防您有一个项目是 20 个其他项目的核心依赖项,这些项目都需要重建。
在这种情况下,您需要的是能够定义如下内容:
项目A:没什么特别的,只是一个普通的管道
项目 B,“依赖”于项目 A:
.gitlab-ci.yml
from_upstream:
stage: pre
trigger:
project: ProjectA
它的作用是在 ProjectA 管道 [成功] 完成时触发 ProjectB 构建。
相反,您必须以类似的方式在 ProjectA 中声明所有数十个下游,这是愚蠢且适得其反的,尤其是当 ProjectA 是一个在任何地方不断重用的核心库时。
那么,有人可以解释一下为什么 GitlabCI 缺少一个明显的特性(即使在 EE 中也不可用),这个特性已经在 Bamboo 和 Hudson/Jenkins 中存在了几十年?我如何使用 Gitlab-CI 做我需要的事情?
更新:
似乎上游/下游的概念对某些人来说真的很困惑,所以澄清一下:上游 项目 A 是并且必须始终与 分离下游项目 B 因为关注点分离是一件事,上游维护者不能也不应该知道他们的项目如何在下游使用。
因此,所需的功能(同样在 Bamboo 和 Jenkins 中存在了几十年)是下游管道在上游管道上声明被动触发器,而不是相反的主动触发器,因为它目前在 Gitlab-CI 中实现。
最佳答案
这里有多项目管道的文档和示例应用程序: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”)的管道。
关于gitlab - Gitlab-CI 又名管道依赖项中的上游触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60505357/