144 votes

Pourquoi et comment configurer un ordinateur de build c# ?

Je travaille avec un petit (4 personnes) de l'équipe de développement sur un projet C#. J'ai proposé la création d'une machine de compilation qui va faire les nightly builds et les tests du projet, parce que je comprends que c'est une Bonne Chose. La difficulté est, nous n'avons pas tout un tas de budget, j'ai donc afin de justifier les dépenses pour les pouvoirs en place. Donc, je veux savoir:

Ce genre d'outils/licences-je besoin? Maintenant, nous utilisons Visual Studio et Smart Assemblée de construire, et de Perforce de commande de la source. Ai-je besoin d'autre chose, ou est-il un équivalent d'une tâche cron pour exécuter des scripts automatisés? Ce qui, exactement, ça va me, autre qu'une indication de rupture de la construire? Dois-je mettre en place des projets de test de cette solution (sln fichier) qui seront exécutées par ces scripts, afin que je puisse avoir des fonctions particulières testé? Nous avons, à l'heure actuelle, deux de ces tests, parce que nous n'avons pas eu le temps (ou, franchement, l'expérience) de faire de bons tests unitaires. Quel type de matériel dont j'ai besoin pour cela? Une fois qu'une construire a été terminé et testé, est-ce une pratique courante de mettre que de construire sur un site ftp ou d'avoir une autre façon pour l'accès interne? L'idée est que cette machine fait le construire, et à nous tous d'y aller, mais peut rendre les versions de débogage s'il le faut.
À quelle fréquence doit-on faire ce genre de build? Comment l'espace est-il géré? Si nous faisons les nightly builds, doit-on maintenir autour de toutes les anciennes versions, ou de commencer à laisser tomber au bout d'une semaine? Est-il autre chose que je ne vois pas ici?

Je me rends compte que c'est un sujet très important, et je viens juste de commencer. Je ne pouvais pas trouver un double de cette question ici, et si il y a un livre là-bas, je devrais juste l'obtenir, s'il vous plaît laissez-moi savoir.

EDIT: j'ai finalement réussi à le faire fonctionner! Hudson est complètement fantastique, et FxCop est de montrer que certaines caractéristiques, nous avons pensé ont été mises en œuvre étaient en fait incomplète. Nous avons également eu à changer le type de programme d'installation à partir de Vieux Et Cassé vdproj à Nouveau Hotness WiX.

En gros, pour ceux qui sont en accordant une attention, si vous pouvez exécuter votre construire à partir de la ligne de commande, vous pouvez le mettre dans la baie d'hudson. Faire la construction d'exécuter à partir de la ligne de commande via MSBuild est un exercice utile de lui-même, car il oblige à vos outils actuels.

147voto

Allen Rice Points 8899

Mise à jour: Jenkins est la plus à jour la version de l'Hudson. Tout le monde devrait être à l'aide de Jenkins maintenant. Je mettrai à jour les liens en conséquence.

Hudson est gratuit et très facile à configurer et sera facilement s'exécuter sur une machine virtuelle.

En partie à partir d'un ancien poste de la mienne:

Nous l'utilisons pour

  • Déployer des services windows
  • Déployer des services web
  • Exécuter MSTests et afficher autant d'informations que tout junit tests
  • Garder une trace de la low,med,high tâches
  • trendgraph les avertissements et les erreurs

Voici quelques-uns des construite en .net des trucs que Hudson prend en charge

Aussi, à dieu ne plaise, vous êtes à l'aide de visual source safe, il prend en charge aussi bien. Je vous recommande de prendre un coup d'oeil à Redsolo de l'article sur la construction .net de projets à l'aide d'Hudson

Vos questions

  • Q: Quels outils/licences-je besoin? Maintenant, nous utilisons Visual Studio et Smart Assemblée de construire, et de Perforce de commande de la source. Ai-je besoin d'autre chose, ou est-il un équivalent d'une tâche cron pour exécuter des scripts automatisés?

  • A: je viens d'installer visual studio sur une nouvelle copie d'une machine virtuelle exécutant un frais, patché, installation d'un serveur windows OS. Donc, vous auriez besoin de licences pour gérer cela. Hudson va s'installer comme un service windows et exécuter sur le port 8080 et vous permettra de configurer la fréquence à laquelle vous souhaitez analyser votre référentiel de code pour la mise à jour du code, ou vous pouvez dire à construire à un certain moment. Tout est configurable via le navigateur.

  • Q: Quoi, exactement, ça va me, autre qu'une indication de rupture de la construire? Dois-je mettre en place des projets de test de cette solution (sln fichier) qui seront exécutées par ces scripts, afin que je puisse avoir des fonctions particulières testé? Nous avons, à l'heure actuelle, deux de ces tests, parce que nous n'avons pas eu le temps (ou, franchement, l'expérience) de faire de bons tests unitaires.

    R: Vous recevrez un e-mail pour la première fois, l'échec de la construction, ou devient instable. Une version est instable si une unité de test échoue ou il peut être marqué instable par le biais de n'importe quel nombre de critères que vous définissez. Lorsqu'un test d'unité ou de l'échec de la construction vous sera envoyé par email et il vous dira où, pourquoi et comment il a échoué. Avec ma configuration, on obtient:

    • liste de tous les commits depuis le dernier build
    • commettre des notes de ceux qui s'engage
    • liste des fichiers modifiés dans les commits
    • sortie de la console à partir de la génération elle-même, montrant l'erreur ou l'échec du test
  • Q: Quel type de matériel dont j'ai besoin pour cela?

    Un: UNE VM suffira

  • Q: une Fois que l'accumulation a été terminé et testé, est-ce une pratique courante de mettre que de construire sur un site ftp ou d'avoir une autre façon pour l'accès interne? L'idée est que cette machine fait le construire, et à nous tous d'y aller, mais peut rendre les versions de débogage s'il le faut.

    Un: Hudson pouvez faire ce que vous voulez avec elle, qui comprend ID communique via le hachage md5, le téléchargement, la copie, archivage, etc. Il le fait automatiquement et vous donne une longue histoire de construire des artefacts.

  • Q: à Quelle fréquence doit-on faire ce genre de build?

    A: Nous avons les nôtres sondage SVN chaque heure, à la recherche de modifications de code, puis exécutez une version. Tous les soirs est ok, mais un peu inutile de l'OMI depuis que vous avez travaillé hier ne sera pas frais dans votre esprit le matin, quand vous obtenez dans.

  • Q: Comment l'espace est-il géré? Si nous faisons les nightly builds, doit-on maintenir autour de toutes les anciennes versions, ou de commencer à laisser tomber au bout d'une semaine?

    Un: c'est à vous, après si longtemps, j'ai déplacer notre construire des artefacts pour le stockage à long terme ou de les supprimer, mais toutes les données qui sont stockées dans des fichiers texte / xml fichiers que j'ai garder autour, ce qui me permet de stocker le changelog, graphiques de tendance, etc sur le serveur avec verrrry peu d'espace consommé. Aussi, vous pouvez définir d'Hudson jusqu'à ne conserver que des artefacts d'une fin # de builds

  • Q: Est-il autre chose que je ne vois pas ici?

    A: Aucun, Aller la chercher hudson droite maintenant, vous ne serez pas déçu!

