Étape par étape ASP.NET construction/déploiement automatisés

semble comme il ya tellement de différentes façons d'automatiser sa construction/déploiement qu'il devient difficile de parser à travers tous les différents scénarios que les gens soutiennent dans les tutoriels sur le web. Je voulais donc présenter la question à la foule de stackoverflow ... quelle serait la meilleure façon de mettre en place un système automatisé de construction et de déploiement en utilisant la configuration suivante:

  • Visual Studio 2008
  • Application Web Projet
  • CruiseControl.NET

L'une des premières choses que j'ai essayées a été de faire fermer automatiquement la sortie par CCnet et de la copier sur le serveur, mais cela nécessite un travail manuel pour décompresser à la destination. Cependant, si nous essayons de copier tous les fichiers individuellement, cela pourrait prendre beaucoup de temps s'il s'agit d'une grande application (build server vit à l'extérieur du datacenter de notre bureau)... Je le sais).

également de un intérêt particulier est la façon dont nous soutiendrions les environnements multiples que nous avons dev, qa, uat, et puis bien sûr prod.

MSDeploy semble vraiment intéressant, mais à moins que je n'interprète mal la littérature, n'aide pas dans le scénario de déploiement à partir de la sortie d'un serveur de construction. Il semble que ce soit utile pour déployer un build à travers une ferme de construction ... mais même pour un déploiement d'un environnement à l'autre, on pourrait il faut modifier manuellement les paramètres de configuration et les URLs des services web, etc.

30
demandé sur Joel Martinez 2008-09-12 02:01:09

7 réponses

j'ai récemment passé quelques jours de travail sur l'automatisation des déploiements dans mon entreprise.

nous utilisons une combinaison de CruiseControl, NAnt, MSBuild pour générer une version de l'application. Ensuite, un script séparé utilise MSDeploy et XCopy pour sauvegarder le site en direct et transférer les nouveaux fichiers.

Notre solution est brièvement décrit dans la réponse à cette question Automatiser le Déploiement d'Applications Web?

15
répondu Sam Wessel 2017-05-23 12:18:27

vous pourriez être intéressé par MSDeploy . Voici un Scott, Hanselman post sur ce. Il n'est disponible qu'en avant-première technique pour le moment (septembre 2008) mais mérite d'être évalué en fonction de vos besoins.

6
répondu Iain 2008-09-12 16:29:11

il y a un autre nouvel outil de construction (une enveloppe très intelligente) appelé NUBuild . Sa légèreté, son code source ouvert, sa facilité d'installation et son entretien quasi sans contact. J'aime vraiment ce nouvel outil et nous l'avons fait outil standard pour notre processus continu de construction et d'intégration de nos projets (nous avons environ 400 projets parmi 75 développeurs). De l'essayer.

http://nubuild.codeplex.com /

  • interface en ligne de commande facile à utiliser
  • capacité à cibler tout le cadre. net version 1.1, 2.0, 3.0 et 3.5
  • prend en charge la configuration basée sur XML
  • prend en charge à la fois le projet et le dossier références
  • génère automatiquement le commandé construire la liste" pour une projet-Entretien sans contact.
  • capacité de détection et d'affichage circulaire dependencies
  • effectuer la construction en parallèle - décide automatiquement lequel des projets dans la liste de construction générée peut être construit indépendamment.
  • la Capacité à gérer le proxy assemblées
  • fournit un indice visuel de la construction processus, par ex. en montrant "% ", "l'état actuel", etc.
  • génère un journal d'exécution détaillé à la fois en format XML et texte
  • facilement intégré avec Cruise-Control.Net en continu système d'intégration
  • peut utiliser un logger personnalisé comme XMLLogger lorsque le ciblage 2.0 + version
  • possibilité d'analyser les journaux d'erreurs
  • capacité de déployer des assemblages construits pour emplacement spécifié par l'utilisateur
  • possibilité de synchroniser le code source avec système de contrôle à la source
  • la Version de la capacité de gestion
3
répondu netbuild 2009-08-23 04:41:46

avez-vous la capacité d'exécuter des commandes à distance? L'utilitaire PsExec de systèmes internes permettrait d'exécuter un programme de décompression en ligne de commande sur la machine distante. Si vous avez un script qui copie la construction comme A.fichier zip sur le site distant, vous auriez juste besoin d'une ligne pour la PsExec appel pour décompresser les fichiers.

2
répondu Chris Miller 2008-09-12 15:27:04

