2017-08-11 2 views

Antwort

1

Mit GitHub API (V3) ist es definitiv möglich. Um die PR ID zu erhalten, müssen Sie die GitHub Search Issues API verwenden und zuerst die PR Nummer finden und dann können Sie die PR Nummer verwenden, um die PR ID zu finden. Beachten Sie, dass eine Pull-Anforderung eine Pull-Request-ID und eine separate Issue-ID aufweist.

Angenommen, Sie haben eine Festschreibung sha - 7dd1bcf5f2f5eeed34cc2ec63053098fba302b6c. Um die PR-ID von diesem sha finden Sie folgendes tun:

Schritt 1: Finden Sie die PR-Nummer die sha begehen: Sie verwenden die Github suchen API- https://api.github.com/search/issues?q=sha:7dd1bcf5f2f5eeed34cc2ec63053098fba302b6c. Von der JSON-Antwort repräsentiert das Feld "Nummer" die PR-Nummer (in diesem Fall 16) und "ID" die Ausgabe-ID (nicht PR-ID)

Schritt 2: Verwenden Sie die PR-Nummer und die Repo-Details, um den PR zu finden ICH WÜRDE. Aus der in Schritt 1 erhaltenen JSON-Antwort können wir folgendes aufbauen: https://api.github.com/repos/lamassu/lamassu-admin/pulls/16. In der empfangenen JSON-Antwort ist das Feld "ID" die erforderliche PR-ID.

0

Ich habe den Abstieg viel Zeit damit verbracht, es zu untersuchen und hier sind die Ergebnisse. Einfache sh Linie Pull-Request-ID drucken:

git ls-remote origin ‘pull/*/head’ | grep -F -f <(git rev-parse HEAD) | awk -F’/' ‘{print $3}’ 

Und in 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

danke. Es war so hilfreich für mich. Wirklich danke –