Ho installato il nostro sistema di integrazione continua, e funziona da circa un anno. Abbiamo finalmente raggiunto un punto in cui vogliamo fare release usando lo stesso. Prima del nostro sistema CI, i processi utilizzati erano:
(Develop) -> Ready for release -> Create a branch -> (Build -> Fix bugs as QA finds them) Loop -> Final build -> Tag
(Develop) -> Ready for release -> (build -> fix bugs) Loop -> Tag
Our CI setup:
1 server for development (DEV)
1 server for qa/release (QA)
Il secondo è perfettamente integrato in CI. Creo un ramo quando il software è pronto per il rilascio e il ramo non cambia mai in seguito, il che significa che la build è riproducibile senza dover modificare il lavoro CI. Qualsiasi sviluppo futuro avviene su HEAD, e anche le versioni di mantenimento ottengono una nuova filiale e un lavoro completamente nuovo, che rimane sul sistema CI per sempre, e poi alcuni.
Il primo metodo è più difficile da adattare. Se il ramo cambia, la build non è riproducibile a meno che non utilizzi il tag per creare [lavori sul server CI utilizza il ramo per QA / RELEASE e HEAD per i build di sviluppo].
Tuttavia, se utilizzo il tag per creare, devo creare un nuovo lavoro di configurazione per creare dal tag (perdere changelog sul server) o modificare il lavoro esistente (perdere la configurazione del lavoro originale).
So che sembra complicato e, se necessario, lo riscriverò / modificherò per spiegare meglio la situazione. Tuttavia, la mia domanda:
[Se presente] quale processo utilizza la tua azienda per rilasciare software utilizzando sistemi di integrazione continua. E 'addirittura fatto usando il sistema CI o manualmente?