Gitlab CI/CD合并请求 - CI_MERGE_REQUEST_SOURCE_BRANCH_NAME和目标分支名称为空

6
我希望Gitlab流水线只在合并请求时启动,不要在任何分支的提交上启动。
only:
 refs:
  - merge_requests
changes:
  - "**/*.json"   except:
  - $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME == "master"
  - $CI_COMMIT_REF_NAME == "master"

但是当我创建合并请求时,会启动两个管道请求。一个是独立的合并请求管道:这个是在合并请求被创建时启动的(还未批准)。我想要阻止此管道运行。但是这个运行已经填充了所有MR变量。 FYI,我有一些规则来设置变量值和读取这些值导致了这个问题。我尝试了以下方法,如此处所述:https://gitlab.com/gitlab-org/gitlab/-/issues/201845 来阻止独立管道的运行,它有效了。但现在我没有办法访问MR变量。
workflow:
  rules:
    - if: $CI_MERGE_REQUEST_IID
    - if: $CI_OPEN_MERGE_REQUESTS
      when: never
  • 合并分支pipeline: 在合并完成/批准后启动。我只希望启动这个pipeline。但在这个分支上,所有的合并请求变量 - CI_MERGE_REQUEST_SOURCE_BRANCH_NAME和CI_MERGE_REQUEST_TARGET_BRANCH_NAME都是空的。

如何实现以下内容:

阻止Detached分支请求的pipeline运行,并获取合并分支pipeline运行的MR变量?

更新1:我在设置中启用了合并结果pipeline,并删除了MERGE_REQUEST_IID规则。现在,合并结果pipeline正在运行,而不是Detached,但合并结果pipeline在批准之前执行?对不起,这很令人困惑。是否有任何方法可以在合并获得批准后仅启动pipeline,并在该pipeline运行中访问MR变量?

1个回答

5
预定义变量文档中所述,合并请求变量仅适用于已配置的运行于MR的合并请求流水线,而运行于合并后分支的流水线则为普通分支流水线,因此不包含这些变量。在合并后分支流水线中无法使用这些变量。请注意保留HTML标签。

“Detached merge request pipeline”是唯一一个可以访问MR变量的管道运行吗? - Ganu
@Ganu 是的,那样做或其他合并请求管道,包括合并结果管道(如合并火车) 。 - sytech
如何阻止Detached合并请求管道,只运行已合并的RESULT管道? - Ganu
@Ganu 我的理解是,当您启用合并结果管道时,默认行为是启用合并结果管道,除非在文档中描述的两种情况下。在这两种特殊情况下,它将回退到一个分离的合并请求管道。 - sytech
我刚刚在设置中启用了合并结果管道。为什么合并结果管道在合并之前就执行了呢?抱歉这很令人困惑。有没有办法在合并批准后仅启动管道,并在该管道运行中访问MR变量? - Ganu
@Ganu,如果您只想在批准后(但未合并)运行流水线,则可以创建作业或工作流规则,仅在 $CI_MERGE_REQUEST_APPROVED 为 true 时运行。但是,您无法获取由于_合并_流水线而创建的任何流水线的这些变量;它始终只是一个普通的分支流水线,并且无法访问 MR 变量(如答案中所述)。 - sytech

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接