Question

On dirait qu'il existe tellement de façons différentes d'automatiser sa construction/déploiement qu'il devient difficile d'analyser tous les différents scénarios pris en charge dans les didacticiels sur le Web.Je voulais donc présenter la question à la foule de stackoverflow...quelle serait la meilleure façon de configurer un système de construction et de déploiement automatisé en utilisant la configuration suivante :

  • Visual Studio 2008
  • Projet d'application Web
  • CruiseControl.NET

L'une des premières choses que j'ai essayées a été de faire en sorte que CCnet compresse automatiquement la sortie et la copie sur le serveur, mais cela nécessite ensuite un travail manuel pour la décompresser à destination.Cependant, si nous essayons de copier tous les fichiers individuellement, cela pourrait prendre beaucoup de temps s'il s'agit d'une application volumineuse (le serveur de build réside en dehors du centre de données de notre bureau...Je sais).

Il est également particulièrement intéressant de savoir comment nous prendrions en charge plusieurs environnements, car nous avons dev, qa, uat, et bien sûr prod.

MSDéploiement Cela semble vraiment intéressant, mais à moins que j'interprète mal la littérature, cela n'aide pas dans le scénario de déploiement à partir de la sortie d'un serveur de build.Au contraire, il semble que cela sera utile pour déployer une version sur une ferme de construction...mais même pour le déploiement d'un environnement à un autre, il faudrait modifier manuellement les paramètres de configuration et les URL des services Web, etc.

Était-ce utile?

La solution

J'ai récemment passé quelques jours à travailler sur l'automatisation des déploiements dans mon entreprise.

Nous utilisons une combinaison de CruiseControl, NAnt, MSBuild pour générer une version finale de l'application.Ensuite, un script distinct utilise MSDeploy et XCopy pour sauvegarder le site actif et transférer les nouveaux fichiers.

Notre solution est brièvement décrite dans une réponse à cette question Automatiser le déploiement des applications Web ?

Autres conseils

Vous pourriez être intéressé par MSDéploiement. Voici un article de Scott Hanselman à ce sujet.Il n'est disponible que sous forme d'aperçu technique pour le moment (septembre 2008), mais mérite d'être évalué par rapport à vos besoins.

Il existe un autre nouvel outil de construction (un wrapper très intelligent) appelé NUBuild.Il est léger, open source et extrêmement facile à installer et offre une maintenance presque sans contact.J'aime beaucoup ce nouvel outil et nous en avons fait un outil standard pour notre processus continu de construction et d'intégration de nos projets (nous avons environ 400 projets répartis chez 75 développeurs).Essaye le.

http://nubuild.codeplex.com/

  • Interface de ligne de commande facile à utiliser
  • Capacité à cibler toutes les version .NET Framework IE1.1, 2.0, 3.0 et 3.5
  • Prend en charge la configuration basée sur XML
  • Prend en charge les références de projet et de fichiers
  • Génère automatiquement la «liste de construction commandée complète» pour un projet donné - pas de maintenance tactile.
  • Capacité à détecter et à afficher les dépendances circulaires
  • Effectuer Parallel Build - décide automatiquement de laquelle des projets dans la liste de construction générée peut être construit indépendamment.
  • Capacité à gérer les assemblys proxy
  • Fournit un indice visuel sur le processus de construction, par exempleAffichage de «% terminé», «statut actuel» etc.
  • Génère un journal d'exécution détaillé à la fois au format XML et texte
  • Facilement intégré au système d'intégration continue Cruise-Control.NET
  • Peut utiliser un journal de connexion personnalisé comme XmlLogger lors du ciblage de la version 2.0 +
  • Possibilité d'analyser les journaux d'erreurs
  • Possibilité de déployer des assemblages construits à l'emplacement spécifié par l'utilisateur
  • Capacité à synchroniser le code source avec le système de contrôle source
  • Capacité de gestion des versions

Avez-vous la possibilité d'exécuter des commandes à distance ?Le PsExec utilitaire de Systèmes internes permettrait d'exécuter un programme de décompression en ligne de commande sur la machine distante.Si vous disposez d'un script qui copie la build sous forme de fichier .zip sur le site distant, vous n'aurez besoin que d'une ligne supplémentaire pour que l'appel PsExec décompresse les fichiers.

J'ai eu un question connexe sur l'obtention d'un ensemble de fichiers déployables à partir d'une version automatisée.J'ai trouvé que les projets de déploiement Web (liens et tout dans l'ancienne question) faisaient ce dont j'avais besoin - il s'agit d'un module complémentaire VS et MSBuild.