26voto

mjmarsh Points 5858

Nous avons eu beaucoup de chance avec la liste déroulante suivantes:

  1. Visual Studio (plus précisément, à l'aide de la MSBuild.exe outil de ligne de commande et en le passant nos fichiers de solution. supprime la nécessité pour msbuild scripts)
  2. NAnt (comme la syntaxe XML/bibliothèque de tâches mieux que MSBuild. A également des options pour P4 src opérations de contrôle)
  3. CruiseControl.net - intégrée dans le tableau de bord web de suivi/de départ s'appuie.

CCNet a construit dans les notifications à envoyer des e-mails quand construit réussir/échec

Sur la justification: il s'agit de la charge de travail des développeurs manuel s'appuie et fait beaucoup de l'homme d'erreur de l'équation. Il est très difficile de quantifier cet effet, mais une fois que vous le faites, vous ne serez jamais revenir. Avoir un processus reproductible pour construire et diffuser un logiciel est d'une importance primordiale. Je suis sûr que vous avez été des lieux où ils construisent le logiciel en main et c'est dans la nature, pour votre construction guy de dire "Oups, j'ai oublié d'inclure cette nouvelle DLL!"

Sur le matériel: aussi puissant que vous pouvez obtenir. Plus de puissance et de mémoire = plus rapide temps de construire. Si vous pouvez vous le permettre, vous ne serez jamais regretter d'obtenir un haut de gamme de machine de compilation, peu importe la taille du groupe.

Sur l'espace: Permet d'avoir suffisamment d'espace disque dur. Vous pouvez créer des scripts NAnt pour supprimer les fichiers intermédiaires à chaque fois une accumulation commence, de sorte que le vrai problème est de garder historiques et de vieux programmes d'installation d'application. Nous avons un logiciel permettant de surveiller l'espace disque et envoie des alertes. Puis nous nettoyer le disque manuellement. Habituellement doit être fait tous les 3-4 mois.

Sur les notifications construire: Il est intégré à CCNet, mais si vous allez à ajouter de tests automatisés comme une étape supplémentaire, puis de l'intégrer dans le projet à partir de l'obtenir-aller. Il est extrêmement difficile de revenir de l'ajustement des tests une fois qu'un projet est grande. Il ya des tonnes d'infos sur les frameworks de test (probablement une tonne d'info sur la façon de bien), donc je vais différer sur le nommage des outils spéciaux.

