2009-08-31 14 views
9

Tengo un sitio web ASP.NET MVC que estoy desarrollando y nunca tuve una estrategia de implementación decente para realizar cambios, especialmente los esquemas de bases de datos pueden implicar muchos pasos y tiempo.Ayúdeme a idear una estrategia de implementación

Estos son los pasos que estoy buscando y quisiera sugerencias sobre cómo hacerlo o herramientas (preferiblemente gratis). Siéntase libre de señalar cualquier paso que falte o cosas que estoy haciendo mal.

Edit: aparecerá una lista de herramientas que he utilizado para resolver cada etapa

  1. Salida todo el código de control de código fuente (forzosamente)
  2. depuración y la versión Build relese. La versión de lanzamiento necesita diferentes cadenas de conexión en web.config. (MSBUILD)
  3. Ejecute todas las pruebas de unidad
  4. Para cada página (aspx) combine todos los archivos JS referenciados y el código en línea en un solo archivo. Lo mismo con css
  5. Minificar dichos archivos JS y CSS.
  6. copia de seguridad de esquema de base de datos en vivo y datos
  7. de desplegar los cambios de esquema de base de datos del servidor de vida
  8. carga todos los archivos que son nuevos o han cambiado con el servidor.
  9. Copia de seguridad de todos los códigos y mi depósito de control de origen en disco externo y posiblemente en línea.

Tengo suerte de que mi sitio web no tenga visitantes entre la 1:00 a.m. y 4:00 p.m. todo esto se puede hacer sin la necesidad de servidores intermedios, etc.

Sé que mi pregunta es larga, pero esto probablemente ayudaría a mucha gente.

Respuesta

2

MSBuild (o probablemente cualquier otra tecnología de compilación) es probablemente la mejor opción para realizar todas estas tareas automáticamente.

Puede usar MSBuild para hacer de 1 a 4 sin problemas. Tenemos update our web configs with MSBuild using an XMLUpdate task, y también ejecutamos algunos scripts awk para aumentar algunos de nuestro código generado usando un Exec task.

Para # 5 y # 6, es probable que desee utilizar Exec para ejecutar algunas secuencias de comandos para obtener los archivos de copia de seguridad y ejecutarlos en las instancias de producción, pero no soy administrador de SQL, así que no tengo idea si esa es la mejor manera, o si ya hay tareas de MSBuild para esto.

Para la copia de archivos real, existe la tarea Copy, y probablemente otros, pero es posible que necesite recurrir a xcopy o un script personalizado.

Administrar la creación de su producto es un gran trabajo, pero es la razón exacta por la que se crearon tecnologías como MSBuild y Ant.

0

he intentado lo siguiente para su implementación en un servidor de producción, el uso de NAnt para manejar la lógica:

1) revisar la carpeta con la última versión de lanzamiento para el número de revisión.

Si en una revisión más reciente disponible:

2) archivo con el sitio web compilado y scripts de base (véase más adelante) Fetch.

3) Desconecte el sitio web (agregue app_offline.htm).

4) Aplicar los scripts de la base de datos (ver a continuación).

5) Ponga el sitio web en línea (elimine app_offline.htm).


En cuanto a desplegar cambios en el esquema de base de datos, me han inspirado por some posts by K. Scott Allen. Una versión corta de estos es:

1) Escriba cada cambio nuevo en el esquema de la base de datos (tablas, índices, datos iniciales) y almacene cada cambio nuevo en archivos separados (por ejemplo, schema-001.0001.sql, schema-001.0002.sql, etc.). Guarde estos archivos en una carpeta separada, p. sql\schema.

2) Script misc. objetos (procedimiento almacenado, funciones, disparadores y vistas) en archivos separados en carpetas separadas, p. sql\procedures\uspGetProducts.sql, sql\procedures\uspUpdateProduct.sql, sql\functions\, sql\triggers\, sql\views\

3) Al implementar: a) Colgar todas misceláneos. objetos de la parte 2, b) aplicar los cambios de esquema de la parte 1 que no se hayan aplicado previamente, c) y finalmente recrear todos los misc. objetos de la parte 2.

Estas secuencias de comandos se pueden implementar automáticamente, p. ej. Guiones Nant en el servidor de producción.

Cuestiones relacionadas