Faccio parte di un gruppo di sviluppo con 5 team, per un totale di circa 40 sviluppatori. Stiamo seguendo la metodologia Scrum, con sprint di 3 settimane. Abbiamo una configurazione di integrazione continua (Jenkins), con una pipeline di compilazione che richiede diverse ore (a causa di numerosi test automatizzati). Fondamentalmente, il processo di sviluppo funziona bene.
Tuttavia, osserviamo che dopo alcuni giorni in un nuovo sprint, la nostra build diventa spesso instabile e rimane instabile fino alla fine dello "sprint commit". L'effetto negativo di questo è che le fasi di costruzione molto lontane dalla pipeline, in particolare UI- / Webtest, non vengono eseguite per diversi giorni (perché attivate solo su una build "verde"). Di conseguenza, i bug appena introdotti vengono spesso rilevati solo molto tardi nello sprint.
- Ogni commit viene verificato rispetto a una serie di test di base. Una volta verificato, la modifica viene trasferita al master dopo una revisione del codice (Gerrit)
- I test unitari di base vengono eseguiti ogni 30 minuti, durata inferiore a 10 minuti
- I test di integrazione vengono eseguiti ogni 2 ore, durata 1 ora
- I test UI / Web vengono eseguiti con successo test di integrazione, durata diverse ore
A seconda di chi è responsabile della stabilità della build durante lo sprint (tale responsabilità viene trasferita per ogni sprint), potrebbero esserci "stop commit" intermedi e ad hoc per riportare la build alla stabilità.
Quindi, vogliamo:
- I nostri team di sviluppo sviluppano e commettono modifiche durante uno sprint senza ostacoli
- Il nostro processo di compilazione da abbandonare se una fase di compilazione fallisce, poiché i risultati di compilazione successivi hanno poco significato
- Il nostro processo di creazione per fornire agli sviluppatori un feedback di qualità in modo tempestivo
Dato (2), i punti (1) e (3) sembrano contraddirsi. Qualcuno ha una buona pratica su come affrontare questo?
( Attualmente stiamo allentando il punto (2) e stiamo permettendo la continuazione della costruzione anche su passaggi di costruzione falliti. Non ho ancora alcun feedback su come ciò influisca sulla nostra qualità )
Grazie Simone
several hours
questo è il vero problema. significa che la soluzione combinata è troppo grande e troppo ampia. Dovresti cercare di strutturare la soluzione e quindi avere piccoli blocchi di codice come pacchetti (disponibili in un modo o nell'altro in tutte le principali lingue su tutte le piattaforme). Pertanto, qualsiasi modifica andrebbe solo nei componenti e verrà rilevata molto più velocemente. La build completa essenzialmente metterà insieme i componenti già combinati e sarà anche più veloce. Quindi potresti eseguire solo alcuni test per accertarti che i componenti giusti siano stati risolti.