2017-08-11 24 views
0

コミットハッシュからGitHub PR IDを取得するにはどうすればよいですか? gitコンソールまたはGitHub APIで可能ですか?コミットハッシュからGitHubプルリクエストID

+0

にStackOverflowへようこそ、読み取りに時間がかかるしてください[良い質問をする方法](https://でstackoverflowのシンプルSHラインは、プルリクエストIDを印刷します.com/help/how-to-ask) – LazerBanana

答えて

1

GitHub API(V3)を使用することは間違いありません。 PR IDを取得するには、GitHub Search Issues APIを使用し、最初にPR番号を見つけて、そのPR番号を使用してPR IDを見つける必要があります。プルリクエストにはプルリクエストIDと別の問題IDがあることに注意してください。

たとえば、コミットsha-7dd1bcf5f2f5eeed34cc2ec63053098fba302b6cがあるとします。このシャーシからPR IDを見つけるには、次の操作を実行します。

ステップ1:コミットシャーを使用してPR番号を検索する:Github検索api- https://api.github.com/search/issues?q=sha:7dd1bcf5f2f5eeed34cc2ec63053098fba302b6cを使用します。 JSONレスポンスから、フィールド 'number'はPR番号(この場合は16)を表し、 'ID'はissue ID(PR IDではなく)を表します。

ステップ2:PR番号とレポの詳細を使用してPR ID。手順1で受け取ったJSON応答から、 https://api.github.com/repos/lamassu/lamassu-admin/pulls/16を作成できます。受け取ったJSON応答では、フィールド 'ID'は必要なPR IDです。

0

私はそれを調査する時間の降下を費やしており、結果はここにあります。

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}" 
} 
+0

ありがとうございます。それは私のためにとても有益でした。本当にありがとう –

関連する問題