2012-09-04 4 views
6

Il plug-in Jenkins Join consente di eseguire un lavoro dopo che tutti i processi immediatamente successivi sono stati completati.Jenkins: lavoro di attivazione dopo che tutti i processi downstream sono stati completati, non solo quelli immediati

Ma come posso configurare un lavoro da eseguire dopo che tutti i processi downstream sono stati completati, non solo quelli immediati?

Questa figura mostra i lavori di attivazione del flusso mi aspetto:

      A 
          | 
        --+----+------+-- 
         |   | 
         v   v 
         B   C 
         |   | 
    --+--------+-----+---+--  | 
     |  |   |  | 
     v  v   v  | 
     D  E   F  | 
     |  |   |  | 
     v  |   |  | 
     G  |   |  | 
     |  |   |  | 
    ---+--------+----+----+-------+-- 
        | 
        v 
        J 

ho impostato Registrati Trigger su lavoro A far scattare il lavoro finale J. Tuttavia lavoro J viene avviato una volta B e C sono finiti, non aspetta per i lavori D, E, F e G.

In this answer e i suoi commenti, ha detto che i percorsi possono essere più lavori in profondità e le impronte digitali devono essere utilizzate correttamente. Ma non riesco a capire come farlo funzionare.

risposta

5

Il plug-in Join funziona solo quando tutto è suddiviso in "quadri" di dipendenze: un singolo processo iniziale, uno o più processi downstream, ma solo un livello profondo (D e G sono due livelli nel diagramma), seguito da un singolo lavoro unito. La tua struttura di dipendenza non segue quel modello di diamante.

Per questa particolare situazione, vorrei utilizzare lo Promoted Builds Plugin. Setup Job A per avere una promozione che, una volta attivata, esegue Job J. Rendi il trigger per quella promozione il completamento corretto di B, C, D, E, F, G. Oppure se vuoi minimizzarlo: G, EF, C Assicurati solo che le impronte digitali siano configurate correttamente.

Per le impronte digitali, generare un file (o scegliere un file esistente) durante il lavoro A. Artefatto e impronta digitale. In tutti i seguenti lavori B-G, utilizzare il plug-in CopyArtifact per recuperare quel file nel lavoro e impronte digitali anche lì.

+0

Puoi elaborare un po 'il fingerprinting e la configurazione di build promossa? Ho chiesto quasi la stessa domanda [qui] (http://stackoverflow.com/questions/26101765/jenkins-pipeline-top-level-join-gets-triggered-before-sub-level-join) – dstj

+0

Fine - la risposta è stata aggiornato con ulteriori informazioni sulle impronte digitali. –

3

Nel caso in cui qualcuno stia cercando un modo semplice, utilizzare JobFanIn plugin. Questo plugin ti consentirà di impostare il trigger sul lavoro J una volta C, E, F & G sono costruite e stabili

+1

Esattamente quello che mi serviva, semplice soluzione di dipendenza di build grazie. – dkanejs

+0

non consente di passare i parametri dal processo upstream al lavoro unito. –

+0

questo è un limite immagino. Il plug-in May può essere migliorato per farlo, ma con più progetti upstream che passano i parametri dovranno gestirli anche nel downstream. Vedremo se questo può essere aggiunto nel plugin – Yogesh