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

标签 gitlab gitlab-ci

我似乎无法从这样的工具中找到最明显的 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/

相关文章:

ruby-on-rails - Gitlab CI 和 Rails Postgres 崩溃

GitLab SSL Read error, decryption failed or bad record mac

git - 如何将下载的存储库转换为 git 存储库?

php - Laravel Dusk - 无法使其在 GitLab CI 上运行

GitLab CI 构建失败,无法识别 git

gitlab - 禁用 mongodb 日志出现在 xunit 测试日志中

python - 如何通过Gitlab CI成功安装fbprophet?

amazon-web-services - gitlab CI:加载 key 错误:格式无效

gitlab-ci - 如何在 Gitlab CI 中捕获结构化的 xUnit 测试输出?

gitlab - 使用另一个 GitLab 管道从一个 GitLab 管道触发特定阶段