Je participe à la maintenance d'un portefeuille assez important d'applications .NET. Le portefeuille contient également des applications héritées construites sur d'autres plates-formes - C ++ natif, formulaires ECLIPS, etc.
J'ai actuellement un framework de build complexe au dessus de NAnt qui gère les builds pour toutes ces applications. Le framework de construction utilise NAnt pour faire un certain nombre de choses différentes:
- Extraire le code de Subversion et créer des balises dans Subversion
- Générez le code à l'aide de MSBuild pour .NET ou d'autres compilateurs pour d'autres plates-formes
- Jetez un œil à l'intérieur des fichiers AssemblyInfo pour incrémenter les numéros de version
- Efface certains fichiers qui ne devraient pas être inclus dans les versions / versions
- Libère le code dans les dossiers de déploiement
- Code zippé à des fins de sauvegarde
- Déployer les services Windows; les démarrer et les arrêter
- Etc.
La plupart de ces choses peuvent être effectuées avec NAnt seul, mais nous avons créé quelques tâches d'extension pour que NAnt fasse certaines choses spécifiques à notre environnement. De plus, la plupart de ces processus ci-dessus sont généralisés et réutilisés dans un grand nombre de nos différents scripts de création d'applications, afin de ne pas répéter la logique. Ce n'est donc pas un simple code NAnt, ni de simples scripts de construction. Il existe des dizaines de fichiers NAnt qui se réunissent pour exécuter une génération.
Dernièrement, je n'ai pas été satisfait de NAnt pour deux raisons: (1) sa syntaxe est tout simplement horrible - les langages de programmation au-dessus de XML sont vraiment horribles à maintenir, (2) le projet semble être mort sur la vigne; il n'y a pas eu une tonne de mises à jour récemment et il semble que personne ne soit vraiment à la barre. Essayer de le faire fonctionner avec .NET 4 a causé des problèmes en raison de ce manque d'activité.
Donc, avec tout ce contexte à l'écart, voici ma question. Étant donné certaines des choses que je veux accomplir sur la base de cette liste ci-dessus, et étant donné que je suis principalement dans une boutique .NET, mais que je dois également créer des projets non-NET, existe-t-il une alternative à NAnt que je devrais envisager passer à?
Les choses sur mon radar incluent Powershell (avec ou sans psake ), MSBuild seul et râteau . Ils ont tous des avantages et des inconvénients. Par exemple, MSBuild est-il suffisamment puissant? Je me souviens l'avoir utilisé il y a des années et il ne semblait pas avoir autant de puissance que NAnt. Est-ce que je veux vraiment que mon équipe apprenne Ruby juste pour faire des builds en utilisant le râteau? Psake est-il vraiment suffisamment mature pour qu'un projet puisse épingler mon portfolio? Est-ce que Powershell est "trop proche du métal" et je vais devoir écrire ma propre bibliothèque de build comme psake pour l'utiliser seule?
Y a-t-il d'autres outils que je devrais considérer? Si vous étiez impliqué dans la maintenance d'un portefeuille .NET d'une complexité importante, quel outil de construction envisageriez-vous? Qu'est-ce que votre équipe utilise actuellement?
la source
J'utilise Automated Build Studio . Je veux m'en débarrasser.
La seule raison pour laquelle je ne passe pas à 100% MS Build ou Team Foundation Build est le coût que cela impliquera pour reconstruire les scripts qui fonctionnent parfaitement aujourd'hui. Les scripts ne changent pas beaucoup ...
Cependant, pour le prochain produit, ce sera Team Foundation Build sans aucune hésitation pour les principales raisons suivantes (elles sont bien plus):
Puisque vous êtes également en .NET, je vous recommande vivement d'utiliser TFB.
Si vous ne pouvez pas demander Bizspark ou ne pouvez pas vous permettre d'acheter la licence, vous pouvez opter pour CruiseControl.NET + MS Build et quelques scripts de support. Dans une grande entreprise de services publics pour laquelle je travaillais, nous avions utilisé CruiseControl.NET pour créer, tester, déployer et signaler tous nos projets. Il comprenait le déploiement automatique des services Web.
la source
FinalBuilder peut faire tous les éléments demandés, avec une belle interface graphique et une application serveur de création lancée gratuitement.
la source
Je fais actuellement ce que vous faites (c'est-à-dire de la construction au packaging au déploiement) en utilisant MSBuild (> 3000 lignes de scripts). Le CI utilise CruiseControl.Net et j'espère pouvoir passer à TeamBuild à l'avenir. MSBuild est encombrant (programmation en XML) mais il est assez puissant spécialement le traitement par lots et le suivi des dépendances. Il est activement maintenu et amélioré dans les nouvelles versions .Net et est la base du système de construction dans Visual Studio et TFS. Les fichiers de projet Visual Studio sont également des projets MSBuild et je peux me connecter à divers points d'extension. Le pack d'extension MSBuildcomporte de nombreuses tâches supplémentaires et il est très facile de créer vos propres tâches par programmation. Je suggère de réfléchir sérieusement à MSBuild. Dernièrement, j'apprends également PowerShell et je trouve cela facile pour certaines tâches, spécialement dans la phase de déploiement, comme l'installation et la configuration de certificats, IIS, etc.
Modifier le projet MSBuild dans VisualStudio car il comprend la syntaxe et vous donne intellisense.Voici quelques autres bons utilitaires qui vous aideront avec MSBuild.
MSBuild Launch Pad - Pour les extensions de shell
MSBuild SideKicks - Éditez , exécutez et déboguez graphiquement des scripts.
la source
Peut-être que vous demandez trop de votre script de build et pas assez de votre serveur de build - avec Team City, vous pourriez facilement avoir des scripts simples qui accomplissent chacune de vos balles, dans la langue ou la pile qui a du sens et utiliser les tâches de construction de TeamCity pour enchaînez les choses comme il convient.
la source
Je recommande fortement TeamCity, il est facile à configurer et à installer. MSBuild est préférable à NAnt pour la simple raison que tous les fichiers de projet / solution dans le vs2008 / 2010 sont des fichiers MSBuild techniquement, mais vous pouvez configurer TeamCity avec MSBuild ou NAnt.
Bien sûr, TeamCity vous coûtera. Personnellement, j'ai donné un choix, je préférerais le râteau, tout simplement parce que la friction avec les outils Ruby par rapport à d'autres, même si psake est également un bon candidat.
la source
Avez-vous pensé à Hudson ? Cela pourrait être un problème, car cela nécessite le serveur d'application Java pour fonctionner, mais je pense que cela pourrait vous permettre d'utiliser votre script NAnt actuel et de le construire en utilisant d'autres outils.
la source