Wie kann ich Jenkins CI mit Git-Trigger auf Pushs zum Master machen?

Lesezeit: 7 Minuten

Wie kann ich Jenkins CI mit Git Trigger auf Pushs zum
Ziggy

Ich versuche, Jenkins-ci für ein Projekt mit GitHub einzurichten. Jenkins habe ich bereits mit den passenden Plugins eingerichtet. Ich möchte, dass Jenkins Build-Skripte nur dann ausführt, wenn jemand im Projekt zum Master pusht. Bisher konnte ich es so einrichten, dass ein Build immer dann ausgelöst wird, wenn jemand irgendwo hindrückt, aber das ist zu weit gefasst. Ich habe dies mit Post-Receive-Service-Hooks auf Git gemacht.

Ich habe das Jenkins-Wiki und ein paar Tutorials gelesen, aber dieses spezielle Detail fehlt … hat es vielleicht etwas mit Polling zu tun? Oder sollte auf der Git-Seite gearbeitet werden, damit Git Jenkins nur triggert, wenn master ist geändert?

  • Der ursprüngliche Autor von Jenkins, Kohsuke Kawaguchi, beschreibt, wie Push-Benachrichtigungen aus dem Repository mit dem Git-Plugin Git-Plugin 1.1.14 durchgeführt werden. Sehen kohsuke.org/2011/12/01/…

    – Gerald Scott

    27. Januar 2012 um 13:09 Uhr

Wie bereits angemerkt von gezzt in seinem Kommentar gibt es inzwischen eine gute Lösung (beschrieben in Polling muss sterben: Auslösen von Jenkins-Builds von einem Git-Hook):

  • Setzen Sie den Build-Trigger des Jenkins-Jobs auf SCM abfragenaber tun nicht einen Zeitplan angeben.

  • Erstellen Sie einen Post-Receive-Trigger von GitHub, um die URL zu benachrichtigen

    http://yourserver/jenkins/git/notifyCommit?url=<URL of the Git repository>?token=<get token from git to build remotely>
    
  • Dadurch werden alle Builds ausgelöst, die das angegebene Git-Repository abfragen.

  • Beim Polling wird jedoch tatsächlich überprüft, ob etwas an den verwendeten Zweig gepusht wurde.

Es funktioniert perfekt.

  • Das hat auch bei mir super funktioniert, Sie können den gleichen Ansatz mit einer lokalen Gitorious-Installation verwenden: cweiske.de/tagebuch/gitorious-post-receive-hook-2.htm

    – Justin Smith

    18. November 2013 um 20:04 Uhr

  • Funktioniert auch mit dem POST-Hook von Bitbucket (nicht Jenkins). Um Authentifizierungsdaten anzugeben, können Sie verwenden user:[email protected]/git/notifyCommit?url=… als URL.

    – Loevborg

    7. Mai 2014 um 7:26 Uhr


  • Kann es so konfiguriert werden, dass jenkins nur die Bibliotheken/Projekte erstellt, die vom letzten Push auf das Repo betroffen sind? Nicht die ganze Filiale nochmal aufbauen?

    – Croolmann

    31. März 2017 um 9:55 Uhr


  • Können Sie diesen Teil erläutern? “Erstellen Sie einen Github-Post-Receive-Trigger, um die URL zu benachrichtigen”

    – Tauwald

    22. September 2017 um 15:06 Uhr

  • Ich gehe davon aus, dass github in der Lage sein muss, Ihre Jenkins-Instanz zu erreichen, was bedeutet, dass sie öffentlich zugänglich sein muss. Ist es möglich, dies mit einem nicht öffentlichen Jenkins-Server zum Laufen zu bringen?

    – A. Murray

    9. Februar 2018 um 22:23 Uhr

Wie kann ich Jenkins CI mit Git Trigger auf Pushs zum
docwas

