web-dev-qa-db-fra.com

Version sémantique à Agile

Disons que j'ai 14 jours de sprint itérations où j'ai plusieurs histoires pour de nouvelles fonctionnalités, peu d'améliorations et quelques bugs à réparer. Je déploie également ces changements quand ils sont prêts, je n'attends pas la fin du sprint.

Mon problème est - Comment suivre les versions sémantiques des produits développés et entretenus comme ça? S'il y aura une libération tous les 14 jours, il sera facile, je vais augmenter le numéro de version et notez tous les changements de ChangeLog. Mais que si des changements sont déployés continuellement? Devrait-il y avoir une version augmentée chaque fois que quelque chose est déployé? Ou devrais-je attendre que le sprint se termine et après cela, faites-en une "reprise" et augmentez-vous le numéro de version une fois par itération indépendamment sur le déploiement réel? Quelles sont les meilleures pratiques pour les versions sémantiques dans Agile?

Edit : Pour mieux expliquer mes besoins, je veux Changeelog pour les parties prenantes d'une première place. Je ne pense pas qu'ils soient intéressés par un nouveau record de Changeelog après chaque changement déployé.

10
Pavel Štěrba

Si le schéma de versions sémantiques classique "Major.minor.Patch" est logique, dépend de ceux que vous déployez, en particulier lorsque et à quelle fréquence vous déployez l'utilisateur final. Le schéma est le plus utile si vous travaillez avec une version stable "4.5", où vous commencez avec 4,5,0. Les versions 4.5.1, 4.5.2, etc. ne contiennent que des corrections de bugs, tandis que vous travaillez déjà à l'intérieur de la version 4.6.

Par exemple, si vous fournissez une "branche stable" à votre utilisateur final, donnez-lui une version 4.5.0 pour le déploiement initial et 4.5.1, 4.5.2 Chaque fois que vous publiez un correctif. Dans votre "agile" interne Development et Mid-Sprint Deployment, vous pouvez déjà avoir une version 4.6, appelez-la simplement une "version bêta". Chaque fois que vous le déployez dans Mid-Sprint, ajoutez le numéro de construction généré automatiquement comme "4.6.beta Build 123". Lorsque votre sprint se termine, attribuez-le "4.6.0" et activez le numéro de version pour le prochain sprint en interne à "4.7". À partir de ".0" n'est qu'une convention, vous pouvez également utiliser le "0,0" pour marquer les versions bêta et commencer par ".1" pour vos utilisateurs finaux. IMHO Le mot "beta" est beaucoup plus expressif, disant à tous le sprint "n'est pas encore terminé".

Si vous publiez un journal de modification de l'utilisateur complet complet avec chaque version bêta est à vous, mais au moins à la fin du sprint, le journal de modification doit être terminé et chaque fois que vous fournissez un bugFix à l'utilisateur final, vous devez également mettre à jour. les documents d'histoire.

Vous trouverez la stratégie de libération de deux branches séparées, une branche "stable" avec des numéros de version sémantiques et une "branche de développement" marquée de nombres de construction ou de quelque chose de similaire, dans de nombreux produits open source tels que l'inkscape, Firefox ou 7-Zip.

Si, toutefois, vous ne travaillez pas avec des succursales distinctes stables et de développement et publiez une nouvelle version à vous mettre fin à l'utilisateur par jour, vous devez également incrémenter un numéro de version par jour. Pour un tel cas, les numéros de version "4.5.1", "4.5.2", ... refléteront probablement vos déploiements individuels et n'indiquent pas la différence entre les correctifs de bogues et les autres modifications. Cela peut être ok, ce n'est tout simplement pas classique "Versing sémantique". Dans ce scénario, vous pouvez également déployer des versions 4.5, 4.6, 4.7, 4.8, qui ne donne aucune différence réelle.

En ce qui concerne votre question sur les entrées de votre changelog: IMHO Lorsque quelque chose est visible pour l'utilisateur final, il vaut la peine d'entrer dans le changelog, dès que vous déployez le changement. Par exemple, si vous utilisez la fonctionnalité bascule et apportez des modifications à une fonction semi-cuite qui n'est pas encore activée à l'utilisateur, cela n'appartient pas à un changelog. Si vous ne refactez que, sans changement visible de l'utilisateur, cela n'appartient pas à un changelog. Si vous corrigez un bogue qui aurait pu affecter certains utilisateurs, cela appartient définitivement dans le changelog - et il convient de le mentionner en même temps lorsque vous déployez le bugfix. Et peu importe si vous publiez quotidiennement ou mensuellement ou annuellement.

6
Doc Brown

J'utiliserais des chiffres de construction. Habituellement, un numéro de construction correspondrait à la version la plus élevée du système de contrôle de la version. Si le nombre de lundis construit le nombre était de 1745 et il a été vérifié 5 changements de mardi, le nombre de mardi soir, le numéro de construction serait de 1750.

Ensuite, faites un bref résumé pour ce qui a changé entre 1745 et 1750.

Ensuite, chaque fois que vous mettez à jour le numéro de version de votre système, vous pouvez ajouter tous les résumés courts des constructions pour obtenir les modifications du dernier numéro de version à la nouvelle version.

3
Bent

Ma méthode préférée que j'ai utilisée depuis au moins quelques années est maintenant de résoudre le nombre après la fin de chaque histoire. Cela signifie que les versions libérées à la fin du sprint ne seront pas continues, par ex. Après 1.2.3, vous pourriez trouver 1.5.2 plutôt que 1,4.0.

Dans le changelog, vous pouvez soit énumérer les versions intermédiaires avec leurs descriptions correspondantes, soit simplement grouper toutes les modifications dans la version "publiée" et ignorer les versions entre les deux.

Initialement, j'avais peur que les utilisateurs ne trouvaient que les "trous" entre les numéros de version problématiques, mais une fois qu'ils savaient à ce sujet, ce n'est pas un problème dans la pratique. Le gros avantage est que l'augmentation du nombre après chaque histoire rend le processus moins sujet aux erreurs - vous n'avez pas à vérifier l'ensemble du travail à partir de 2 semaines pour décider du numéro de version suivant: une seule histoire, il est évident . De plus, les "sauts" dans les numéros de version entre chaque version donnent une estimation approximative du nombre de changements entrés dans la version. Dans l'ensemble, j'ai trouvé que ce système fonctionne bien (c'était avec les clients internes de la société, mais si vous travaillez déjà dans un cycle de sortie agile, il devrait également fonctionner pour les clients externes).

3
Michał Kosmulski