web-dev-qa-db-fra.com

Relâtir la construction vs nocturne

Une solution typique consiste à utiliser une version CI (intégration continue) exécutée sur un serveur de construction: elle analysera le code source, créera une version (dans débogage) et exécuter des tests, mesurer la couverture de test, etc.

Maintenant, un autre type de construction habituellement connu est "Nightly Build": Les choses ralentissent comme Créer des documents de code, créer un package de configuration, déployer dans l'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 "construction de libération" distincte comme une version de libération?
  • Ou faire "Nightly Build" en mode de sortie et utilisez-le comme libération?

Qu'utilisez-vous dans votre entreprise?

(La version de la libération doit également ajouter une sorte de balise au contrôle de la source de la version potentielle du produit.)

13
Tuomas Hietanen

Un cas pour avoir la construction de libération égale à la construction nocturne est: vous souhaitez tester exactement la même chose que vous publiez. Vous ne voulez pas découvrir des bugs dans la production qui auraient pu être détectées dans Dev test déjà.

La différence entre libération et construction nocturne:

  • la construction nocturne est exécutée automatiquement, eh bien, chaque nuit, tandis que la construction doit être gérée à la main à certains moments de temps
  • la construction de la libération doit idéalement étiqueter/branche le code source et éventuellement déployer l'artefact (s) de construction dans un repo 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 construction que je connais. Pour minimiser les chances d'erreurs humaines, celles-ci pourraient être sauvées. dans un fichier de lots/script qui ne prend que les paramètres nécessaires (et les valide).

13
Péter Török

Eh bien, je voudrais que la libération soit aussi proche que possible dans la nuit que possible! Idéalement exactement le même mais avec une étiquette.

La chose est que si votre version de la version et la nuit ne sont pas les mêmes, il y a une chance que tout ce qui soit différent puisse masquer un problème (ou faire en sorte que le suivi soit un peu plus difficile).

7
Zachary K

J'aurais un seul processus de construction, qui construirait tout chaque enregistrement par le service CI. Ce serait à la fois des bâtiments de débogage et de libération.

Avoir deux ou trois processus distincts, il suffit de demander de commencer à changer de manière aléatoire sans être documenté, et il ne sera pas long avant que quelqu'un ne se trouve avoir à faire 15 étapes pour que chaque version potentielle soit prête à sortir de la porte.

3
whatsisname

Une chose que je tiens à faire est de mettre la boîte nocturne en mode de sortie plutôt que du mode de débogage. Avec des cadres d'exploitation forestière tels que Log4net remplaçant System.Diagnostics.debug, les principales différences entre les modes de libération et de débogage sont des viftimes d'objet et des optimisations de code.

Sauf si vous allez réellement attacher un débogueur à votre construction nocturne, alors je suggérerais de le faire aussi.

Le processus que nous suivons est que la construction nocturne fonctionne toutes les nuits et si cela fonctionne, nous pouvons déployer la même construction à nos autres serveurs (aucune reconstruction, prenez simplement les installateurs emballés et les exécuter). Si nous avons un problème avec la construction nocturne, nous en enregistrons dans les changements sur une succursale et que vous exécutez une "nuit", sa branche pendant la journée. Les tests peuvent ensuite être réexécutés.

2
Matthew Steeples