【问题标题】:Merging a merge request with API and waiting for its pipeline to finish in Gitlab Ci将合并请求与 API 合并并等待其管道在 Gitlab Ci 中完成
【发布时间】:2022-11-07 21:08:06
【问题描述】:

我正在尝试编写一个 ci.yml 来自动创建一个合并请求并将其合并并等待管道成功。为此,我需要合并请求的管道 ID。但是我从合并调用的响应中收到的唯一管道 ID 是 .head_pipeline.id ,它是项目的最后一个管道 ID,而不是合并后的管道 ID。

我需要实际的管道 ID 来轮询状态。如果状态为“成功”,则作业将结束。

我努力了 :

`

PIPELINE_ID=`curl --silent -X PUT "${GITLAB_BASE_URL}/${SERVICE_PROJECT_ID}/merge_requests/${MERGE_REQUEST_IID}/merge" --header "Private-Token: ${PRIVATE_TOKEN}" --header "Content-Type: application/json" | jq .head_pipeline.id`

`

【问题讨论】:

    标签: gitlab gitlab-ci gitlab-api


    【解决方案1】:

    这是我找到的解决方案。合并后,我们可以在 rspBody 中找到“merge_commit_sha”作为属性。那么我们应该获取所有管道并找到与该属性匹配的管道。

    MERGE_COMMIT_SHA=`curl --silent -X GET "${GITLAB_BASE_URL}/${SERVICE_PROJECT_ID}/merge_requests/${MERGE_REQUEST_IID}" --header "Private-Token: ${PRIVATE_TOKEN}" --header "Content-Type: application/json" | jq -r .merge_commit_sha`
    PIPELINE_ID=$(curl --silent -X GET "${GITLAB_BASE_URL}/${SERVICE_PROJECT_ID}/pipelines" --header "Private-Token: ${PRIVATE_TOKEN}" | jq '.[] | select(.ref=='"$TARGET_BRANCH"') | select (.sha=='"$MERGE_COMMIT_SHA"') | .id')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-04
      • 2019-04-18
      • 2022-06-16
      • 2018-07-05
      • 2022-01-07
      • 1970-01-01
      • 2021-06-04
      • 2019-04-12
      相关资源
      最近更新 更多