Question

Je suis en train d'automatiser le processus de construction pour le groupe d'ingénierie. Dans le cadre de cette automatisation, je suis en train d'arriver à un point où l'acte d'appliquer une étiquette spécifique qui adhère à un modèle amorcera un processus automatisé qui procédez comme suit:

  • code source Consultez
  • Créer un script de construction d'un modèle
  • Générez le projet

Je suis certain que je pouvais le faire avec un post-crochet dans la subversion, mais je suis en train de trouver un moyen de le faire avec autre chose qu'un crochet de subversion.

  • Serait-il judicieux de surveiller le répertoire des balises dans le dépôt subversion pour lancer mon flux de travail?
  • Y a-t-il des outils décents qui aident à ce (.NET serait génial si possible).
  • Suis-je mieux d'écrire juste un moteur pour le faire?

Mes préférences:

  • produit existant qui fait tout ou partie de ce
  • Si le travail de développement doit se produire, .NET est préférable
  • Works with Windows (nous avons un repo basé sur Linux, mais construit tous se produisent sur les fenêtres)
Était-ce utile?

La solution

J'aime hudson - facile à mettre en place et fonctionne hors de la boîte avec SVN.

Vous pouvez le configurer pour construire à chaque livraison.

Je l'ai téléchargé et ai commencé à construire avec elle dans un jour. Il est passé par beaucoup de coups secs, mais je le recommande à tout le monde.

J'ai aussi utilisé régulateur de vitesse, mais je ne suis pas aussi heureux avec cela. Je n'ai pas de raisons spécifiques autres que l'émission multiplateforme.

EDIT

J'ai récemment ajouté un emploi sur mon serveur de build hudson qui écoute un chat jabber google / gmail. Je peux « promouvoir » un « régulier » construire une version release avec ce mécanisme. Je viens de mettre en place un nouvel emploi qui fait les mesures nécessaires pour promouvoir / publier une construction privée dans un candidat de libération.

Autres conseils

Je l'ai fait à l'aide d'Hudson. Dans la fente régulière de la caisse de subversion J'ai la caisse pour le coffre:

http://dryad.googlecode.com/svn/trunk/dryad

Alors que la première action de construction, j'ai une « exécution shell » et dans cette coquille utiliser un svn switch pour changer la dernière balise dans le référentiel:

http://dryad.googlecode.com/svn/tags/ » svn ls http://dryad.googlecode.com/svn/tags | tail -n 1' dryad

La prochaine étape de construction est une commande maven « install clean » qui commence la construction en utilisant le code de la version étiquetée.

Je ne l'ai pas encore compris comment obtenir Hudson à commencer par une dernière version étiquetée plutôt que d'avoir à faire le commutateur, mais le commutateur fonctionne. Vous pouvez alors avoir le déclencheur soit lorsque le répertoire de la balise est mis à jour.

Il est automatisé ... un peu bidouille, mais il fonctionne ...

le commutateur doit inclure une backtick pour la deuxième commande svn, mais a dû utiliser »parce que le backtick n'a pas montré ici.

On dirait que vous êtes après un moteur de génération d'intégration continue quelque chose comme CruiseControl ou Hudson (de hudson écrit en Java, mais est très facile à utiliser dans les fenêtres).

Maintenant, vous pourriez Fudge vos scripts de compilation pour ces outils pour regarder le répertoire tags, mais ce serait un peu contre le grain comme ils sont destinés à regarder un endroit précis et construire le projet à cet endroit. Si vous regardez tout le répertoire tags, vous pouvez facilement vous retrouver avec toutes les balises seraient vérifiés sur la machine de construction et vous auriez besoin d'un script de haut niveau pour décider quelle étiquette de construire.

Pour ce que vous voulez, un moteur de génération peut regarder un endroit précis (par exemple « / branches / release »). Si vous fusionnez ensuite dans cette branche, Hudson construira automatiquement le projet, archiver les objets et créer une balise pour vous si elle était réussie (voir Subversion Tagging Plugin).

Je n'aime pas faire ce genre de chose à un crochet post-commit car elle rend la phase de validation trop long. Cependant, TeamCity est un système de contrôle de code source qui a une caractéristique qui fait exactement cela sans vous tenir en place pendant qu'il engage.

Je vous recommande Hudson pour cela.

CruiseControl.Net peut facilement automatiser automatique se construit à partir des dépôts de subversion.

Il peut surveiller le dépôt (Svn et plusieurs autres types) et commencer à builds automatique en utilisant une variété d'outils. (Nant, MSBuild, etc.)

Un produit commercial a été annoncé sur ce site exactement dans ce but!

http://www.finalbuilder.com/Default.aspx?tabid=314

Vous devrez peut-être ajouter un post-crochet à SVN pour déclencher le début de la construction, sauf si vous voulez qu'il soit exécuter un calendrier.

Je vous recommande également d'Hudson pour cela. Je cherchais à faire quelque chose de similaire, créez une étiquette et avoir ce coup d'envoi d'une construction. Au lieu de cela, je choisi d'utiliser ce plugin pour hudson:

http://wiki.hudson-ci.org/display/HUDSON/ sortie + Plugin

Et l'utiliser pour stimuler la création de l'étiquette et une version release explicite.

J'utilise NAnt (et NAntContrib ) pour automatisé construit. Il vérifie automatiquement un dépôt subversion pour les modifications (s'il y en a) obtient la dernière version du code source et commence la construction.

Je ne sais pas si les tâches existantes permettent de faire exactement ce que vous voulez, mais vous pourriez peut-être utiliser comme un début et, si nécessaire, étendre les tâches à vos besoins spéciaux (Il est développé avec .NET).

Comme les autres gars ont dit, vous voulez un serveur d'intégration continue (CruiseControl, CruiseControl.Net, Hudson, etc.). Alors que vous pouvez travailler sur votre script de construction et engager des crochets pour faire la fonctionnalité que vous avez décrit, à la fin, vous vous trouvez réinventé la roue (intégration continue Server). Pas besoin de, il existe des solutions librement disponibles uniquement dans ce but.

Le processus fonctionne un peu différent de celui que vous avez décrit ci-dessus. Le serveur BUILD:

  1. Détecter un commit
  2. Commander votre code source
  3. Lancez votre script de compilation
  4. Tag sur la construction réussie

Les comi déclenche le processus et crée la balise plutôt que la balise déclenchement du processus. Le serveur fait cela mon suivi le dépôt svn plutôt que d'un crochet engager.

Consultez la documentation de CruiseControl.Net sur ce sujet, en particulier les options tagOnSuccess et tagBaseUrl. Hudson et CruiseControl devraient avoir des options similaires.

http://confluence.public.thoughtworks.org / affichage / CCNET / Subversion + Source + Ctrl + bloc

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top