Ho affrontato il problema del ridimensionamento della CI nella mia azienda e allo stesso tempo ho cercato di capire quale approccio adottare quando si tratta di CI e più filiali. C'è una domanda simile a stackoverflow, rami di funzionalità multiple e integrazione continua . Ne ho iniziato uno nuovo perché mi piacerebbe avere maggiori discussioni e fornire alcune analisi sulla domanda.
Finora ho scoperto che ci sono 2 approcci principali che posso adottare (o forse alcuni altri ???).
- Più serie di lavori (parlando di Jenkins / Hudson qui) per filiale
- Scrivi strumenti per gestire i lavori extra
- Crea / modifica / elimina lavori in blocco
- Impostazioni personalizzate per ogni lavoro per ramo (URL SCM, duplicazioni di repository di gestione dep)
- Alcuni esempi di persone che affrontano questo problema con strumenti di shell, script ant e Jenkins CLI. Vedere:
- http://jenkins.361315.n4.nabble.com/Multiple-branches-best-practice-td2306578.html
- http://jenkins.361315.n4.nabble.com/Is-it-possible-to-handle-multiple-branches-where-some-jobs-should-run-on-each-one-without-duplicatin-td954729. html
- http://jenkins.361315.n4.nabble.com/Parallel-development-with-branches-td1013013.html
- Configura o crea automaticamente un lavoro hudson
- Causerà più carico sul tuo cluster CI
- Il ciclo di feedback per gli sviluppatori rallenta (se l'infrastruttura non è in grado di gestire il nuovo carico)
- Scrivi strumenti per gestire i lavori extra
- Set multiplo di lavori per 2 rami (sviluppo e stabile)
- Gestisci i due set manualmente (se modifichi la configurazione di un lavoro assicurati di cambiare nell'altro ramo)
- PITA ma almeno così pochi da gestire
- Altri rami extra non riceveranno una suite di test completa prima di essere inviati a dev
- Sviluppatori insoddisfatti. Perché uno sviluppatore dovrebbe preoccuparsi dei problemi di scalabilità degli elementi della configurazione Ha una semplice richiesta, quando mi dirigo vorrei testare il mio codice. Semplice.
- Gestisci i due set manualmente (se modifichi la configurazione di un lavoro assicurati di cambiare nell'altro ramo)
Quindi sembra che se voglio fornire agli sviluppatori CI per i loro rami personalizzati ho bisogno di strumenti speciali per Jenkins (API o script di shell o qualcosa del genere?) E gestire il ridimensionamento. Oppure posso dire loro di unirsi più spesso a DEV e vivere senza CI su rami personalizzati. Quale sceglieresti o ci sono altre opzioni?