2015-06-01 13 views
28

Jenkins è in esecuzione su localhost. Ho il mio repository in GitHub. Ho l'opzione 'Costruisci quando una modifica viene inviata a GitHub' selezionata.Jenkins-Build quando una modifica viene inviata all'opzione GitHub non funziona

Quando faccio clic su "Build Now", la compilazione viene eseguita correttamente, nessun problema. Ma quando sto eseguendo il codice nel mio repository, la compilazione automatica non sta accadendo. Posso accedere a GitHub dal mio sistema poiché il repository è pubblico e credo che persino Jenkins dovrebbe essere in grado di rilevarlo. So che esiste un'opzione di polling, ma voglio che Jenkins si costruisca quando viene rilevata una modifica nel repository (poiché questo è ciò che stiamo cercando di ottenere).

Configurazione:

Jenkins 1,615

Git Plugin 2.3.5

Git client Plugin 1.17.1

------- -------------------- ----------------

EDIT: "generazione quando un cambiamento è spinto a GitHub" opzione è stata rinominata in "GitHub gancio trigger per GITScm polling "nella versione più recente del plugin GitHub. (grazie al feedback di @ smrubin.)

+0

Come si risolve questo problema con l'oceano blu? – technocrat

risposta

62

Ho il sospetto che tu abbia perso lo webhook url.

Oltre a verificare la possibilità Build when a change is pushed to GitHub, si dovrebbe anche aggiungere l'URL webhook nel repository Github per ottenere il Auto grilletto meccanismo per lavorare ed ecco come:

Vai al tuo repository GitHub:

Impostazioni -> Webhooks & Servizi -> Servizio -> Aggiungi Servizi -> Scegliere "Jenkins (GitHub plugin)"

allora utilizza il Jenkins hook url con i tuoi Jenkins URL come questo: http://your_jenkins_url/github-webhook/ enter image description here


E, MOLTO IMPORTANTE, dal momento che si sta installando il server Jenkins nel vostro localhost, si prega di essere consapevoli che si shouldn' t compila sopra l'url del gancio Jenkins come http://localhost:8080/github-webhook/ perché Github non è in grado di riconoscere localhost o 127.0.0.1 o 192.168.*.*.

O si dovrebbe usare un nome DNS accessibile esternamente o un indirizzo IP, che può essere riconosciuto da Github.

+0

Questa risposta è arrivata come un raggio di speranza :) Capisco che ho bisogno di andare a GitHub e aggiungere il servizio fornendo l'URL di hook Jenkins. Sono confuso da cosa questo ? Come faccio a configurare/configurare lo stesso? –

+0

Sotto GitHub WebHook (Jenkins Global Config), ho trovato questo 'http: // localhost: 8080/github-webhook /' e credo che sia quello a cui ti riferivi. Ho bisogno di capire come rimuovere questo localhost –

+0

@AnujBalan: sei riuscito a capire di rimuovere l'host locale? – inquisitive

1

Il plug-in GitHub (https://wiki.jenkins-ci.org/display/JENKINS/GitHub+Plugin) ha menzionato due modi: modalità manuale e modalità automatica. mainframer dà la risposta alla modalità manuale. Oggi ho trovato qualcosa di nuovo.l'aggiunta del mainframe al servizio non mi consente di aggiungere più istanze di Jenkins, quindi aggiungo le altre aggiungendo il Webhook come mostrato di seguito. Funziona anche bene.

Ho voluto includere un'immagine qui ma il mio id non ha il diritto di farlo.

2

In realtà se si eseguono le impostazioni del webhook da Jenkins -> Github plugin configuration (menzionato sopra), si vedranno comunque i webhook creati in github. Quindi, sopra due approcci fondamentalmente facendo la stessa cosa.

Personalmente mi piace creare webhook da Github, perché in questo modo non è necessario condividere o archiviare informazioni utente github in jenkins.

Passi:

  1. Entrata in Github (con Admin)

  2. Vai al repository che si desidera collegare con Jenkins

  3. Fare clic sulla scheda Impostazioni -> webhooks & servizi
  4. Fare clic su Aggiungi Webhook.
  5. Immettere l'URL del payload: come: http: //: 8080/github-webhook/
  6. Selezionare il tipo di contenuto come json.
  7. hai finito.

Ora che esegui le modifiche e fai il commit, vedrai che jenkins build si attiva automaticamente. Non dimenticare di eseguire le impostazioni nei processi jenkins per avviare la generazione quando inserisci il codice in github.

25

Ho avuto lo stesso problema e l'ho risolto. Il problema era che l'URL doveva terminare con un /. Significato:

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

http://<jenkinsurl>:8080/github-webhook no. (Notare il / mancante alla fine.)

+2

Grazie mille! Questo è un problema molto difficile da osservare! –

+2

Wow, l'ho aggiustato anche per me ... pensavo che stavo impazzendo –

+2

Questo ha funzionato perfettamente, grazie! – marcbest