j'ai eu un liés à la question sur l'obtention d'un déploiement d'un ensemble de fichiers à partir d'une version automatique. J'ai trouvé que les projets de déploiement Web (liens et tout dans l'ancienne question) ont fait ce dont j'avais besoin - ils sont un VS et MSBuild add-on.

1
répondu Simon Steele 2017-05-23 10:29:36

C'est un problème courant (et j'aurais aimé le lire plus tôt) pour tout développement, pas seulement ASP.NET. Étant l'un de ses développeurs, mon équipe utilise naturellement BuildMaster en interne pour l'ensemble du processus de publication, et pour la plupart des scénarios, il est gratuit. Dans l'outil, nous sommes en mesure d'effectuer toutes les constructions de CI standard pour créer des artéfacts et ensuite mettre en place un processus d'automatisation pour déployer ces artéfacts à l'un des 40 + serveurs que nous avons en interne ou en externe a accueilli, selon l'application ou de l'environnement.

puisque vous avez spécifiquement mentionné le déploiement dans différents environnements de test, c'est un aspect fondamental de l'outil. L'idée est de modéliser le flux de travail de l'environnement (par exemple intégration -> QA -> Production) que vous avez déjà en place et de promouvoir essentiellement une construction tout le chemin du contrôle à la source à la production. La plupart du temps, c'est aussi simple que d'ajouter une action de déploiement qui déploie un artefact de l'environnement, d'autres fois, il peut être beaucoup plus complexe.

vous avez également mentionné que les modifications de 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 les déploiements, assurant ainsi que les dernières modifications sont appliquées automatiquement avec une simple action "deploy configuration files" dans votre plan de déploiement.

une chose que vous n'a pas mentionné en ce qui concerne ce processus est l'aspect de déploiement de la base de données. La plupart ASP.NET les applications nécessitent une base de données associée, sinon elles pourraient être des fichiers HTML statiques. Il est essentiel que le schéma de base de données soit mis à jour à la version de base de données appropriée à chaque déploiement. Il y a, sans surprise, un module au sein de BuildMaster qui gère cela pour vous aussi. L'idée est de stocker les scripts DDL-DML dans l'outil lui-même, et en exécutant les scripts une seule fois par environnement, il garantit que toutes vos bases de données à travers chaque environnement sont à jour au fur et à mesure que vos constructions sont déployées à travers eux. Autres scripts (par ex. procédures stockées, vues, déclencheurs, etc.) sont essentiellement des fichiers de code et appartiennent donc au contrôle 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 de déploiement que la plupart des développeurs ne pensent pas ce sujet est l'automatisation des processus. De nombreux développeurs doivent effectuer des approbations ou remplir des formulaires de demande de changement afin d'effectuer manuellement ces processus. Encore une fois, tout cela est disponible dans le cadre de la configuration automatisée du flux de travail au sein de BuildMaster. Vous pouvez configurer des bloqueurs qui ne permettent pas à la promotion de dire l'environnement QA à moins que tous les tests de l'unité aient réussi, ou bloquer la promotion dans L'environnement de mise en scène à moins que quelqu'un de l'équipe QA n'approuve la construction et que tous les problèmes de votre outil de suivi des problèmes soient résolu/fermé pour le rejet.

pendant que je réalise que j'ai laissé tomber CC.NET d'après la réponse, nos applications sont toutes construites et déployées par BuildMaster de sorte que nous n'en avons plus besoin, bien que nous puissions tout aussi facilement récupérer les artefacts d'un emplacement de chute et les déployer dans des environnements ultérieurs.

1
répondu John Rasch 2013-05-22 16:35:06

je vois que beaucoup de gens utilisent CC pour leurs projets .NET, mais pourquoi ne pas utiliser Jenkins, Sonarqube? Ils ont obtenu tout ce que vous devez. J'ai organisé tout ça en 3 jours. J'ai un serveur Win 2008 R2, MSSQL, Jenkins, VIsual SVN et Sonarqube.

tout fonctionne très bien et u obtenir tous les paramètres sur votre projet. Sonarqube utilise Gallio, Gendarme, FxCop, Stylecop, NDepths et PartCover pour obtenir vos mesures et tout cela est assez simple puisque SonarQube le faire automatiquement sans beaucoup configuration.

je poste som photos pour u trop obtenir une sensation pour elle. Voici Jenkins witch construit et obtenir des mesures Sonar et un autre travail pour le déploiement automatique à IIS

et Sonarqube, tous les paramètres de mon projet. C'est une application simple MVC4, mais elle fonctionne très bien!:

Si vous voulez plus d'informations, je peux être plus mais je pense que vous devriez au moins envisager de jenkins. Si CC vous suit mieux, au moins vous avez regardé une bonne alternative avant de choisir.

cette configuration utilise MSBuild, aussi construire et déployer les applications.

1
répondu Jonathan 2013-07-14 11:57:55