合并请求从合并列车中删除,并显示“此管道没有阶段/作业”。

sfe*_*cik 8 gitlab gitlab-ci

当我单击Start merge train合并请求 (MR) 时,GitLab 会将以下内容添加到 MR 的系统注释中:

@sferencik 刚刚启动了合并列车

伟大的。然而,几秒钟后,以下内容被添加到系统注释中:

@sferencik 从合并队列中删除了此合并请求,因为此管道没有阶段/作业。现在

[强调我的]

管道列表没有新条目:合并列车甚至还没有启动。

GitLab 文档涉及到这一点。这个 GitLab 问题也讨论了这个问题,尽管是在不同的上下文中。

我究竟做错了什么?我已经把自己的能力削减.gitlab-ci.yml到最低限度,只留下一个阶段、一份工作,而且是无条件。我不明白为什么 GitLab 在执行了推测性合并后,应该创建一个“没有阶段/作业”的管道。

这不是构建问题:当我单击 时Start merge train,管道已在我的功能分支(我想要合并的分支)上成功。

另外,如果我关闭合并结果的管道,我的 MR 会有一个Merge按钮,并且Start merge train它工作得很好。

当我们从 GitLab 12.0 升级到 12.1 时,这种情况就开始发生。

sfe*_*cik 7

好的,所以这是由于我的错误:“合并请求的管道”功能要求每个作业都明确标记为

  rules:
    - if: $CI_PIPELINE_SOURCE == 'merge_request_event'
Run Code Online (Sandbox Code Playgroud)

我的工作没有这个明确的条件。(事实上​​,正如我上面所描述的,我小心翼翼地消除了工作中的所有条件。)

因此,当我点击 时Start merge train,仅使用具有上述条件的作业来实例化(或将)实例化一个新管道。就我而言,根本没有作业,因此出现错误消息:此管道没有阶段/作业。

可能的解决方案是:

  • 关闭预合并构建(设置>常规>合并请求>取消选中合并管道将尝试在合并之前验证合并后结果
  • 修改您的.gitlab-ci.yml,用rules:if条件标记每个作业(如果您想为 MR以及分支运行管道,请参阅此处了解其他条件)rules:if