Gibt es eine Möglichkeit, den Jenkins-Build-Status auf GitHub Readme.md meines Projekts anzuzeigen?
Ich verwende Jenkins, um kontinuierliche Integrations-Builds auszuführen. Nach jedem Commit wird sichergestellt, dass alles kompiliert sowie Unit- und Integrationstests ausgeführt werden, bevor schließlich Dokumentations- und Release-Bundles erstellt werden.
Es besteht immer noch die Gefahr, dass versehentlich etwas begangen wird, das den Build zerstört. Für Benutzer, die die GitHub-Projektseite besuchen, ist es gut zu wissen, dass sich der aktuelle Master in diesem Status befindet.
Antworten:
Ok, hier ist, wie Sie Jenkins so einrichten können, dass GitHub-Build-Status festgelegt werden. Dies setzt voraus, dass Sie Jenkins bereits mit dem GitHub-Plugin haben, das so konfiguriert ist, dass es bei jedem Push Builds ausführt.
Gehen Sie zu GitHub, melden Sie sich an, gehen Sie zu Einstellungen , Persönliche Zugriffstoken und klicken Sie auf Neues Token generieren .
Überprüfen Sie den Repo: Status (ich bin nicht sicher, ob dies notwendig ist, aber ich habe es getan und es hat bei mir funktioniert).
Generieren Sie das Token, kopieren Sie es.
Stellen Sie sicher, dass der GitHub-Benutzer, den Sie verwenden möchten, ein Repository-Mitarbeiter (für private Repos) oder Mitglied eines Teams mit Push- und Pull-Zugriff (für Organisations-Repos) auf die Repositorys ist, die Sie erstellen möchten.
Gehen Sie zu Ihrem Jenkins-Server und melden Sie sich an.
Wählen Sie unter GitHub Web Hook die Option Lass Jenkins Hook-URLs automatisch verwalten und geben Sie dann Ihren GitHub- Benutzernamen und das OAuth-Token an, das Sie in Schritt 3 erhalten haben.
Stellen Sie sicher, dass es mit der Schaltfläche Test Credential funktioniert . Speichern Sie die Einstellungen.
Suchen Sie den Jenkins-Job und fügen Sie den Build-Status für GitHub-Commit zu den Schritten nach dem Build hinzu
Das ist es. Führen Sie nun einen Testaufbau durch und gehen Sie zum GitHub-Repository, um zu sehen, ob es funktioniert hat. Klicken Sie auf der Haupt-Repository-Seite auf Zweige , um den Build-Status anzuzeigen.
Sie sollten grüne Häkchen sehen:
quelle
In der Zwischenzeit hat sich die Benutzeroberfläche von Jenkins und GitHub etwas geändert, und ich habe eine Weile gebraucht, um herauszufinden, wie Jenkins jetzt richtig konfiguriert werden kann. Die Erklärung hier basiert auf Jenkins Version 2.121.1.
Ich gehe auch davon aus, dass Sie Ihren Jenkins-Job bereits so konfiguriert haben, dass er durch einen Webhook oder durch Abfragen ausgelöst wird. Das sind die Schritte, die ich unternommen habe, um es zum Laufen zu bringen:
repo:status
Configure System
und fügen Sie das OAuth-Geheimnis als GitHub-Server hinzu. Verwenden Sie esSecret Text
als Authentifizierungsmethode, um das OAuth-Geheimnis dort abzulegen.Set GitHub commit status
Als Post-Build-Aktion hinzufügen . Setzen Sie das Statusergebnis aufOne of the default messages and statuses
.Konfigurieren Sie Github
Konfigurieren Sie Jenkins
Konfigurieren Sie Jenkins Job
Ergebnis
Sie sehen nun den Status Ihrer Commits und Filialen:
quelle
Manage Hooks
Kästchen ist hervorgehoben, aber in den obigen Bildern nicht angekreuzt. Bedeutet das, dass es beim Speichern deaktiviert sein sollte?Was ich getan habe, ist ganz einfach:
Fügen Sie ein Post-Task-Plugin hinzu, das immer zum Erfolg führt
Fügen Sie ein Post-Task-Plugin hinzu, das einen Fehler verursacht, wenn "Build als Fehler markiert".
Sie können zu Beginn der Tests auch einen ausstehenden Anruf hinzufügen
quelle
sh
withCredentials
Dieses Plugin sollte funktionieren: https://wiki.jenkins-ci.org/display/JENKINS/Embeddable+Build+Status+Plugin
Sie sollten in der Lage sein, solche Abzeichen in Ihre
README.md
Datei einzubetten :quelle
Mit der Commit Status API können Sie die " Repo Statuses API " anzeigen .
Und seit dem 26. April 2013 können Sie den Build-Status auf Ihrer GitHub-Repo-Zweigstellenseite sehen :
Das heißt, es ist eine andere Möglichkeit, durch Aufrufen der GitHub-Projektseite diese Status anzuzeigen, anstatt nur Jenkins zu haben.
Ab dem 30. April 2013 wurde der API-Endpunkt für Festschreibungsstatus erweitert, um Zweig- und Tag-Namen sowie Festschreibungs-SHAs zuzulassen .
quelle
curl
( developer.github.com/v3/repos/statuses/… )Es gibt auch dieses Plugin, das Ihnen eine Badge-URL gibt, die Sie in Ihrer README.md posten können und die so aussieht
https://wiki.jenkins-ci.org/display/JENKINS/Embeddable+Build+Status+Plugin
quelle
Wenn Sie ein
Github
Plugin auf Ihrem installiert habenJenkins
, können Sie dies folgendermaßen tunPost build actions
:quelle
Fügen Sie die folgende Zeile in Ihre README.md ein und ändern Sie beide URLs entsprechend Ihrem Jenkins-Projekt.
quelle
In Bezug auf die Einrichtung des geschützten Zweigs von Jenkins und GitHub. Ich verwende Jenkins 2.6 und dies sind die Schritte, die ich ausgeführt habe, damit es funktioniert:
Auf der GitHub-Webseite Ihres Repositorys:
Auf dem Jenkins-Server: (Stellen Sie sicher, dass Sie das Git- und GitHub-Plugin installiert haben.)
Stellen Sie außerdem sicher, dass das von Ihren Jenkins verwendete GitHub-Konto ein Mitarbeiter für das Repository ist. Ich habe es mit Schreibberechtigungsstufe eingestellt.
Hoffe das hilft.
quelle
Ich folgte den Anweisungen von Alex und es funktionierte.
Für GitHub Enterprise müssen Sie jedoch die API-URL ändern, wenn Sie den Server zu Jenkins hinzufügen.
Wenn Ihr Unternehmen beispielsweise creditcard.com ist, lautet Ihre URL
https://github.creditcard.com/api/v3/
quelle
Aktualisiert regelmäßig Ihren Github-Commit-Status (wie oben von @vonc beschrieben). Leider muss die Repo-Status-API noch implementiert werden
quelle
Bearbeiten:
Ich verwende diesen Ansatz nicht mehr. Bitte verwenden Sie eine der anderen Antworten.
Update: Was ich letztendlich für unseren speziellen Fall getan habe: (Die obigen Antworten waren großartig - danke!)
Da sich unser Build-Server nicht im Internet befindet, haben wir ein Skript, um den Build-Status im gh-pages-Zweig in github zu veröffentlichen.
GitHub speichert Images zwischen, daher haben wir eine .htaccess-Datei erstellt, die ein kurzes Cache-Timeout für das Build-Status-Image anweist.
Legen Sie dies in das Verzeichnis mit dem Build-Status-Image:
Hier ist das Build-Skript. Das Ziel, das auf gh-pages veröffentlicht wird , ist '--publish.site.dry.run'.
Mit weniger als 400 Konfigurationszeilen haben wir:
. . und dieses Skript kann in oder außerhalb von Jenkins ausgeführt werden, so dass:
Die Ergebnisse:
Die Hauptseite des Projekts enthält den Build-Status, der nach jedem Build aktualisiert wird, sowie die neuesten API-Dokumente, Testergebnisse und Testabdeckung.
quelle