如何从提交哈希中获取GitHub PR id?可以在git console或GitHub API中使用吗?
答案 0 :(得分:4)
使用GitHub API(V3)绝对可以。要获取PR ID,您需要使用GitHub Search Issues API并首先找到PR编号,然后您可以使用PR编号查找PR ID。请注意,pull请求将具有Pull Request ID和单独的Issue ID。
例如,假设您有一个提交sha - 7dd1bcf5f2f5eeed34cc2ec63053098fba302b6c
。要从此sha中查找PR ID,您可以执行以下操作:
步骤1:使用提交sha查找PR编号:使用Github搜索api
https://api.github.com/search/issues?q=sha:7dd1bcf5f2f5eeed34cc2ec63053098fba302b6c
。从JSON响应,字段'编号'代表PR号码(在这种情况下为16)和' ID'代表问题ID(不是PR ID)
步骤2:使用PR编号和repo详细信息查找PR ID。根据步骤1中收到的JSON响应,我们可以构建以下内容 -
https://api.github.com/repos/lamassu/lamassu-admin/pulls/16
。在收到的JSON响应中,字段“ID'是需要的PR ID。
答案 1 :(得分:0)
我花了很多时间来调查它,结果如下。简单的sh行打印拉请求ID:
git ls-remote origin ‘pull/*/head’ | grep -F -f <(git rev-parse HEAD) | awk -F’/' ‘{print $3}’
在Jenkinsfile中:
def gitCommitSHA = sh(returnStdout: true, script: 'git rev-parse HEAD').trim()
def allPRs = sh(returnStdout: true, script: "origin ‘pull/*/head’")
List result = allPRs.split( '\n' ).findAll { it.contains(gitCommitSHA) && it.contains("refs/pull") }
if (result.size() ==1 ){
def str = result[0]
def prId = str.substring(str.indexOf("pull")+5,str.lastIndexOf("head")-1)
echo "Pull request id: ${prId}"
}
答案 2 :(得分:-1)
例如,提交SHA是:7dd1bcf5f2f5eeed34cc2ec63053098fba302b6c
is:pr is:closed 7dd1bcf5f2f5eeed34cc2ec63053098fba302b6c
如果PR未关闭,则卸下is:closed