2009-05-03 7 views
2

En supposant que vous avez deux développeurs travaillant sur un projet localement sur leurs ordinateurs portables (A et B). Ils ont chacun des copies de travail du dépôt SVN, et ils codent en VS. Chacun a une copie entièrement fonctionnelle de l'application. Ils s'engagent à SVN à chaque arrêt.Comment effectuez-vous une génération sur un serveur d'intégration?

Vous avez un serveur d'intégration/test (C) qui a une autre copie de travail qui est mise à jour chaque fois que vous voulez tester.

Vous avez également serveur de production (D) qui a un xcopy post-construction de C.

Dites le code est un projet d'application Web, il nécessite une construction explicite (par opposition à un site Web Projet qui prend juste le code source et construit à la volée).

Comment gérez-vous cela sur le serveur d'intégration (C)? Si les développeurs construisent sur leurs machines (A et B), alors poussez les DLL vers le serveur d'intégration (C) ... cela ne fonctionnera pas, parce que le serveur d'intégration doit prendre le code de chacun d'entre eux et développer une DLL commune. Donc, tout le code source doit arriver au serveur d'intégration (C), être construit là, et juste les fichiers requis et DLL poussés à la production (D).

Comment gérez-vous la compilation sur le serveur d'intégration (C)? Avez-vous une construction chronométrée à partir de la ligne de commande? Est-ce que vous installez VS sur le serveur d'intégration (C) et construisez de cette façon? Si vous le faites depuis la ligne de commande, comment gérer les références requises et les autres paramètres que VS gère normalement dans un fichier CSPRJ ou un fichier SLN?

+0

Merci à tous ceux qui ont commenté. Nous avons fini par configurer CruiseControl, et nous utilisons la tâche CSC dans Nant pour construire directement à partir de la ligne de commande sur le serveur d'intégration. Cela fonctionne extrêmement bien, et nous donne l'avantage d'une construction plus contrôlée et standard que ce que vous obtenez d'un groupe de développeurs construisant dans leurs copies locales de VS. – Deane

Répondre

2

La meilleure solution à cette question est d'utiliser une solution de construction continue telle que CruiseControl. Vous avez raison d'identifier tous les pièges à faire vous-même, et à la fin il sera beaucoup plus simple de mettre en place un paquet tiers et de ne pas avoir à résoudre vous-même ces problèmes. CruiseControl peut être configuré pour construire sur la base d'une validation de subversion, sur une base temporisée ou à la demande. En outre, il peut également exécuter tous vos tests unitaires et alerter les gens lorsque les choses tournent mal. C'est un très bon paquet.

0

Nous utilisons également un crochet de validation subversion de svn repo, qui active la construction de test unitaire à chaque validation. Nous enchaînons les différentes versions, de sorte que le test d'intégration et les tests Web sont exécutés lorsque les tests unitaires sont verts. En outre, nous aimerions vraiment enchaîner la version finale à la fin de tout cela, mais nos tests d'intégration ne sont pas assez stables pour cela (environnements back-end flasques avec de mauvais SLA en développement - je déteste ça!). Pour le moment, nous démarrons manuellement les versions de version. Du point de vue de la qualité, nous pouvons passer directement de tous les voyants verts aux serveurs de test d'acceptation, mais cela signifie que vous souhaitez probablement utiliser des images en alternance dans le test d'acceptation, car le système de build peut générer beaucoup de temps d'arrêt. la réussite du commit a été totale. (Dans notre projet nous serions en panne la plupart du temps de 10h à 14h, car il ya un flot continu de commits autour de ce temps;)

+0

Mais comment exécutez-vous réellement la construction? Ligne de commande? CC.Net? – Deane

+0

Après avoir essayé toutes les variations open source, nous nous sommes retrouvés avec des bambous atlassians. L'argent le plus intelligent que nous ayons jamais dépensé; vous pouvez passer * beaucoup * de temps à essayer de faire fonctionner une build correctement. – krosenvold

0

Nous utilisons le régulateur de vitesse pour une intégration continue sur le serveur d'intégration. Notre script de régulateur de vitesse exécute les étapes suivantes:

  • Télécharge le dernier code de SVN sur le cc.serveur net
  • Exécute fichier MSBUILD pour la compilation du dernier code téléchargé
  • copier la version de libération dans un dossier séparé
  • Nous maintenons un dossier distinct pour « Release » construit, de sorte que le même script engage également la dernière version SVN branche « Release »
  • exécutons les cas de test [construit en utilisant nUnit]
  • Envoyer un e-mail contenant l'exécution d'un test d'état de construction & résultats

les commandes ci-dessus sont tous configurés sur notre serveur CC.net et programmés pour une exécution de 1.00 heures. Pour faciliter la maintenance, nous avons déployé notre serveur CC.net sur notre serveur d'intégration lui-même. cela nous aide aussi à exécuter automatiquement nos cas de test et à envoyer les résultats, si c'est une application web. Toute rupture de code est envoyée dans un courrier électronique aux abonnés configurés et les actions appropriées sont prises le jour suivant.

Une fois que tout va bien sur le serveur d'intégration, il suffit de "mettre à jour" la branche "release" sur le serveur de production.

vous pouvez trouver plus d'informations sur cc.net here

si vous avez besoin d'aide avec les scripts, je peux certainement vous aider.

Questions connexes