Ab Version 0.5 kann das GitHub-Plugin für Jenkins einen Build auslösen, wenn eine Änderung an GitHub gepusht wird.

  • @asveikau — Die ursprüngliche Frage betraf Github.

    – dokwas

    3. März 2014 um 17:09 Uhr

  • Das ist keine gute Lösung, da es den Build unabhängig davon auslöst, welcher Zweig gepusht wurde.

    – Shannon

    5. April 2017 um 17:00 Uhr

  • Tatsächlich sieht es so aus, als würde es dem Branch-Spezifizierer in den Git-Plugin-Einstellungen gehorchen, wenn Sie “Poll SCM” aktivieren (kein Zeitplan erforderlich).

    – Shannon

    5. April 2017 um 17:37 Uhr

  • Das mag zwar zutreffen, löst den Build aber immer noch falsch aus, wenn kein Arbeitsbereich vorhanden ist („Arbeitsbereich ist offline. Scheduling a new build to get a workspace. (nonexisting_workspace) Done. Took 0 ms Changes found“). Siehe auch issue.jenkins-ci.org/browse/JENKINS-18079

    – Shannon

    15. Mai 2017 um 18:32 Uhr

  • Die Das GitHub-Plugin listet das Git-Plugin als Abhängigkeit auf. Die wiki sagt: “Beim Erstellen eines Jobs geben Sie die URL unter “Github-Projekt” an und wählen Sie Git URL angeben unter “Quellcodeverwaltung” aus. Es heißt: “Dieser Trigger kickt nur den internen Polling-Algorithmus des Git-Plugins für jedes eingehende Ereignis gegen das übereinstimmende Repo.” Ich denke das bedeutet, dass es den Poll SCM so ziemlich wie in der akzeptierten Antwort macht, aber es hat Optionen zum automatischen Einrichten des Webhook und ein paar andere Funktionen.

    – Dosierungssache

    22. März 2018 um 8:29 Uhr


1646646493 905 Wie kann ich Jenkins CI mit Git Trigger auf Pushs zum
Wei Wang

Anstatt zu triggern baut Ändern Sie aus der Ferne Ihre Jenkins-Projektkonfiguration, um Builds durch Abfragen auszulösen.

Jenkins kann basierend auf einer festen internen oder einer URL abfragen. Letzteres ist das, was Sie Builds überspringen möchten, wenn es keine Änderungen für diesen Zweig gibt. Die genauen Daten sind dabei die Dokumentation. Im Wesentlichen müssen Sie nur die Option „Poll SCM“ aktivieren, den Zeitplanabschnitt leer lassen und eine Remote-URL so festlegen, dass sie auf JENKINS_URL/job/name/polling trifft.

Ein Fallstrick, wenn Sie eine gesicherte Jenkins-Umgebung haben, ist anders /buildder /polling URL erfordert Authentifizierung. Die Anleitungen Hier Einzelheiten haben. Zum Beispiel habe ich einen GitHub-Post-Receive-Hook, der zu geht username:[email protected]_URL/job/name/polling.

1646646493 434 Wie kann ich Jenkins CI mit Git Trigger auf Pushs zum
ötus

Zum GitLabverwenden Sie diese Schritte:

  1. Gehen Sie zu den Einstellungen Ihres Projekts → Web-Hooks
  2. Geben Sie die “Build Now”-URL aus Ihrem Jenkins-Projekt als Push-Ereignis-URL ein:

    http://server.com/jenkins/job/project_name/build?delay=0sec zum Beispiel

  3. Klicken Add Web Hook und dann test hook

Dann wird jedes Mal, wenn Sie sich an das Repository übergeben, der Web-Hook ausgelöst und ein Build erstellt. Achten Sie darauf, Ihren Jenkins-Arbeitsbereich auf einzustellen delete workspace before each build Sie erhalten also eine frische Kopie des neuen Codes.

1646646493 479 Wie kann ich Jenkins CI mit Git Trigger auf Pushs zum
Krishnam

