Release build vs nightly build

13

Une solution typique consiste à avoir une build CI (intégration continue) exécutée sur un serveur de build: elle analysera le code source, fera la build (en débogage) et exécutera des tests, mesurera la couverture des tests, etc.

Maintenant, un autre type de build généralement connu est "Nightly build": faites des choses lentes comme créer des documents de code, créer un package d'installation, déployer dans un environnement de test et exécuter des tests automatiques (fumée ou acceptation) contre l'environnement de test, etc.

Maintenant, la question:

  • Est-il préférable d'avoir une troisième "version de version" séparée comme version de version?
  • Ou faire "Nightly build" en mode release et l'utiliser comme release?

Qu'utilisez-vous dans votre entreprise?

(La version doit également ajouter une sorte de balise pour contrôler à la source la version potentielle du produit.)

Tuomas Hietanen
la source

Réponses:

13

Un cas pour que la version soit égale à la version nocturne est: vous voulez tester exactement la même chose que ce que vous publiez . Vous ne voulez pas découvrir de bogues en production qui auraient déjà pu être détectés lors des tests de développement.

La différence entre la version et les versions nocturnes:

  • la version nocturne est exécutée automatiquement, eh bien, chaque nuit, tandis que la version de version doit être exécutée à la main à certains moments
  • la version de publication devrait idéalement baliser / brancher le code source, et éventuellement déployer le ou les artefacts de génération dans un référentiel central (par exemple lors de l'utilisation de Maven)

Ces différences sont en pratique quelques options supplémentaires dans la plupart des systèmes de gestion de build que je connais. Pour minimiser le risque d'erreurs humaines, celles-ci pourraient être enregistrées par exemple dans un fichier batch / script qui ne prend que les paramètres nécessaires (et les valide).

Péter Török
la source
7

Eh bien, je voudrais que la version soit aussi proche que possible de la soirée! Idéalement exactement la même chose mais avec une étiquette.

Le fait est que si votre version et votre version de nuit ne sont pas les mêmes, il y a une chance que tout ce qui est différent puisse masquer un problème (ou rendre le traçage beaucoup plus difficile).

Zachary K
la source
3

J'aurais un seul processus de construction, qui construirait tout à chaque enregistrement effectué par le service CI. Ce serait à la fois des versions de débogage et de version.

Avoir deux ou trois processus distincts leur demande simplement de commencer à changer de façon aléatoire sans être documenté, et il ne faudra pas longtemps avant que quelqu'un se retrouve à faire 15 étapes pour chaque version potentielle pour le préparer à sortir.

comment s'appelle-t-il
la source
Mon entreprise ressemble beaucoup à ceci avec 4 processus de construction différents. Nous avons besoin de changer ça.
Brandon
2

Une chose que je tiens à faire est de mettre la build nocturne en mode release plutôt qu'en mode debug. Avec des cadres de journalisation tels que log4net remplaçant System.Diagnostics.Debug, les principales différences entre les modes Release et Debug sont la durée de vie des objets et les optimisations de code.

À moins que vous n'attachiez réellement un débogueur à votre version nocturne, je vous suggère de le faire également.

Le processus que nous suivons est que la version nocturne s'exécute chaque nuit et si cela fonctionne, nous pouvons déployer la même version sur nos autres serveurs (pas de reconstruction, il suffit de prendre les installateurs packagés et de les exécuter). Si nous avons un problème avec la version nocturne, nous vérifions les modifications apportées à celle-ci sur une branche et exécutons une version "nocturne" de cette branche pendant la journée. Les tests peuvent ensuite être réexécutés.

Matthew Steeples
la source