Lors de la migration de quelque chose vers quelque chose d'autre, il n'y a que deux choses que vous devez définir:
- Quelle est votre cible
- Comment s'y rendre (le plan de migration)
La première partie est, malheureusement, souvent négligé ou chemin trop vague. Vous ne pouvez pas simplement dire que ce que vous avez est un gâchis et vous voulez l'organiser. Qu'est-ce que cela signifierait? Tout le monde aurait une interprétation différente (aka: tous les dev pense que son ou sa façon de faire est le meilleur).
Il y a de fortes chances que toutes les succursales que vous avez soient en service ou aient atteint un objectif. Sans un processus cible clairement défini, les gens continueront à faire ce qui leur convient le mieux (et à juste titre).
Par exemple, votre cible doit être définie aussi clairement que Vincent Driessen a défini son «modèle de branchement Git réussi» . Si vous regardez ce modèle, il est très précis: il indique où le code stable doit être, et où les fonctionnalités instables doivent être développées. Il indique également comment - et quand - créer une branche, mettre à jour et fusionner. Vous savez à quoi sert chaque branche et quoi en faire. Nous utilisons une variation de ce qui a été proposé par Vincent et notre variation est définie dans notre wiki.
L'important est que toute l'équipe comprenne et s'entende sur un objectif. Il pourrait être utile de rappeler aux gens que vous ne recherchez pas leur modèle de branchement préféré, mais un modèle sur lequel tous les membres de l'équipe peuvent s'entendre et utiliser facilement.
Une fois que vous avez votre cible, vous pourrez élaborer votre plan de migration. Ce plan peut être aussi long ou aussi court que vous le souhaitez. J'ai vu un tel modèle de ramification imposé du jour au lendemain; à d'autres endroits, cela s'est fait sur 2 ou 3 sprints. Peu m'importe, tant que nous nous améliorons.
Vous pouvez commencer par les branches "les plus grandes" ou les plus importantes. Par exemple: "à partir de maintenant, master doit toujours être dans un état pour être déployé dans prod et la branche dev doit toujours compiler" (ou quelles que soient vos règles). Ensuite, appliquez les branches de version (version). Ensuite, appliquez les branches de fonctionnalités. Après cela, imposez un gel de code sur la branche de version, si cela a du sens.
DevOps est une question de communication, d'ouverture et d'efficacité. Ces concepts doivent être gardés à l'esprit et communiqués tout au long du processus.
Je suggère d'inviter des personnes extérieures à l'équipe de développement à la réunion du processus en tant qu'observateurs. Les Ops ou les cadres intermédiaires pourraient avoir une ou deux choses à dire sur votre modèle. Les besoins des développeurs devraient être priorisés, mais si le modèle de branchement est impossible à aligner avec la façon dont les choses sont gérées, vous feriez mieux de le savoir maintenant et pas dans un mois ou deux.
Si vous avez de très grandes équipes, essayez néanmoins d'inclure tout le monde. Avec de très grandes équipes, vous vous retrouverez quand même avec deux ou trois rencontres. Invitez donc les chefs d'équipe dans la salle, mais ayez une webdiffusion disponible et informez-en tout le monde. Si quelqu'un a une suggestion ou une préoccupation, il pourra l'exprimer à son chef d'équipe et si elle est valable, elle sera traitée lors de la deuxième ou troisième réunion.