Nicht mit Git verwandt, aber im Folgenden werde ich bei der Jenkins-Jobkonfiguration mit Mercurial im Detail helfen. Vielleicht hilft es anderen mit einem ähnlichen Problem.

  1. Installieren Sie das URL-Trigger-Plugin
  2. Gehen Sie zur Jobkonfigurationsseite und wählen Sie aus Poll SCM Möglichkeit. Stellen Sie den Wert auf ein * * * * *
  3. Aktivieren Sie die Option: [URLTrigger] - Poll with a URL. Jetzt können Sie einige Optionen wie Änderung des Änderungsdatums, URL-Inhalt usw. auswählen.
  4. Wählen Sie in den Optionen URL-Inhalt ändern, erste Option auswählen – Monitor change of content
  5. Speichern Sie die Änderungen.

Lösen Sie nun einige Änderungen am Mercurial-Repository durch einige Test-Check-Ins aus.

Sehen Sie, dass der Jenkins-Job jetzt ausgeführt wird, indem Sie die SCM-Änderungen erkennen. Wenn der Build aufgrund von Mercurial-Änderungen ausgeführt wird, wird Text angezeigt Started by an SCM change. Andernfalls der Benutzer, der es manuell gestartet hat.

1646646494 857 Wie kann ich Jenkins CI mit Git Trigger auf Pushs zum
Peter Mortensen

Ich hoffe das hilft: So lösen Sie einen Jenkins-Build auf Git-Commit aus

Es ist nur eine Frage der Verwendung von curl, um einen Jenkins-Job mithilfe der von Git bereitgestellten Git-Hooks auszulösen.

Der Befehl curl http://localhost:8080/job/someJob/build?delay=0sec kann einen Jenkins-Job ausführen, wo someJob ist der Name des Jenkins-Jobs.

Suchen Sie in Ihrem versteckten .git-Ordner nach dem Ordner „hooks“. Benennen Sie die Datei „post-commit.sample“ in „post-commit“ um. Öffnen Sie es mit Notepad, entfernen Sie die Zeile „: Nothing“ und fügen Sie den obigen Befehl ein.

Das ist es. Immer wenn Sie einen Commit durchführen, löst Git die in der Datei definierten Post-Commit-Befehle aus.

1646646494 857 Wie kann ich Jenkins CI mit Git Trigger auf Pushs zum
Peter Mortensen

Kontinuierliche Integration mit Jenkins, nachdem der Code vom Git-Befehl/der GUI in das Repository gepusht wurde:

  1. Erstellen Sie einen Job in Jenkins mit nur dem Jobnamen und wählen Sie den Typ der Projektkür aus. Klicken OK. Die nächste Seite fügt nichts hinzu – klicken Sie einfach Speichern.
  2. Gehen Sie zu Ihrem lokalen Git-Repository, in dem Sie den Quellcode haben, und navigieren Sie zu der .git/hooks Mappe.
  3. Die hooks Ordner enthält die wenigen Dateien. Suchen Sie nach dem “Post-Commit”. Wenn nicht vorhanden, erstellen Sie eine Datei “post-commit” ohne Dateierweiterung:

    C:\work\test\\.git\hooks\post-commit
    
  4. Bearbeiten Sie die „post-commit“-Datei mit dem folgenden Befehl. Stellen Sie sicher, dass es in Ihrem lokalen Quellcode-Hooks-Ordner vorhanden ist.

    curl -u userName:apiToken -X POST http://localhost:8080/jenkins/job/jobName/build?token=apiToken
    

    Beispiel:

    curl -u admin:f1c55b3a07bb2b69b9dd549e96898384 -X POST http://localhost:8080/jenkins/job/Gitcommittest/build?token=f1c55b3a07bb2b69b9dd549e96898384
    

    5.

    userName: Jenkins-Benutzername

    jobName: Jobname des Builds

    apiToken: Um Ihr API-Token zu erhalten, gehen Sie zu Ihrer Jenkins-Benutzerseite (oben rechts in der Benutzeroberfläche). Es ist im Menü “Konfigurieren” links auf der Seite verfügbar: “API-Token anzeigen”

  5. Nehmen Sie Änderungen an Ihrem Quellcode vor und übergeben Sie den Code an das Repository.

  6. Deine Arbeit, http://localhost:8080/jenkins/job/Gitcommittest/sollte bauen.

964920cookie-checkWie kann ich Jenkins CI mit Git-Trigger auf Pushs zum Master machen?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy