【问题标题】:How can I do a fast-forward merge using the GitHub API?如何使用 GitHub API 进行快进合并?
【发布时间】:2019-09-11 23:48:18
【问题描述】:

我正在设置一个 Jenkins 流水线脚本,并在测试通过后使用对 GitHub 的 API 调用来执行合并和发布。

对于我的预期工作流程,我需要使用 Jenkinsfile 将我的 release-candidate 分支合并到我的 beta-release 分支中。这种合并应该始终是快进合并,因为这是工作进入beta-release 分支的唯一方式。重要的是不要创建合并提交,因为我会检查该分支中最新提交的 GitHub 状态以查看测试是否是最新的。

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

我尝试创建一个PR,然后将其与变基策略合并,但这也创建了一个合并提交。

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

【问题讨论】:

    标签: git jenkins github jenkins-pipeline github-api


    【解决方案1】:

    您实际上可以进行 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
    

    【讨论】:

      猜你喜欢
      • 2020-06-21
      • 2021-11-19
      • 1970-01-01
      • 2021-08-15
      • 2013-08-03
      • 1970-01-01
      • 1970-01-01
      • 2018-06-15
      • 2013-07-11
      相关资源
      最近更新 更多