首页 > 解决方案 > 创建合并请求启动管道

问题描述

在 gitlab.com 上创建问题以及新分支和合并请求直接触发 CI 管道启动。这出乎我的意料,因为新分支不包含任何更改。为什么会触发管道?

最好的,拉斯

标签: gitlab

解决方案


正如GitLab Pipeline 文档中所述,“每次提交或推送都会触发您的 CI 管道”。由于新的 git 分支是通过 push在远程存储库上创建的,因此在创建新分支时会触发管道。

理由:

乍一看,这种行为似乎是多余的,但 GitLab 允许您根据存储库的当前分支运行不同的作业;例如,您可以仅在主分支上运行“部署”作业。因此,从 GitLab 的角度来看,每次创建新分支时执行管道是有意义的。

更多信息可在此处获得:https ://docs.gitlab.com/ce/ci/yaml/README.html#only-and-except-simplified

在 GitLab 11.4 中引入,现在解释这种行为:

如果您将新分支或新标签推送到 GitLab,则策略始终评估为 true,并且 GitLab 将创建一个作业。此功能尚未与合并请求相关联,并且由于 GitLab 在用户创建合并请求之前创建管道,因此我们此时不知道目标分支。

如果没有目标分支,就不可能知道共同祖先是什么,因此我们总是在这种情况下创建一个作业。此功能最适合像 master 这样的稳定​​分支,因为在这种情况下,GitLab 使用分支中存在的先前提交与推送的最新 SHA 进行比较。

来源:https ://docs.gitlab.com/ee/ci/yaml/#only-changes


推荐阅读