10
votes

À venir avec une meilleure stratégie de déploiement ASP.NET

Au travail, nous utilisons actuellement la stratégie de déploiement suivante:

  • Exécutez un script de lot pour effacer tous les fichiers ASP.NET temporaires
  • Exécutez un script de lot qui compile chaque fichier aspx dans sa propre dll (ASP.NET Web Site , pas d'application Web)
  • Copiez chaque fichier modifié individuellement (ASPX et DLL) dans le dossier approprié sur le serveur LIVE.
  • Ouvrez le dossier DLOCLIMTY Scripts , exécutez chaque script SQL (modifications de tableau, Procs stockés, etc.) manuellement sur la base de données de production.
  • Dis une prière avant d'aller dormir (plaisanter sur celui-ci, peut-être)
  • Testez la première chose le lendemain matin et espérons que les meilleurs bugs sont les suivants.

    Nous avons été mordu quelques fois dans le passé parce que quelqu'un oubliera de gérer un script ou de penser qu'ils ont manifesté quelque chose mais ne l'ont pas fait, ou écrasé une SproC liée à certains module, car il y a deux fichiers (un dans une SPROC dossier et un dans un dossier associé [Modulename]) ou copié la mauvaise DLL (car ils peuvent avoir les mêmes noms avec un numéro alphanumérique aléatoire généré par .NET).

    Cela semble très inefficace pour moi - beaucoup de choses manuelles et très sujettes aux erreurs. Il peut parfois prendre 2-3 heures ou plus pour un développeur pour effectuer un déploiement (nous les faisons tard dans la nuit, comme à minuit) en raison de toutes les étapes manuelles et de rappeler quels fichiers doivent être copiés, où ils doivent être copiés. , quels scripts doivent être exécutés, ce qui permet de faire fonctionner les scripts dans le bon ordre, etc.

    Il y a obtenu être un moyen plus simple que de prendre deux heures pour copier et coller des pages ASPX individuelles, des dlls, des images, des feuilles de style et d'autres scripts de plus de 30+ SQL. Nous utilisons SVN comme système de contrôle source (principalement pour mettre à jour / commenter cependant, nous ne faisons pas de ramification), mais nous n'avons aucun test d'unité ni stratégie de test. Y a-t-il une sorte d'outil que je peux envisager de nous aider à faire de nos déploiements plus lisses?


0 commentaires

6 Réponses :


8
votes

Je n'ai pas traversé tout cela, mais le Vous déployez C'est faux séries de Troy Hunt pourrait être un bon endroit à regarder.

points discutés dans la série:

  • config transforme
  • Construire l'automatisation
  • Intégration continue

0 commentaires

3
votes

Nous avons quatre étapes avant de pouvoir être déployé.

  • Développement
  • qa
  • UAT
  • Production

    Nous avons construire des scripts (à l'intérieur du serveur de construction de bambou) en cours d'exécution contre QA et contre UAT. Notre DBA est la seule personne qui peut exécuter créer des scripts contre qa, uat et prod. Tout ce qui va de QA -> UAT est comme un déploiement de test. Uat est retourné en copiant à nouveau les systèmes de production.

    Lorsque nous relâchons dans la production, nous créons simplement un nouveau site et le signalez-le à la base de données UAT et testez-le à l'écoute de l'environnement. Ensuite, quand cela fonctionne bien, nous explosons "commutateur" et pointez l'enregistrement IIS de production sur le site suivant et modifiez la connexion DB au point de ProD DB.

    Parce que nous utilisons une structure de dossiers complètement diff complètement, tous nos fichiers sont copiés de sorte qu'il n'y ait aucune chance d'absorber une. Parce que nous avons eu des essais de déploiement dans UAT, nous savons que nous n'avons pas manqué de script de DB (les scripts DB sont combinés en une manière générale). Parce que nous avons testé une copie d'ombre du site Web de l'IIS, nous savons que l'environnement devrait fonctionner. Nous pouvons ensuite faire tout cela configuré pendant la journée - puis effectuer l'interrupteur final à hurler à minuit ou à la réduction de l'impact sur Devs.

    tl; dr; construire et déployer automatisé; Système UAT pour le déploiement de test de test; Déploiement pendant les heures de travail; Mise à jour de DB à minuit.


0 commentaires

2
votes

S'il vous plaît voir ce blog post et conversation associé par intitulé " Déploiement Web Génial "


0 commentaires

0
votes

Avoir un environnement de test d'acceptation de l'utilisateur (UAT) entièrement isolé de votre environnement de développement et uniquement accessible au gestionnaire UAT.

Configuration Une construction UAT que vous pouvez déclencher manuellement lors de chaque version, une fois déclenchée, vous devez envoyer tous vos fichiers de déploiement ainsi qu'une liste de contrôle du déploiement sur le gestionnaire UAT, qui redéfinira tous les fichiers dans l'environnement UAT et exécuter toute base de données Scripts de mise à niveau.

Une fois que les applications utilisateurs et les testeurs ont signé la version UAT, le gestionnaire UAT peut être autorisé à déployer dans l'environnement de production en utilisant exactement la même procédure et les mêmes vérifictions que la version UAT. Cela garantira que vous ne manquez jamais de pas de déploiement et de tester le processus de déploiement avant de la déplacer en production.


2 commentaires

Vous supposez que nous a un gestionnaire UAT ou UAT ... ou QA pour cette affaire. Les développeurs sont notre propre QA.


La terminologie UAT Manager était dans votre souci de clarté, vous pourriez avoir des développeurs assumer ce rôle, à condition qu'ils suivent les procédures correctes. Je vous encourage à envisager d'envisager un environnement UAT pour rendre vos déploiements plus lisses et plus flexibles.



0
votes

CAVEATS - Je suis dans un environnement où nous ne pouvons pas utiliser MSI, Lot, etc. pour le déploiement final

choses qui ont aidé:

Un serveur de construction qui effectue la compilation complète sur un serveur de construction et exécute tous les tests d'unités et tests d'intégration. Pourquoi savoir que vous avez quelque chose dans une page ASPX qui ne compile pas sur la nuit de déploiement? (J'admets que votre Q ne précise pas si la compilation se passe sur la nuit de déploiement)

J'ai une page que les administrateurs peuvent atteindre cet exercice des points de défaillance de l'environnement et du déploiement, par ex. Connectez-vous à dB, connectez-vous aux services de rapport, envoyer un email, lire et écrire dans le dossier Temp.

En outre, mettez toutes les choses que l'administrateur doit changer d'un fichier externe à partir de web.config. Les sections de réglage de la chaîne de connexion et de l'application soutiennent de manière native un moyen de faire cela (c'est-à-dire ne réinventez pas le système Web.config uniquement pour créer un fichier séparé)

Voici un article sur la manière de faire de meilleurs tests d'intégration: http://suburbandestiny.com/tech /? p = 601 Il y a une tonne de bonne littérature comment faire des tests de l'unité, mais souvent si votre application existe déjà, vous devrez refroidir jusqu'à ce que les tests unitaires deviennent possibles. Si ce n'est pas une option, alors ne soyez pas puriste et placez quelques tests d'intégration rapides et répétables que possible.

Gardez vos dépendances à la poubelle au lieu de GAC, car il est plus facile de dire à un administrateur de copier des fichiers qu'il s'agit de leur apprendre à administrer le GAC.


0 commentaires

3
votes

Je suis un développeur pour Buildmaster , un outil qui peut facilement automatiser les étapes que vous avez décrites ci-dessus et Nous avons une version limitée gratuite pour une équipe de 5 développeurs.

La plupart de vos points de douleur disparaîtront le moment où vous configurez l'automatisation du déploiement - principalement l'exécution du script de lot et la copie de fichiers par fichier. Une fois que vous êtes entièrement automatisé, vous pouvez même planifier le déploiement de nuit et ne vous inquiétez que s'il y a une erreur dans le processus (vous pouvez configurer un notificateur pour une version échouée).

du côté de la base de données, vous pouvez intégrer votre base de données avec BuildMaster également et si vous téléchargez les scripts dans l'outil, il restera une trace de laquelle ils sont exécutés contre quelle base de données.

Pour voir comment configurer un plan de déploiement d'applications Web simple, vous pouvez exécuter l'un des exemples d'applications incluses. Vous pouvez également consulter: http://inedo.com/support/tatudials/lunchmaster/PART -1 Pour voir comment créer un vous-même - c'est légèrement dépassé, car nous l'avons fait encore plus facile de commencer à démarrer hors de la boîte, mais les concepts principaux sont les mêmes.


0 commentaires