2016-03-30 16 views
54

Come posso attivare la creazione di un altro lavoro dall'interno di Jenkinsfile?Come posso attivare un altro lavoro da una pipeline jenkins (jenkinsfile) con GitHub Org Plugin?

Suppongo che questo lavoro sia un altro repository sotto lo stesso github organization, uno che ha già il proprio file Jenkins.

Voglio anche farlo solo se il nome del ramo è master, in quanto non ha senso attivare le build downstream di eventuali rami locali.

Aggiornamento:

stage 'test-downstream' 
node { 
    def job = build job: 'some-downtream-job-name' 
} 

Eppure, quando eseguito ottengo un errore

Nessun lavoro con parametri chiamato qualche posto di lavoro-nome-downtream trovato

Sono sicuro che questo il lavoro esiste in jenkins e si trova nella stessa cartella organizzativa di quella corrente. È un altro lavoro che ha il suo Jenkinsfile.

Questa domanda è specifica per lo GitHub Organization Plugin che crea e mantiene automaticamente i lavori per ciascun repository e ramo dalla propria organizzazione GitHub.

risposta

62

Prima di tutto, è uno spreco di uno slot esecutore di avvolgere il passo build in node. Il tuo executor upstream sarà semplicemente inattivo senza motivo.

In secondo luogo, da un progetto multibranch, è possibile utilizzare la variabile di ambiente BRANCH_NAME per rendere condizionale la logica sul ramo corrente.

In terzo luogo, il parametro job assume un nome di lavoro assoluto o relativo. Se si assegna un nome senza qualifica di percorso, ciò si riferirebbe ad un altro lavoro nella stessa cartella, che nel caso di un progetto multibranch significherebbe un altro ramo dello stesso repository.

Così ciò che si intende scrivere è probabilmente

if (env.BRANCH_NAME == 'master') { 
    build '../other-repo/master' 
} 
+1

Grazie! Se per qualsiasi cambiamento sai anche come attivare questa build senza aspettare che finisca, sarebbe doppietta :) – sorin

+17

Controlla _Snippet Generator_: 'build job: '../other-repo/master', aspetta: false ' –

+0

grazie, ottima risposta, non avevo idea di cosa stavi parlando quando ho letto questo, ma ci sono arrivato alla fine :) – danday74

9

Il comando build nella pipeline è lì per attivare altri lavori in jenkins.

Example on github

Il lavoro deve esistere in Jenkins e può essere parametrizzata. Per quanto riguarda il ramo, Credo che si può read it from git

+3

Ho provato ad aggiungere 'costruire lavoro: 'jobname' ma ottengo questo errore' Nessun lavoro con parametri di nome found' Nome processo e vi posso assicurare che ci sia un lavoro con questo nome allo stesso livello nella cartella dell'organizzazione. – sorin

+1

Sì, c'è un lavoro, ma quel lavoro non è parametrizzato.Sto cercando di capire come parametrizzare un lavoro creato dal plug-in dell'organizzazione GitHub sebbene – yiwen

+6

Il formato del nome del lavoro è: 'processo di creazione:" $ {ORGANISATION_NAME}/$ {REPO_NAME}/master "' –

38

Oltre alle risposte di cui sopra: ho voluto iniziare un lavoro con un semplice parametro passato a un secondo gasdotto e ho trovato la risposta su https://dzone.com/refcardz/continuous-delivery-with-jenkins-workflow.

così ho usato:

stage ('Starting ART job') { 
    build job: 'RunArtInTest', parameters: [[$class: 'StringParameterValue', name: 'systemname', value: systemname]] 
} 
+1

Il processo di compilazione deve essere incorporato in un passaggio (a partire dalla versione 0.5) – rhoerbe

+3

È il BUILD_NUMBER di il lavoro di Jenkins richiamato dal comando 'build' restituito? Come accedere al BUILD_NUMBER in una delle seguenti fasi? Qualcuno sa dove è documentato quel comando? – user909481

Problemi correlati