2011-10-04 9 views
10

En el trabajo actualmente utilizamos la siguiente estrategia de despliegue:El subir con una estrategia de implementación mejor ASP.NET

  • ejecutar un archivo por lotes para borrar todos los archivos temporales de ASP.NET
  • ejecutar un script por lotes que compila todos los archivos ASPX en su propia DLL (ASP.NET web Site , no aplicación web)
  • copiar cada archivo modificado de forma individual (ASPX y DLL) en la carpeta correspondiente en el servidor en vivo.
  • Abra la carpeta Deployment Scripts, ejecute cada script SQL (modificaciones de tablas, procesos almacenados, etc.) manualmente en la base de datos de producción.
  • Diga una oración antes de irse a dormir (bromeando sobre esta, tal vez)
  • Pruebe lo primero a la mañana siguiente y espere lo mejor: corrija los errores a medida que surgen.

Nos han mordido algunas veces en el pasado porque alguien olvidará ejecutar un script, o cree que ejecutó algo pero no lo hizo, o sobrescribió un comando relacionado con algún módulo porque hay dos archivos (uno en una carpeta Sprocs y otra en una carpeta relacionada [ModuleName]) o copiado el DLL incorrecto (ya que pueden tener los mismos nombres con un número alfanumérico aleatorio generado por .NET).

Esto me parece muy ineficiente: muchas cosas manuales y muy propenso a errores. A veces puede llevar de 2 a 3 horas para que un desarrollador realice una implementación (lo hacemos a altas horas de la noche, como alrededor de la medianoche) debido a todos los pasos manuales y recordar qué archivos deben copiarse, dónde deben copiarse. , qué secuencias de comandos deben ejecutarse, asegurándose de que las secuencias de comandos se ejecuten en el orden correcto, etc.

Tiene tiene es una manera más fácil que tomar dos horas para copiar y pegar páginas ASPX individuales, archivos DLL, imágenes, hojas de estilo y similares y ejecuta más de 30 scripts SQL manualmente. Usamos SVN como nuestro sistema de control de fuente (principalmente solo para actualización/confirmación, no hacemos ramificaciones) pero no tenemos pruebas de unidad o estrategia de prueba. ¿Existe algún tipo de herramienta que pueda estudiar para ayudarnos a hacer que nuestras implementaciones sean más fluidas?

Respuesta

8

No revisé todo, pero la serie You're deploying it wrong de Troy Hunt podría ser un buen lugar para mirar.

puntos discutidos en la serie:

  • Config transforma
  • Construir Automatización
  • integración continua
3

Tenemos cuatro etapas antes de que pueda ser desplegado.

  • Desarrollo
  • QA
  • UAT
  • Producción

Tenemos scripts de creación (dentro servidor de compilación de bambú) que se ejecuta contra el control de calidad y en contra de la UAT. Nuestro DBA es la única persona que puede ejecutar scripts de creación contra QA, UAT y PROD.Cualquier cosa que vaya desde QA -> UAT es como una implementación de prueba de ejecución. UAT se revierte copiando los sistemas de producción de nuevo.

Cuando lanzamos en Producción, simplemente creamos un sitio completamente nuevo y lo apuntamos a la base de datos de UAT y comprobamos que, desde el punto de vista medioambiental, funciona bien. Luego, cuando esto funciona bien, pulsamos el 'interruptor' y apuntemos el registro IIS de producción en el próximo sitio, y cambiamos la conexión de BD para apuntar a Prod DB.

Como utilizamos una estructura de carpetas completamente diferente, todos nuestros archivos se copian, por lo que no hay ninguna posibilidad de que falte uno. Debido a que hemos tenido corridas de prueba de implementación en UAT, sabemos que no nos hemos perdido una secuencia de comandos DB (las secuencias de comandos DB se combinan en una en general). Debido a que hemos probado una copia oculta del sitio web de IIS, sabemos que, desde el punto de vista medioambiental, debería funcionar. Luego podemos hacer todo esto durante el día, y luego hacer el último cambio parpadeando a medianoche o siempre, reduciendo el impacto en los desarrolladores.

