2009-12-04 2 views
12

ho la seguente layout del progetto:Attivazione progetto upstream costruisce prima progetti a valle

  • WAR Progetto A
    • monte Progetti
      • Dipendenza B
      • Dipendenza C
      • Dipendenza D

sto cercando di impostare un modo che ogni volta che voglio innescare una build, in primo luogo costruire B, C, e D. Se uno costruisce per B, C, o D sicuro allora anche la costruzione di A dovrebbe fallire.

Sembra un caso di costruzione comune, ma non sono sicuro di come realizzarlo. Ci sono le seguenti opzioni, ma non sembrano avere il giusto rapporto:

  • Corporatura Trigger - Costruire dopo altri progetti sono costruiti
    • costruirà il progetto corrente, dopo alcuni progetti upstream, ma ho bisogno per controllare la compilazione da questo progetto poiché sto facendo una distribuzione WAR. Voglio solo creare sempre prima le dipendenze.
  • azioni post-generazione - Costruire altri progetti
    • Will costruire progetti dopo questo, ma questo è contrario per quello che voglio fare.

C'è una configurazione di generazione in Hudson (o attraverso un plugin) che funziona per me?

risposta

5

Questo è venuto sulla mailing list Hudson molto recentemente. Non esiste un supporto diretto per questo tipo di configurazione di build in Hudson.

Vedi questa discussione: http://jenkins.361315.n4.nabble.com/On-demand-build-dependency-handling-simple-2-job-build-td624395.html

È possibile utilizzare il plugin Unirsi per creare un 'costruire + distribuire' di lavoro. Avrebbe B, C e D come progetti downstream, quindi "A" diventerebbe l'obiettivo di join.

Pertanto B C e D dovrebbero essere completati correttamente. Se è così, verrà avviato il semplice lavoro "deploy" di A. Se ci fossero errori, A non si avvia. Questo è effettivamente lo stesso di quello che stai chiedendo.

Si può leggere su join plug qui: http://wiki.hudson-ci.org/display/HUDSON/Join+Plugin

+0

Grazie per questo post di riferimento che è stato molto approfondito. Per le mie build, che usano maven2, mi basterà scm-interrogare sui lavori di dipendenza (B, C e D dalla domanda originale), pubblicare sul repository maven2 ed eseguire la build del progetto A ogni volta che voglio. Grazie ancora. I poster avevano ragione, non hai davvero bisogno di questo tipo di configurazione, se puoi contare sulla gestione delle dipendenze di maven/edera. – abargnesi

+0

Il link Nabble è un 404 – Nemi

1

Date un'occhiata al progetto Apache Ivy (http://ant.apache.org/ivy/). Gestisce le dipendenze del progetto molto bene e ha un plugin per Hudson. Dal modo in cui descrivi il problema, penso che questa soluzione potrebbe funzionare per te.

+0

Non ho menzionato nel post originale che usiamo già maven2 per tutte le nostre build. Ero così appeso a gruppi puramente atomici, raggruppati, che non mi rendevo conto che il sondaggio di maven2/scm farà il trucco in modo abbastanza efficace. Grazie per l'informazione. – abargnesi

1

Penso che il Join Plugin, è quello che stai cercando.così si imposta il lavoro A-Trigger che attiva B, C, D e attende fino a quando tutti sono finiti e che A viene attivato.

+0

Oh bel plugin, non l'ho visto. Cercherò! – abargnesi