如果知道 CI_BUILD_ID 和 CI_PROJECT_ID,如何得到:merge_request_iid?

How get : merge_request_iid if know CI_BUILD_ID and CI_PROJECT_ID?

我想创建由以下人员触发的工作 MERGE_REQUEST 并且存在 force_remove_source_branch 正确。

从 api

获取关于 force_remove_source_branch 的信息
curl --header "PRIVATE-TOKEN: ${API_ACCESS_TOKEN}" "$CI_GITLAB/projects/$CI_PROJECT_ID/merge_requests/$CI_OPEN_MERGE_REQUESTS/changes" | jq -r ".force_remove_source_branch"

对于 gitlab api 需要 CI_PROJECT_ID 和 CI_OPEN_MERGE_REQUESTS

CI_OPEN_MERGE_REQUESTS is merge_request_iid

我研究了很多管道

CI_PROJECT_ID存在就OK

但我找不到 merge_request_iid 的干净版本。 只需要 symantec variant

WD=/builds/projects/adv/ETL/mvp
See merge request projects/adv/ETL/mvp!18

如何简单地从管道获取 :merge_request_iid?

Predefined Variables Documentation 中存在一组 CI 个用于合并请求管道的变量。

具体来说,当管道源 ($CI_PIPELINE_SOURCE) 为 merge_request_event 时,$CI_MERGE_REQUEST_IID 变量是预定义变量,因此只要作业 运行s 用于 Merge Requests pipelines,这个变量就会存在。

这是合并请求管道的示例作业:

Example Job:
  stage: example
  rules:
    - if: $CI_PIPELINE_SOURCE === 'merge_request_event'
      when: always
    - when: never
  script:
    - echo $CI_MERGE_REQUEST_IID # prove that the Merge Request IID exists
    - curl --header "PRIVATE-TOKEN: ${API_ACCESS_TOKEN}" "$CI_GITLAB/projects/$CI_PROJECT_ID/merge_requests/$CI_MERGE_REQUEST_IID/changes" | jq -r ".force_remove_source_branch"

如果作业的 merge_request_event 来源的规则部分看起来有点像这样,则作业将 运行 用于 Merge Request Pipelines