Strumenti:
Jenkins ver. 1.470
Maven 2
SubversionJenkins Costruzione parziale/Configurazione modulare su gancio di commit
Ambiente
assumere la mia generazione ha una serie di progetti di A-D. Il grafico delle dipendenze esiste come mostrato. Vale a dire: B dipende dalle classi in A, C dipende dalle classi in B, D dipende dalle classi in A. Creiamo le build jenkins in modo tale che chiamino le build dipendenti da esse come un'azione post-build.
Un
| -> B -> C
| -> D
Ogni sera, abbiamo innescare una generazione completa di Jenkins (A costruisce, innesca B (trigger C), D innesca). Questo viene fatto abbastanza facilmente dicendo a A di costruire di notte, e il resto a cascata.
Problema
Tuttavia, su una impegniamo vogliamo costruire i progetti che sono stati commessi a una volta.
Situazione 1: Abbiamo Poll il repository (o utilizzare commit hooks, non fa differenza) e scoprire che c'era un commit a B, allora B costruirà e C costruirà. Successo!
Situazione 2: Noi interrogare il repository e scopriamo che B e C sono stati impegnati a in un commit, quindi Jenkins cercherà di costruire B (innescando una build di C), e costruire C (una seconda generazione). Errore. Vedi cosa succede? C è stato costruito due volte, prendendo tempo prezioso per la costruzione. Mantieni veloce la costruzione!
Qualcuno sa un modo per attivare solo la più alta progetto in ogni cantiere di costruzione impegnati?
immagino una soluzione potrebbe essere un gancio SVN complessa che determina la massima progetto in ciascuna condotta ...
- Situazione 3: Impegnarsi a B C e D in un commit. Il gancio SVN trova C dipende da B. L'hook richiama collegamenti specifici del progetto per avviare build per B e D.
Insidie: hook di commit SVN molto complesso. Devono mantenere la conduttura nel gancio SVN.
Mi sembra che questo sia un problema in cui altri si sono imbattuti. C'è un plugin Jenkins che aiuta con questo?
Nella situazione 2, i progetti jenkins C & B stanno guardando lo stesso progetto svn? – thekbb