Il s'agit d'un problème courant (et j'aurais aimé le lire plus tôt) pour tous les développements, pas seulement pour ASP.NET.Etant l'un de ses développeurs, mon équipe utilise naturellement Maître de construction en interne pendant tout le processus de publication, et pour la plupart des scénarios, c'est gratuit.Au sein de l'outil, nous sommes en mesure d'effectuer toutes les versions standard de CI pour créer des artefacts, puis de mettre en place un processus d'automatisation pour déployer ces artefacts sur l'un des plus de 40 serveurs que nous avons hébergés en interne ou en externe, en fonction de l'application ou de l'environnement spécifique. .

Puisque vous avez spécifiquement mentionné le déploiement dans différents environnements de test, il s'agit d'un aspect fondamental de l'outil.L'idée est de modéliser le workflow de l'environnement (par ex.Intégration -> QA -> Production) que vous avez déjà en place et faites essentiellement la promotion d'une version depuis le contrôle des sources jusqu'à la production.La plupart du temps, il s'agit simplement d'ajouter une action de déploiement qui déploie un artefact dans l'environnement. Dans d'autres cas, cela peut être beaucoup plus complexe.

Vous avez également mentionné avec désinvolture que les modifications des fichiers de configuration font partie du déploiement, qui est un autre composant intégré à BuildMaster.L'idée que nous avions était d'utiliser l'outil lui-même comme plaque tournante centrale pour tous les fichiers de configuration et déploiements, garantissant ainsi que les dernières modifications sont appliquées automatiquement avec une simple action « déployer les fichiers de configuration » dans votre plan de déploiement.

Une chose que vous n'avez pas mentionnée concernant ce processus est l'aspect déploiement de la base de données.La plupart des applications ASP.NET nécessitent une base de données associée, sinon il pourrait s'agir simplement de fichiers HTML statiques.Il est crucial que le schéma de base de données soit mis à jour vers la version de base de données appropriée à chaque déploiement.Sans surprise, il existe un module dans BuildMaster qui gère également cela pour vous.L'idée est de stocker les scripts DDL-DML au sein de l'outil lui-même, et en exécutant des scripts juste une fois par environnement, il garantit que toutes vos bases de données dans chaque environnement sont à jour au fur et à mesure que vos builds sont déployées via elles.D'autres scripts (par ex.procédures stockées, vues, déclencheurs, etc.) sont essentiellement des fichiers de code et appartiennent donc au contrôle de code source.Ces scripts de type DROP-CREATE-CONFIGURE peuvent être exécutés à chaque fois dans la plupart des cas avec une simple action de déploiement.

Une autre pièce du puzzle du déploiement à laquelle la plupart des développeurs ne pensent pas est l’automatisation des processus.De nombreux développeurs doivent effectuer des approbations ou remplir des formulaires de demande de modification afin d'exécuter manuellement ces processus.Encore une fois, tout cela est disponible dans le cadre de la configuration automatisée du flux de travail dans BuildMaster.Vous pouvez configurer des bloqueurs qui n'autorisent pas la promotion dans l'environnement d'assurance qualité à moins que tous les tests unitaires n'aient réussi, ou bloquer la promotion vers l'environnement de préparation à moins qu'un membre de l'équipe d'assurance qualité n'approuve la construction et que tous les problèmes dans votre outil de suivi des problèmes soient résolus/fermés pour cette version particulière.

Même si je me rends compte que j'ai laissé de côté CC.NET dans la réponse, nos applications sont toutes construites et déployées via BuildMaster, nous n'en avons donc plus besoin, même si nous pourrions tout aussi facilement récupérer les artefacts à partir d'un emplacement de dépôt et les déployer dans des environnements ultérieurs.

Je vois que beaucoup de gens utilisent CC pour leurs projets .NET, mais pourquoi ne pas utiliser Jenkins, Sonarqube ?Ils ont tout ce dont vous avez besoin.J'ai configuré tout cela en 3 jours.J'ai un serveur Win 2008 R2, MSSQL, Jenkins, VIsual SVN et Sonarqube.

Tout fonctionne très bien et vous obtenez toutes les mesures de votre projet.Sonarqube utilise Gallio, Gendarme, FXcop, Stylecop, NDepths et PartCover pour obtenir vos métriques et tout cela est assez simple puisque SonarQube le fait automatiquement sans trop de configuration.

Je poste quelques photos pour toi aussi, tu as une idée.Voici la sorcière Jenkins qui construit et obtient les métriques Sonar et un autre travail pour le déploiement automatique sur IIS.

Et Sonarqube, toutes les métriques de mon projet.Il s'agit d'une application MVC4 simple, mais elle fonctionne très bien ! :

Si vous voulez plus d'informations, je peux être plus précis mais je pense que vous devriez au moins considérer Jenkins.Si CC vous convient mieux, au moins vous avez recherché une bonne alternative avant de choisir.

Toute cette configuration utilise MSBuild également pour créer et déployer les applications.

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