Durante la migrazione da qualcosa a qualcos'altro, ci sono solo due cose che devi definire:
- Qual è il tuo obiettivo
- Come arrivare (il piano di migrazione)
La prima parte è, purtroppo, spesso trascurato o modo troppo vago. Non puoi semplicemente dire che quello che hai è un casino e vuoi organizzarlo. Cosa significherebbe? Ognuno avrebbe una diversa interpretazione (aka: ogni dev pensa che la sua o il suo modo di fare le cose è il migliore).
È probabile che tutti i rami che stai servendo o abbiano servito a uno scopo. Senza un processo target chiaramente definito, le persone continueranno a fare ciò che funziona per loro nel modo più adatto (e giustamente).
Ad esempio, il tuo obiettivo dovrebbe essere definito in modo chiaro come Vincent Driessen ha definito il suo "modello di ramificazione Git di successo" . Se guardi questo modello, è molto preciso: dice dove dovrebbe essere il codice stabile e dove dovrebbero essere sviluppate funzionalità instabili. Indica anche come - e quando - diramare, aggiornare e ricollegare. Sai a cosa serve ogni ramo e cosa farne. Usiamo una variante di ciò che è stato proposto da Vincent e la nostra variazione è definita nel nostro wiki.
L'importante è far comprendere e concordare un obiettivo a tutto il team. Potrebbe valere la pena ricordare alle persone che non stai cercando il loro modello di ramificazione preferito personale, ma un modello su cui tutti i membri del team possono concordare e utilizzare facilmente.
Una volta che hai il tuo obiettivo, sarai in grado di elaborare il tuo piano di migrazione. Quel piano può essere lungo o corto quanto desideri. Ho visto un tale modello di ramificazione imposto da un giorno all'altro; in altri posti, è stato fatto per 2 o 3 sprint. Non importa molto per me, purché stiamo migliorando.
Puoi iniziare con i rami "più grandi" o più importanti. Ad esempio: "da ora in poi, il master deve essere sempre in uno stato per essere distribuito in prod e il ramo dev deve sempre compilare" (o qualunque siano le tue regole). Quindi, imporre i rami versione (rilascio). Successivamente, applicare i rami delle funzionalità. Successivamente, impone un blocco del codice sul ramo della versione, se ha senso.
DevOps è incentrato su comunicazione, apertura ed efficienza. Questi concetti devono essere tenuti a mente e comunicati durante tutto il processo.
Suggerirei di invitare alcune persone al di fuori del team di sviluppo alla riunione di processo come osservatori. Ops o middle management potrebbero avere qualcosa da dire sul tuo modello. Le esigenze degli sviluppatori dovrebbero essere prioritarie, ma se il modello di diramazione è impossibile da allineare con il modo in cui le cose sono gestite, sarebbe meglio sapere ora e non tra un mese o due.
Se hai squadre davvero grandi, cerca comunque di includere tutti. Con squadre molto grandi, finirai comunque con due o tre incontri. Quindi invita i team leader nella stanza, ma disponi di un webcast e fai sapere a tutti. Se qualcuno ha un suggerimento o una preoccupazione, sarà in grado di darne voce al proprio leader del team e, se è valido, verrà indirizzato al secondo o al terzo incontro.