tl; dr; Creación e implementación automatizadas; Sistema UAT para la ejecución de pruebas de ejecución; Despliegue durante las horas de trabajo; Deslice el interruptor/ejecute la actualización de DB a la medianoche.

0

tiene un entorno que está completamente aislado de su entorno de desarrollo del usuario Pruebas de aceptación (UAT), y sólo se puede acceder a la UAT gerente.

Configure una compilación UAT que puede desencadenar manualmente en cada versión, cuando se active debe enviar todos sus archivos de implementación y una lista de verificación de implementación al administrador UAT, que volverá a desplegar todos los archivos en el entorno UAT y ejecutará scripts de actualización de base de datos.

Una vez que los usuarios y probadores de las aplicaciones han firmado la versión de UAT, el administrador de UAT puede ser autorizado para implementar en el entorno de PRODUCCIÓN usando el mismo procedimiento y listas de verificación que la versión de UAT. Esto garantizará que nunca se pierda ningún paso de implementación y que pruebe el proceso de implementación antes de moverlo a producción.

+0

Está asumiendo que ** tenemos ** un Administrador de UAT, o UAT en absoluto ... o Control de Calidad para ese asunto. Los desarrolladores son nuestros propios QA. –

+0

La terminología del administrador de UAT era, en aras de la claridad, que los desarrolladores pudieran asumir esta función, siempre que siguieran los procedimientos correctos. Lo alentaría a considerar un entorno UAT para que sus implementaciones sean más fluidas y flexibles. –

0

Caveats- estoy en un ambiente donde no se puede utilizar MSI, lote, etc para el despliegue final

cosas que ayudaron:

Un servidor de compilación que hace la compilación completa en una construcción servidor y ejecuta todas las pruebas unitarias y pruebas de integración. ¿Por qué averiguar que tienes algo en una página aspx que no se compila en la noche de despliegue?(Admito que su Q no deja en claro si la compilación está ocurriendo en la noche de implementación)

Tengo una página que los administradores pueden alcanzar ese entorno de ejercicios y puntos de falla de despliegue, p. conéctese a db, conéctese a servicios de informes, envíe un correo electrónico, lea y escriba en la carpeta temporal.

Además, ponga todo lo que el administrador necesita para cambiar a un archivo externo desde web.config. La cadena de conexión y las secciones de configuración de la aplicación admiten una forma de hacerlo (es decir, no reinventar el sistema web.config solo para crear un archivo separado)

Aquí hay un artículo sobre cómo hacer mejores pruebas de integración: http://suburbandestiny.com/Tech/?p=601 Hay hay mucha literatura sobre cómo hacer pruebas unitarias, pero a menudo si la aplicación ya existe, tendrá que refactorizar hasta que la prueba de la unidad sea posible. Si eso no es una opción, entonces no seas un purista y elabora algunas pruebas de integración que sean lo más rápidas y repetibles posible.

Mantenga sus dependencias en el contenedor en lugar de GAC, ya que es más fácil decirle a un administrador que copie los archivos que enseñarles a administrar el GAC.

3

Soy un desarrollador de BuildMaster, una herramienta que puede automatizar muy fácilmente los pasos que se han descrito anteriormente, y tenemos una versión limitada gratuita para un equipo de 5 desarrolladores.

La mayoría de sus puntos débiles desaparecerán en el momento de configurar la automatización de implementación, principalmente la ejecución del script por lotes y la copia de archivo por archivo. Una vez que esté completamente automatizado, incluso puede programar la implementación para la noche y solo debe preocuparse si hay un error en el proceso (puede configurar un notificador para una compilación fallada).

En el lado de la base de datos, también puede integrar su base de datos con BuildMaster y si carga los scripts en la herramienta, se hará un seguimiento de cuáles se ejecutaron con cada base de datos.

Para ver cómo configurar un plan simple de implementación de aplicaciones web, puede ejecutar una de las aplicaciones de ejemplo incluidas. También puede consultar: http://inedo.com/support/tutorials/lunchmaster/part-1 para ver cómo crear uno usted mismo - es ligeramente obsoleto, ya que hemos hecho que sea aún más fácil comenzar de inmediato, pero los conceptos principales son los mismos.

Cuestiones relacionadas