L'une des pratiques énoncées dans la livraison continue de Jez Humble est que vous devez créer un package, puis le publier dans chaque environnement dans lequel vous déployez, de sorte que le déploiement et les artefacts aient eux-mêmes été testés plusieurs fois avant de passer en production.
Je soutiens pleinement cette idée.
D'un autre côté, les versions en mode débogage qui vous donnent des traces de pile avec des numéros de ligne sont incroyablement utiles dans les environnements de test, tout comme la possibilité de déboguer à distance. Mais, vous voulez envoyer une version finale à la production.
Donc, pour les personnes qui suivent le premier principe, à quel moment passez-vous du débogage aux versions de publication?
Est-ce avant le premier déploiement dans un environnement de test, que le coût de la perte du mode de débogage vaut la peine d'être payé pour s'assurer que vous testez la version actuelle de manière précoce? Ou construisez-vous à nouveau à un moment donné du processus de promotion, en supposant que vous ferez confiance au processus de génération par rapport au logiciel? Ou vous contentez-vous de tout visser et de déployer des versions de débogage en production?
Remarque: je sais que cela ne s'applique pas vraiment aux langages interprétés, car vous pouvez généralement basculer le commutateur dans la configuration plutôt que de le faire au moment de la construction.
Réponses:
Nous basculons tôt, lorsque le code source a obtenu un numéro de version et a été poussé dans la file d'attente de construction Debian. Nous sommes dans la situation chanceuse de faire des logiciels scientifiques avec des entrées et sorties bien spécifiées et peu d'interaction avec le système, donc le coût de reproduction d'une situation d'erreur est assez faible.
C'est aussi ma réponse générale: le point de changer de builds dépend principalement des coûts de reproduction des erreurs. Si ceux-ci sont très élevés, j'expédierais même des versions de débogage pour tester les clients. Bien que cela comporte le risque d'échecs de génération pour la génération de production, cela pourrait toujours être moins cher que de passer des semaines à reproduire le scénario de test.
la source
Dès que nous passons à QA, nous passons aux versions de version. Mais chaque fois que nous construisons une version, notre processus de construction crée également une version de débogage des DLL. Cela nous permet de déposer rapidement les DLL de débogage dans l'environnement QA et d'obtenir des informations supplémentaires si nécessaire.
Les versions de libération et de débogage des DLL sont sauvegardées et conservées pendant plusieurs années.
la source
Dans notre environnement, le code est déployé sur de nombreux sites. Et par conséquent, il devrait y avoir un contexte différent appliqué à chaque instance de déploiement. Habituellement, nous le déployons dans des endroits clés "moins risqués" et voyons l'expérience.
Ce déploiement est toujours en production , ce n'est donc pas le mode «débogage». Mais cela suppose également que les tests sont bien effectués.
Bien sûr, avec le mode de débogage désactivé, le débogage rapide du code (sur site) peut être difficile. Mais si la version a échoué, la production revient à la version de secours.
Cependant, nous essayons de maintenir ou de créer un environnement identique, qui peut reproduire un tel environnement pour tester à nouveau. (Je sais que ce n'est pas toujours trivial à faire) mais tout ce dont nous avons parfois besoin est de reproduire les transactions / entrées.
Le fait est que, quelle que soit la tentation, la version en mode débogage ne devrait pas être en production. Cependant, je ne dirai pas que c'est une règle.
Une autre chose est que la version est toujours appelée essai jusqu'à ce qu'elle ait établi (en s'exécutant pendant un temps significatif) que d'autres locaux ne l'acceptent pas encore.
Il existe quelques autres pratiques pour s'assurer que le processus de construction lui-même n'est pas tout à fait défectueux. Voir ceci: Un moyen simple d'améliorer la qualité des versions dans l'environnement RAD
la source
Nous avons nos machines de développeur configurées pour créer des versions de débogage. Mais une fois que les développeurs ont validé le code, un package de déploiement est créé dans notre environnement d'intégration continue (TeamCity) et est conçu pour être publié. Donc, chaque fois que nous décidons de déployer sur QA, nous prenons le dernier package de déploiement du serveur CI et le poussons vers l'extérieur, il est donc toujours publié sauf s'il se trouve sur une machine de développement.
BTW, pour certaines langues, même lors de la construction pour la publication, vous pouvez toujours créer des symboles de débogage. Dans .NET, par exemple, il existe un paramètre «pdb uniquement» qui permet des optimisations mais crée toujours des fichiers de débogage. Évidemment, le débogage avec une version finale est plus délicat car il n'est pas équivalent ligne par ligne, mais il peut toujours être utile à la rigueur.
la source