Spa*_*ark 2 git github github-api jenkins jenkins-pipeline
我正在设置 Jenkins 管道脚本,并使用对 GitHub 的 API 调用来在测试通过后执行合并和发布。
对于我预期的工作流程,我需要使用 Jenkinsfile 将我的release-candidate
分支合并到我的beta-release
分支中。这种合并应该始终是快进合并,因为这是工作进入分支的唯一方式beta-release
。重要的是不要创建合并提交,因为我会检查该分支中最新提交的 GitHub 状态以查看测试是否是最新的。
我尝试了合并 API 调用,但它总是创建合并提交。
我尝试创建一个PR,然后将其与 rebase 策略合并,但这也创建了一个合并提交。
是否可以使用 GitHub API 执行快进合并?
小智 5
您实际上可以进行引用更新而不是合并。
status=$(curl --write-out %{http_code} -H "Content-Type: application/json" -H "Authorization: token ${GITHUB_TOKEN}" -X PATCH https://api.github.com/repos/:owner/${REPO}/git/refs/heads/${BASE} \
-d '{ "sha": $(curl -H "Content-Type: application/json" -H "Authorization: token ${GITHUB_TOKEN}" -X GET https://api.github.com/repos/:owner/${REPO}/git/refs/heads/${HEAD} | jq .object.sha ), "force": false }')
# In case of non-fast-forward case create a pull request
if (( $status != 200 )); then
curl -H "Content-Type: application/json" -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/:owner/${REPO}/pulls \
-d '{ "title": "Great pull request", "body": "Please check this non-fast-forward merge", "head": "${HEAD}", "base": "${BASE}" }'
fi;
params:
REPO, BASE, HEAD, GITHUB_TOKEN
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1549 次 |
最近记录: |