将合并请求与API合并,并在Gitlab Ci中等待其管道完成



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

我需要实际的管道id来轮询状态。如果状态是"0";"成功";,作业将结束。

我试过了:

`

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`

`

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

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')

最新更新