Je suis développeur de logiciels dans une équipe agile assez importante (nous avons huit développeurs apportant activement des modifications à un référentiel de code unique). Toutes les deux semaines, nous mettons en production une nouvelle version de notre logiciel. Voici notre flux de travail actuel:
- Lors du démarrage d'une nouvelle tâche, les développeurs créent une "branche de fonctionnalité" hors de la branche de développement principale (nous utilisons git ) et travaillent sur cette nouvelle branche
- Une fois qu'un développeur a fini de travailler sur sa tâche, il fusionne sa branche de fonctionnalités dans la branche de développement
- Le développeur fusionne la branche de développement dans la branche QA.
- Une génération est déclenchée à partir de la branche QA. La sortie de cette version est déployée dans notre environnement QA pour permettre aux testeurs de commencer leurs tests.
Il est assez courant pour nos testeurs de trouver des problèmes avec ces nouvelles fonctionnalités qui ont été fusionnées dans la branche QA. Cela signifie qu'à tout moment, l'environnement QA contient probablement plusieurs nouvelles fonctionnalités - certaines testées et sans bogues, et certaines cassées. Cela rend la publication difficile car il est rare que la version QA soit prête à la production.
Pour atténuer ce problème, nous avons essayé d'initier un "gel QA", ce qui signifie que les développeurs ne fusionnent pas notre branche de développement dans la branche QA quelques jours avant la sortie. Les corrections de bugs dans l'environnement QA sont effectuées directement sur la branche QA et fusionnées vers la branche développement. Théoriquement, cela empêche les nouvelles fonctionnalités cassées de l'AQ tout en nous permettant de résoudre les problèmes déjà dans l'AQ.
Bien que ce concept de «gel de l'AQ» ait partiellement réussi, il est difficile de le coordonner et les gens sont souvent confus quant à savoir s'ils sont autorisés à fusionner avec l'AQ. Il a également été difficile de fixer une date limite de "gel de l'assurance qualité" - tout le monde aime l'idée d'une certaine marge de manœuvre entre le gel et la sortie, mais en pratique, ils préfèrent avoir leur fonctionnalité dans la prochaine version plutôt que de respecter la date limite.
Existe-t-il un meilleur moyen de garantir que nous avons une version propre pour nos versions toutes les deux semaines?