You need to enable JavaScript to run this app. 如何在.gitlab-ci.yml中获取GitLab CI流水线的MR编号?
优惠活动
大模型
产品
解决方案
定价
更多

如何在.gitlab-ci.yml中获取GitLab CI流水线的MR编号?

实现方案

GitLab已提供对应的预定义变量,仅当CI流水线为合并请求事件触发时会自动注入,你可以按以下场景使用:

场景1:流水线直接由MR事件触发

你可以直接使用内置变量CI_MERGE_REQUEST_IID,该变量的值就是当前MR在项目内的编号(即MR访问路径末尾的数字)。如果需要GitLab全局唯一的MR ID,可以使用CI_MERGE_REQUEST_ID变量。

配置示例

print_mr_iid:
  script:
    - echo "当前MR编号为 $CI_MERGE_REQUEST_IID"
  # 仅在MR事件触发的流水线中运行,确保变量存在
  rules:
    - if: $CI_PIPELINE_SOURCE == 'merge_request_event'

注意:CI_MERGE_REQUEST_IID变量需要GitLab 11.6及以上版本支持。


场景2:普通分支推送流水线需要获取关联MR编号

如果你的流水线是推送到分支时触发,而非MR事件触发,需要调用GitLab OpenAPI查询当前分支关联的MR编号,操作步骤如下:

  1. 在GitLab项目设置中创建拥有项目只读权限的访问令牌,将其存为CI变量,命名为PROJECT_API_TOKEN
  2. 参考以下配置编写job:
query_mr_iid:
  script:
    # 查询当前打开的、源分支为当前分支的MR,提取MR编号
    - MR_IID=$(curl --header "PRIVATE-TOKEN: $PROJECT_API_TOKEN" "https://<你的GitLab服务域名>/api/v4/projects/$CI_PROJECT_ID/merge_requests?source_branch=$CI_COMMIT_REF_NAME&state=opened" | jq '.[0].iid')
    - echo "当前分支关联的MR编号为 $MR_IID"
  only:
    - branches

内容的提问来源于stack exchange,提问作者TheWaterProgrammer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.19 22:15:04