如何使用GitHub API进行快进合并?

如何使用GitHub API进行快进合并?,git,jenkins,github,jenkins-pipeline,github-api,Git,Jenkins,Github,Jenkins Pipeline,Github Api,我正在设置Jenkins管道脚本,并使用对GitHub的API调用在测试通过后执行合并和发布 对于我预期的工作流程,我需要使用Jenkins文件将我的发布候选分支合并到我的beta发布分支中。这种合并应该始终是一种快进合并,因为这是工作进入beta版本分支的唯一方式。不创建合并提交是很重要的,因为我检查该分支中最新提交的GitHub状态,以查看测试是否是最新的 我尝试了,但它总是创建一个合并提交 我试着创建一个合并提交,然后将其与rebase策略合并,但这也创建了一个合并提交 是否可以使用Git

我正在设置Jenkins管道脚本,并使用对GitHub的API调用在测试通过后执行合并和发布

对于我预期的工作流程,我需要使用Jenkins文件将我的
发布候选
分支合并到我的
beta发布
分支中。这种合并应该始终是一种快进合并,因为这是工作进入
beta版本
分支的唯一方式。不创建合并提交是很重要的,因为我检查该分支中最新提交的GitHub状态,以查看测试是否是最新的

我尝试了,但它总是创建一个合并提交

我试着创建一个合并提交,然后将其与rebase策略合并,但这也创建了一个合并提交


是否可以使用GitHub API执行快进合并?

您实际上可以执行ref更新而不是合并

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