web-dev-qa-db-fra.com

Jenkins pour automatiser le déploiement des applications ASP.NET

Existe-t-il une possibilité d'automatiser/semi-automatiser les déploiements d'applications Web ASP.NET à l'aide de Jenkins. Il peut être placé dans des environnements contrôlés ou non contrôlés, car les utilisateurs non contrôlés doivent saisir l'ID utilisateur et le mot de passe. Je cherche des moyens de copier les fichiers de la cible vers la destination et d'exécuter des scripts SQL dans un scénario de batterie de serveurs Web.

Edit Actuellement, nous utilisons des fichiers bat pour xcopy/configurer le pool d'applications/cmd sql, etc. pour déployer l'application. Mais pour que cela fonctionne, l'équipe d'assistance à la production doit télécharger le code source, créer le projet et exécuter les fichiers bat pour déployer l'application.

Maintenant, nous voulons automatiser le déploiement sans que l'utilisateur ne télécharge le code source et l'utilisateur final a juste besoin de visiter une URL et de remplir les paramètres d'ID utilisateur et de mot de passe et de sélectionner la balise svn et elle devrait être déployée. Mais Jenkins s'exécute sous une connexion anonyme, donc le fichier bat existant ne fonctionnera pas car il n'a pas les autorisations pour exécuter le script.

Je voudrais donc savoir s'il existe des alternatives pour ce genre de situation. Ce sera bien si le contexte utilisateur est emprunté en utilisant l'ID utilisateur et le mot de passe saisis permettant au fichier de commandes existant de s'exécuter sans autres modifications. Si ce n'est pas possible, nous aimerions également explorer d'autres idées, mais nous n'avons pas la possibilité de choisir un outil automatisé comme la marionnette, etc., nous devons rester avec ces fichiers de commandes.

13
Sunny

Je vais partager ce que nous avons utilisé et où nous prévoyons d'aller, peut-être que cela vous aidera à vous donner une meilleure idée.

  • Nous utilisons actuellement Jenkins et Github ensemble - une fois que quelque chose est fusionné dans master, Github dit à Jenkins et cela démarre une construction.
  • Nous utilisons un script Nant sur Jenkins pour construire le projet, exécuter des tests unitaires, et si tout semble bon, il lance un autre projet Jenkins. Le script Nant crache également un répertoire avec du code entièrement compilé/CSS/JS minimisé, etc.
  • Le projet Jenkins secondaire prend la sortie de la build et la renvoie à Github, sur un référentiel séparé.
  • Un fichier .BAT s'exécute toutes les 5 minutes sur le serveur Web intermédiaire, et il vérifie essentiellement les mises à jour de ce référentiel. Si une mise à jour est trouvée, nous téléchargeons la dernière version, sauvegardons nos fichiers de transfert, puis déployons la nouvelle version dans le dossier de transfert.
  • Pour être en ligne, nous avons un fichier .BAT qui gère la sauvegarde des fichiers en direct et la copie des fichiers de référentiel sur les fichiers en direct. Il est exécuté manuellement. Il ne gère pas les mises à jour SQL (nous les faisons à la main).

Maintenant, évidemment, ce n'est pas totalement idéal, mais cela fonctionne pour nous. Nous voulons étendre cela à l'avenir pour:

  • Utilisez Web Deploy pour pousser les fichiers de Jenkins directement vers IIS, et effectuez toutes les autres commandes que nous devons exécuter.
  • Utilisez les migrations automatiques (une fonctionnalité d'Entity Framework) pour gérer toutes les mises à jour SQL, dans le cadre de la mise en ligne.
11
Nicholas

J'utilise déjà Jenkins pour les applications .Net et TFS.

  1. Ajoutez la configuration requise dans votre projet et la transformation et archivez le code.
  2. Obtenez les dernières nouvelles de TFS (utilisez le plug-in TFS)
  3. Générez le projet (utilisez le plug-in MSBuild). vous pouvez publier le code à partir de Msbuild en utilisant des arguments de ligne de commande.
  4. Synchronisez le code de l'emplacement de publication vers la destination à l'aide de la commande msdeploy.exe (située dans "C:\Program Files (x86)\IIS\Microsoft Web Deploy V2\msdeploy.exe")
  5. Vous pouvez également envoyer des e-mails et effectuer la sauvegarde via Jenkins.

Vous pouvez également utiliser MSTest.exe pour exécuter le test unitaire et l'afficher sur la console jenkin ou publier également le résultat du test.

4
Sanjeev Kumar