webentwicklung-frage-antwort-db.com.de

Jenkins-Build, wenn eine Änderung an der GitHub-Option vorgenommen wird, funktioniert nicht

Jenkins läuft auf localhost. Ich habe mein Repository in GitHub. Ich habe die Option 'Build, wenn eine Änderung an GitHub übertragen wird' aktiviert.

Wenn ich auf "Jetzt erstellen" klicke, wird die Erstellung erfolgreich durchgeführt, ohne dass Probleme auftreten. Wenn ich jedoch Code in mein Repository einsetze, findet keine automatische Erstellung statt. Ich kann von meinem System aus auf GitHub zugreifen, da das Repository öffentlich ist und ich glaube, sogar Jenkins sollte es erkennen können. Ich weiß, dass es eine Polling-Option gibt, aber ich möchte, dass Jenkins erstellt wird, wenn Änderungen im Repository festgestellt werden (das ist, was wir versucht haben, zu erreichen).

Konfiguration:

Jenkins 1.615

Git Plugin 2.3.5

Git Client Plugin 1.17.1

——————————————————————————————————————

EDIT : " Build, wenn eine Änderung an GitHub vorgenommen wurde" Umbenannt in " GitHub-Hook-Trigger für GITScm-Polling " in der neuesten Version des GitHub-Plugins. (Dank an @ smrubins Feedback.)

35
Anuj Balan

Ich vermute, Sie haben den webhook url Verpasst.

Neben dem Aktivieren der Option Build when a change is pushed to GitHub Sollten Sie auch die Webhook-URL in Ihr Github-Repository einfügen, damit der Auto-Trigger-Mechanismus funktioniert ich zeige:

Gehen Sie zu Ihrem Github-Repository:

Einstellungen -> Webhooks & Dienste -> Dienst -> Dienste hinzufügen -> Wähle "Jenkins (GitHub-Plugin)"

Füllen Sie dann den Jenkins hook url Mit Ihrer Jenkins-URL wie folgt aus: http: // your_jenkins_url/github-webhook /enter image description here


Und, SEHR WICHTIG , da Sie Ihren Jenkins-Server in Ihrem Localhost installieren, beachten Sie bitte, dass Sie nicht t Füllen Sie die Jenkins-Hook-URL wie http://localhost:8080/github-webhook/ aus, da Github localhost oder 127.0.0.1 oder 192.168.*.* nicht erkennen kann. .

Verwenden Sie entweder einen von außen zugänglichen DNS-Namen oder eine IP-Adresse, die von Github erkannt wird.

70
mainframer

Ich hatte das gleiche Problem und habe es gelöst. Das Problem war, dass die URL mit einem / Enden musste. Bedeutung:

http://<jenkinsurl>:8080/github-webhook/

http://<jenkinsurl>:8080/github-webhook

(Beachten Sie das fehlende / Am Ende.)

34
AskYous

Eigentlich, wenn Sie die Webhook-Einstellungen von Jenkins -> Github plugin configuration (oben erwähnt), es werden immer noch Webhooks in Github erstellt. Also, über zwei Ansätzen im Grunde das gleiche zu tun.

Ich persönlich mag es, Webhooks aus Github zu erstellen, da Sie auf diese Weise keine Benutzerinformationen für Github in jenkins teilen oder speichern müssen.

Schritte :

  1. Einloggen in Github (mit Admin)

  2. Gehen Sie zu dem Repository, das Sie mit Jenkins verknüpfen möchten

  3. Klicken Sie auf die Registerkarte Einstellungen -> Webhooks & Dienste
  4. Klicken Sie auf Webhook hinzufügen.
  5. Geben Sie die Nutzlast-URL ein: wie: http: //: 8080/github-webhook /
  6. Wählen Sie den Inhaltstyp als json aus.
  7. du bist fertig.

Wenn Sie nun die Änderungen vornehmen und festschreiben, wird Jenkins Build automatisch ausgelöst. Vergessen Sie nicht, die Einstellungen in Jenkins-Jobs vorzunehmen, um den Build zu starten, wenn Sie Code in Github übertragen.

3
suprakash

Das GitHub-Plugin ( https://wiki.jenkins-ci.org/display/JENKINS/GitHub+Plugin ) erwähnte zwei Möglichkeiten: manuellen Modus und automatischen Modus. Der Mainframer gibt die Antwort auf den manuellen Modus. Heute habe ich etwas Neues gefunden. Durch das Hinzufügen des Mainframers zum Dienst kann ich nicht mehrere Jenkins-Instanzen hinzufügen. Daher füge ich die anderen hinzu und füge den Webhook wie unten gezeigt hinzu. Es funktioniert auch gut.

Ich wollte hier ein Bild einfügen, aber mein Ausweis hat nicht das Recht dazu.

1
Jirong Hu