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

Gan*_*anu 6 gitlab-ci gitlab-ci-runner

我希望仅当有合并请求时才启动 Gitlab 管道。不在对任何分支的提交上。

only:
 refs:
  - merge_requests
changes:
  - "**/*.json"   except:
  - $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME == "master"
  - $CI_COMMIT_REF_NAME == "master"
Run Code Online (Sandbox Code Playgroud)

但是当我创建合并请求时,会启动两个管道请求。一个为

  • 分离的合并请求管道:这是在创建合并请求(尚未批准)时启动的。我希望这条管道运行被阻止。但这次运行已填充所有 MR 变量。

仅供参考,我有一些设置变量值的规则,并阅读这导致了此问题。我尝试了下面提到的方法:( https://gitlab.com/gitlab-org/gitlab/-/issues/201845 ) 来阻止分离管道并且它有效。但现在我无法访问 MR 变量。

workflow:
  rules:
    - if: $CI_MERGE_REQUEST_IID
    - if: $CI_OPEN_MERGE_REQUESTS
      when: never
Run Code Online (Sandbox Code Playgroud)
  • 合并分支管道:这是在合并完成/批准后启动的。我只想启动这条管道。但在此分支上,所有合并请求变量 - CI_MERGE_REQUEST_SOURCE_BRANCH_NAME 和 CI_MERGE_REQUEST_TARGET_BRANCH_NAME 均为空。

如何实现以下目标:

阻止分离分支请求的管道运行并获取合并分支管道运行的 MR 变量?

更新 1:我在设置上启用了合并结果管道并删除了 MERGE_REQUEST_IID 规则。现在合并结果管道正在运行而不是分离,但合并结果管道在合并被批准之前正在执行?抱歉,这很令人困惑。是否有办法仅在合并获得批准后启动管道并访问该管道运行中的 MR 变量?

syt*_*ech 5

如预定义变量文档中所述,配置后,合并请求变量仅存在于为 MR 运行的合并请求管道中。

运行在合并分支上的管道只是一个普通的分支管道,因此不会有这些变量。您不能在合并分支管道中使用这些变量。