2009-02-09 9 views
4

depuis un certain temps maintenant, j'ai essayé de comprendre comment configurer un processus de construction automatisé dans notre boutique. J'ai lu beaucoup de messages et de guides sur ce sujet et aucun d'entre eux ne correspond vraiment à mes besoins spécifiques..NET projets construire l'automatisation avec NAnt/MSBuild + SVN

dépôt SVN Ma est aménagé comme suit

\projects 
    \projectA (a product) 
     \tags 
      \1.0.0.1 
      \1.0.0.2 
      ... 
     \trunk 
      \src 
       \proj1 (a VS C# project) 
       \proj2 
      \documentation 

J'ai un partage réseau, avec un dossier pour chaque projet (produit), qui à son tour contient les binaires, la documentation écrite et la documentation API générée (via NDoc - chaque projet peut avoir un fichier .ndoc dans le dépôt) pour chaque version historique (des balises dossier SVN) et pour la même dernière version (du tronc ).

Fondamentalement, ce que je veux faire dans une version de lot prévu sont les étapes suivantes:

  1. Examinez le dossier du projet SVN et identifier tag s pas présent dans le partage réseau
  2. pour chacun de ces balises
    1. départ le dossier tag
    2. build (avec config de sortie)
    3. copier les binaires résultant au partage réseau
    4. recherche de fichiers .ndoc
    5. générer des fichiers CHM via NDoc
    6. copie du CHM résultant des fichiers au partage réseau
  3. faites comme ci-dessus, mais pour la révision HEAD de tronc

Maintenant, le problème est, je n'ai aucune idée par où commencer. Je ne garde pas les fichiers .sln dans le dépôt, mais je suis capable de les remplacer par des fichiers MSBuild qui à leur tour génèrent les projets C# appartenant au produit spécifique. Je suppose que la partie la plus troublante est l'examen du référentiel pour les balises qui n'ont pas encore été traitées - c'est-à-dire la recherche des balises et leur comparaison à la structure de répertoire d'un projet sur le partage réseau. Je n'ai aucune idée de comment faire cela dans l'un des outils de construction (NAnt, MSBuild).

Pourriez-vous me donner quelques indications sur la façon d'aborder cette tâche dans son ensemble et en détail? Peu m'importe si j'utilise NAnt, MSBuild ou les deux. Je suis conscient que cela peut être assez complexe, mais chaque idée et extrait NAnt/MSBuild sera d'une grande aide.

Merci d'avance.

Répondre

0

Pouvez-vous avoir NAnt ou MSBuild appeler un Perl ou un autre script de langage de script pour examiner le dépôt svn et faire la caisse?Si vous pouvez aussi lancer la construction à partir de la ligne de commande, il semblerait que tout le reste ne soit que du script.

2

En NAntContrib il y a une commande SVN vous pouvez utiliser pour obtenir des informations. Toute requête que vous pouvez exécuter à partir de la ligne de commande SVN que vous devriez pouvoir utiliser, puis analyser le résultat. Vous pouvez donc effectuer une recherche de balises, faire correspondre les balises aux dossiers de votre partage réseau, puis effectuer une extraction pour celles manquantes à l'aide de la commande svn-checkout. Une fois terminé, exécutez la commande msbuild pour chaque dossier de projet.

Une alternative si vous voulez avoir automatisé builds serait de créer une branche au lieu d'une balise, car il semble que vous créez des versions vs juste une étiquette. Si vous créez une branche, vous pouvez avoir un outil de construction automatisé comme CruiseControl.net ou TeamCity monitory votre référentiel. Ensuite, si un fichier est enregistré sur la branche ou le tronc, vous pouvez le faire démarrer votre build automatisé.

Entre les deux, vous devriez être en mesure de le manipuler. Si vous voulez un bon exemple de certains scripts de construction qui ont la documentation implémentée en eux (avec zip et distribution), consultez le projet Castle ici: http://www.castleproject.org/

Ils utilisent même certaines des commandes SVN pour obtenir des choses comme le numéro de révision et quoi pas pour générer automatiquement les fichiers info assymbly.

Questions connexes