Jos*_*lva 7 git github github-api
如何从提交哈希中获取 GitHub PR id?可以在 git 控制台或 GitHub API 中使用吗?
Poo*_*cha 10
使用 GitHub API (V3) 绝对是可能的。要获得 PR ID,您需要使用 GitHub Search Issues API 并首先找到 PR 编号,然后您可以使用 PR 编号查找 PR 编号。请注意,拉取请求将具有拉取请求 ID 和单独的问题 ID。
例如,假设您有一个提交 sha - 7dd1bcf5f2f5eeed34cc2ec63053098fba302b6c。要从此 sha 中找到 PR id,您可以执行以下操作:
第一步:使用commit sha查找PR号:使用Github搜索api-
https://api.github.com/search/issues?q=sha:7dd1bcf5f2f5eeed34cc2ec63053098fba302b6c。在 JSON 响应中,字段“number”代表 PR 编号(在本例中为 16),“ID”代表问题 ID(不是 PR ID)
第 2 步:使用 PR 编号和回购详细信息查找 PR ID。从步骤 1 中收到的 JSON 响应,我们可以构建以下内容 -
https://api.github.com/repos/lamassu/lamassu-admin/pulls/16. 在收到的 JSON 响应中,“ID”字段是所需的 PR ID。
我花了相当多的时间进行调查,结果如下。该解决方案仅使用基本的 Git 功能,不需要任何 GitHub 功能。打印拉取请求 ID 的简单 sh 行:
\ngit ls-remote origin \'pull/*/head\' | grep -F -f <(git rev-parse HEAD) | awk -F\'/\' \'{print $3}\'\nRun Code Online (Sandbox Code Playgroud)\n在 Groovy Jenkinsfile 中我正在执行以下操作:
\ndef gitCommitSHA = sh(returnStdout: true, script: \'git rev-parse HEAD\').trim()\ndef allPRs = sh(returnStdout: true, script: "origin \xe2\x80\x98pull/*/head\xe2\x80\x99")\nList result = allPRs.split( \'\\n\' ).findAll { it.contains(gitCommitSHA) && it.contains("refs/pull") }\nif (result.size() ==1 ){\n def str = result[0]\n def prId = str.substring(str.indexOf("pull")+5,str.lastIndexOf("head")-1)\n echo "Pull request id: ${prId}"\n}\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
7649 次 |
| 最近记录: |