2016-11-02 3 views
2

Ich möchte automatisch (d. H. Von Jenkins) eine GitHub Pull-Anfrage zusammenführen, die von einer Person genehmigt wurde und erfolgreich getestet wurde; in anderen Worten, wenn alle drei dieser Markierungen sind grün:Automatisch verifizierte und getestete GitHub Pull Requests

Ist das möglich? Ich habe keine Dokumentation zu einer API für GitHubs neue "change approved" -Code-Review-Funktionalität gefunden.

+1

Dank der Antwort von @kfb habe ich ein [NodeJS-Skript] (https://github.com/dgmltn/EggTimer) geschrieben, um dies zu tun: höre GitHub und füge automatisch ein, wenn du fertig bist. – dgmltn

Antwort

5

Es gibt eine neue PullRequestReviewEvent webhook, die ausgelöst wird, wenn eine Überprüfung in einem nicht ausstehenden Status gesendet wird. Der Hauptteil des Webhooks enthält das Feld ["review"]["state"], das approved lautet, wenn alle Überprüfer die Änderungen genehmigt haben (d. H. Wenn Sie das grüne Häkchen für genehmigte Änderungen in der Benutzeroberfläche erhalten).

Kombinieren Sie dies mit den StatusEvent für den Kopf SHA Ihre Pull-Anforderung die Statusüberprüfungen von CI und so weiter zu erhalten, überprüfen dann schließlich die „Merge-Fähigkeit“ des Pull durch requesting the pull request from the API:

GET /repos/:owner/:repo/pulls/:number 

Wenn Sie alle drei Dinge haben, können Sie merge the pull request mit:

PUT /repos/:owner/:repo/pulls/:number/merge 

und entsprechende Nutzlast Parameter. Beachten Sie, dass Sie die Accept: application/vnd.github.polaris-preview+json für einige der Payload-Parameter benötigen, wie sie in einem Vorschauzeitraum sind.

+0

Danke, Mann, das hat viel gefunden –

+0

Ist das möglich, dies über einfache API-Aufrufe zu erreichen? Ich möchte ein CLI-Programm erstellen, das Args wie Repo-Name, Pr-ID, die für den Status eines PR überprüfen und es basierend auf einem Status aus der API-Antwort statt auf einem ereignisbasierten Hook –

+0

Sie können lesen Die Ereignisse, die die [Issue Timeline API] verwenden (https://developer.github.com/v3/issues/timeline/), obwohl ich diese API selbst nicht verwendet habe, kann daher keinen spezifischen Ratschlag geben, wie man was erreicht Du bist hinterher. – kfb

Verwandte Themen