11voto

Jeff Points 4954

Lors de mon précédent travail, nous avons utilisé TeamCity. Il est très facile et puissant. Il peut être utilisé pour gratuitement avec certaines restrictions. Il y a aussi un tutoriel sur la Dime de Jette. La raison pour laquelle nous n'utilisons pas CruiseControl.NET c'est que nous avons eu beaucoup de petits projets, et c'est pénible à mettre chacun en CC.NET. Je vous recommande fortement de TeamCity. Pour résumer, si vous êtes vers l'open source CC.NET est le grand papa légèrement supérieure à la courbe d'apprentissage. Si votre budget vous permettra certainement aller avec TeamCity ou consultez la version gratuite.

10voto

Trumpi Points 4190

Comment? Jetez un oeil à Carel Lotz du blog: http://dotnet.org.za/cjlotz/archive/2008/01/15/continuous-integration-from-theory-to-practice-2nd-edition.aspx

Pourquoi? Il ya plusieurs raisons que je pense:

  • Un travail de construire, lorsqu'il est correctement mis en œuvre, signifie que tous vos développeurs peuvent construire sur leur machine lorsque la construction est vert
  • Un travail de construire, lorsqu'il est correctement mis en œuvre, signifie que vous êtes prêt à déployer à tout moment
  • Un travail de construire, lorsqu'il est correctement mis en œuvre, signifie que ce que vous avez libération a fait un voyage à votre système de contrôle de source.
  • Un travail de construire, lorsqu'il est correctement mis en œuvre, les moyens d'intégrer tôt et souvent, la réduction de votre risque lié à l'intégration.

Martin Fowler article sur l'Intégration Continue reste du texte définitif. Avoir un coup d'oeil!

5voto

Daniel Earwicker Points 63298

Le principal argument en faveur, c'est qu'il permettra de réduire le coût de votre processus de développement, par vous alerter dès que possible que vous avez une fracture de construire ou à défaut des tests.

Le problème de l'intégration du travail de plusieurs développeurs est le danger principal de la croissance d'une équipe. Le plus grand de l'équipe reçoit, plus il est difficile de coordonner leur travail et arrêter de jouer avec les changements de chacun. La seule bonne solution est de leur dire "d'intégrer tôt et le plus souvent", en cochant dans de petites unités de travail (parfois appelé "histoires") qu'ils sont terminés.

Vous devriez faire la machine de compilation reconstruire à CHAQUE fois quelques vérifications, tout au long de la journée. Avec le régulateur de vitesse, vous pouvez obtenir une icône sur votre barre de tâche qui s'allume en rouge (et même de vous parle!) lorsque la génération est cassé.

Vous devez ensuite faire un nettoyage complet tous les soirs de construction où la version d'origine est marqué (compte tenu d'un unique numéro de build) que vous pouvez choisir de publier vos parties prenantes (chefs de produit, les gens de l'assurance qualité). C'est ainsi que lorsqu'un bug est signalé, il est connu, le numéro de build (ce qui est extrêmement important).

Idéalement, vous devriez avoir un site interne où s'appuie peut être téléchargé, et ont un bouton, vous pouvez cliquer sur publier le précédent nightly build.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X