2016-03-03 13 views
22

Stiamo utilizzando il plug-in della pipeline con configurazione multibranch per il nostro CD. Abbiamo controllato il Jenkinsfile che funziona git.Flusso di lavoro trigger su Github push - Plugin per pipeline - Configurazione Multibranch

git url: "$url",credentialsId:'$credentials' 

Il lavoro funziona bene, ma non lo fa innesco automatico quando un cambiamento è spinto a GitHub. Ho impostato correttamente i ganci Web GIT.

È interessante notare che quando vado in un ramo del lavoro multi-tracciato e faccio clic su "Visualizza configurazione", vedo che "Costruisci quando una modifica viene spostata su Github" è deselezionata. Non c'è modo di controllarlo poiché non posso modificare la configurazione del lavoro (dal momento che ci vuole dal genitore) e la stessa opzione non è presente in genitore.

Qualche idea su come risolvere questo problema?

+0

Quale evento GH webhook hai registrato? L'evento 'push' sarebbe l'unico richiesto. Il tuo Jenkins è visibile da internet? Lo stato del webhook di GH mostra i valori di ritorno dal ricevitore webhook di Jenkins? – amuniz

+0

Hai mai trovato una soluzione a questo senza il polling? – grayaii

risposta

1

Se si utilizza Stash per esempio è possibile registrare un post-ricezione WebHook dove dovete inserire il modulo di URL Jenkins come: http://jenkinsHost:9090/git/notifyCommit?url=ssh://[email protected]:1234/test.git

Nella tua Jenkins lavoro devi impostare almeno il grilletto Build "Poll SCM ". E impostare un tempo di polling di ad esempio 5 minuti. Ciò abilita anche l'indicizzazione automatica dei rami per la configurazione del progetto multibranch.

1

Il ricorso al polling aggiunge la latenza, ovvero il tempo necessario all'avvio di una build e quindi alla fine di restituire un risultato.

Mi sembrava che i plug-in di base abbiano un basso livello di astrazione, quindi sono passato al plug-in Github Organization Folder, che dipende da tutti e imposta un hook di organizzazione per l'attivazione di rami di build e/o richieste di pull.

4

Ho trovato un modo per selezionare la casella di controllo "Crea quando una modifica viene inviata a Github".

Questa linea ha fatto il trucco:

properties([pipelineTriggers([[$class: 'GitHubPushTrigger'], pollSCM('H/15 * * * *')])]) 

Credo che il polling è necessario per farlo funzionare. Sarebbe bello se non fosse necessario il polling.

Ecco un esempio Jenkinsfile con questo implementato:

#!/usr/bin/env groovy 

node ('master'){ 
    stage('Build and Test') { 
     properties([pipelineTriggers([[$class: 'GitHubPushTrigger'], pollSCM('H/15 * * * *')])]) 
     checkout scm 
     env.PATH = "${tool 'Maven 3'}/bin:${env.PATH}" 
     sh 'mvn clean package' 
    } 
} 
+0

Mi chiedo se è possibile ottenere la stessa cosa per bitbucket? – Lake

+1

@Lake: questa modifica dovrebbe funzionare per BitBucket: 'proprietà ([pipelineTriggers ([[$ class: 'BitBucketTrigger'], pollSCM ('H/15 * * * *')])]' –

+0

@Max dove hai mettere quella linea che ha fatto il trucco? – pixelpax

0

Prima di cominciare, vorrei sottolineare che non ho avuto precedenti esperienze con Jenkins finora, quindi ci potrebbe essere un po 'di soluzioni migliori là fuori .

Quello che volevo realizzare in poche parole:

  • Dopo ogni pressione fatta ad un repo Bitbucket (test2), su ogni ramo,
    tiro e costruire un altro repo Bitbucket (test1), da un identico
    nome ramo e subito dopo, creare test2 utilizzando test1 come una dipendenza
    .

Come sono riuscito a farlo?

  • ho iniziato un nuovo lavoro di tipo 'multiramo Pipeline'
  • ho aggiunto il seguente Jenkinsfile a test2:

pipeline { 
 
    agent any 
 
    stages { 
 
     stage('build') { 
 
      steps { 
 
       dir('test1') { 
 
        git branch: BRANCH_NAME, url: '[email protected]:user/test1.git', credentialsId: 'credentials_id' 
 
       } 
 
       sh('build_process') 
 
      } 
 
     } 
 
    } 
 
}

  • mi imbatto il problema che non è possibile impostare un hook Bitbucket per pipeline

  • ho aggiunto Bitbucket Branch Plugin Source per Jenkins

  • Ho selezionato Bitbucket a 'Fonti Branch' durante l'impostazione del lavoro

  • ho aggiunto le credenziali e mettere un segno di spunta su Auto-registro webhook

  • sotto 'SCAN multibranch Pipeline trigger' ho messo un segno di spunta periodicamente se non altrimenti eseguire, con un intervallo di 1 minuto

  • Ho aggiunto un webhook alla mia Bitbucket repo

  • Ho aggiornato tutti i miei plugin, riavviato Jenkins ed è pronto ad andare

Altri plugin che ho installato: Bitbucket plugin, plug-Pipeline. Spero che questo aiuti per qualcuno, sono riuscito a risolverlo in questo modo dopo ore di lotta senza il plug-in Source di Bitbucket Branch.

Problemi correlati