2008-09-11 16 views
30

Parece que hay tantas formas diferentes de automatizar la compilación/implementación que es difícil de analizar a través de todos los diferentes escenarios que la gente admite en los tutoriales en la web. Así que quería presentar la pregunta a la multitud StackOverflow ... ¿cuál sería la mejor manera de establecer un sistema de construcción y despliegue automatizado utilizando la siguiente configuración:Paso a paso Creación/despliegue automatizado de ASP.NET

  • proyecto de Visual Studio 2008
  • de aplicaciones web
  • CruiseControl.NET

Una de las primeras cosas que intenté era tener CCNET cremallera automáticamente la salida y copiarlo en el servidor, pero que requiere trabajo manual para descomprimir en el destino. Sin embargo, si tratamos de copiar todos los archivos individualmente, podría tomar mucho tiempo si es una aplicación grande (el servidor de compilación vive fuera del centro de datos en nuestra oficina ... Lo sé).

También es de particular interés cómo admitiríamos varios entornos ya que tenemos dev, qa, uat y luego, por supuesto, prod.

MSDeploy parece muy interesante, pero a menos que esté interpretando la literatura de forma incorrecta, no ayuda en el escenario de la implementación de la salida de un servidor de compilación. En todo caso, parece que será útil para implementar una compilación en una granja de compilación ... pero incluso para implementar de un entorno a otro, uno tendría que cambiar manualmente las configuraciones y las URL de los servicios web, etc.

Respuesta

15

Recientemente, pasé unos días trabajando en la automatización de implementaciones en mi empresa.

Utilizamos una combinación de CruiseControl, NAnt, MSBuild para generar una versión de lanzamiento de la aplicación. Luego, un script separado usa MSDeploy y XCopy para hacer una copia de seguridad del sitio en vivo y transferir los nuevos archivos.

Nuestra solución se describe brevemente en una respuesta a esta pregunta Automate Deployment for Web Applications?

6

Usted podría estar interesado en MSDeploy. Here's una publicación de Scott Hanselman sobre esto. Solo está disponible como una vista previa técnica en este momento (septiembre de 2008), pero vale la pena evaluarlo en función de sus requisitos.

+0

Hmm, aunque eso parece muy bueno ... no parece ayudar al escenario de la compilación automatizada (a menos que esté leyendo los documentos incorrectamente). –

1

Tuve un related question para obtener un conjunto desplegable de archivos de una compilación automatizada. Descubrí que los proyectos de implementación web (enlaces y todo en la pregunta anterior) hicieron lo que necesitaba: son un complemento de VS y MSBuild.

2

¿Tiene la capacidad de ejecutar comandos de forma remota? La utilidad PsExec de Systinternals permitiría ejecutar una línea de comando para descomprimir el programa en la máquina remota. Si tiene un script que copia la compilación como un archivo .zip en el sitio remoto, solo necesitaría una línea más para la llamada PsExec para descomprimir los archivos.

3

Hay otra nueva herramienta de construcción (un envoltorio muy inteligente) llamada NUBuild. Es liviano, de código abierto y extremadamente fácil de configurar y proporciona un mantenimiento casi sin contacto. Realmente me gusta esta nueva herramienta y la hemos convertido en una herramienta estándar para nuestro proceso continuo de construcción e integración de nuestros proyectos (tenemos alrededor de 400 proyectos en 75 desarrolladores). Pruébalo.

http://nubuild.codeplex.com/

  • interfaz fácil de usar línea de comandos
  • capacidad de dirigirse a todo marco versión .Net es decir, 1,1, 2,0, 3,0 y 3,5
  • Soporta XML basado configuración
  • Soporta tanto proyecto y presentar referencias
  • genera automáticamente el “orden completa ed build list "para un proyecto dado - Sin mantenimiento táctil.
  • Capacidad para detectar y mostrar dependencias circulares
  • Realizar acumulación paralelo - decide automáticamente cuál de los proyectos en la lista acumulación generada se puede construir de forma independiente.
  • Capacidad para manejar conjuntos proxy
  • Proporciona pista visual para el proceso de compilación , p. mostrando “% completado”, “estado actual”, etc.
  • Genera registro de ejecución detallado tanto en XML y formato de texto
  • integrar fácilmente con Cruise-Control.Net sistema de integración continua
  • Puede utilizar anotador personalizado como XMLLogger cuando la orientación 2,0 + versión
  • Capacidad para analizar los registros de errores
  • capacidad de desplegar conjuntos construidos a localización especificada usuario
  • capacidad de sincronizar código fuente con el sistema de control de código
  • capacidad de gestión Versión
1

Este es un problema común (y me gustaría que había leído antes) para todo el desarrollo, no sólo ASP.NET. Siendo uno de sus desarrolladores, mi equipo usa naturalmente BuildMaster internamente para todo el proceso de lanzamiento, y para la mayoría de los escenarios es gratis. Dentro de la herramienta, podemos realizar todas las construcciones estándar de CI para crear artefactos y luego configurar un proceso de automatización para implementar estos artefactos en cualquiera de los más de 40 servidores que tenemos alojados interna o externamente, según la aplicación o el entorno específico. .

Ya que menciona específicamente la implementación en diferentes entornos de prueba, este es un aspecto fundamental de la herramienta. La idea es modelar el flujo de trabajo del entorno (por ejemplo, Integración -> Control de calidad -> Producción) que ya tiene implementado y, esencialmente, promover una compilación desde el control de origen hasta la producción. La mayoría de las veces, es tan simple como agregar una acción de despliegue que despliega un artefacto en el entorno, otras veces puede ser mucho más complejo.

También se mencionan casualmente cambios en los archivos de configuración son parte de despliegue, que es otro componente incorporado a buildmaster. La idea que tuvimos fue usar la herramienta como el centro central para todos los archivos de configuración e implementaciones, asegurando así que los últimos cambios se apliquen automáticamente con una simple acción de "implementar archivos de configuración" en su plan de despliegue.

Una cosa que no mencionó con respecto a este proceso es el aspecto de implementación de la base de datos. La mayoría de las aplicaciones ASP.NET requieren una base de datos asociada, de lo contrario, podrían ser solo archivos HTML estáticos. Es crucial que el esquema de la base de datos se actualice a la versión de base de datos apropiada con cada implementación. No es de extrañar que haya un módulo dentro de BuildMaster que maneje esto también para usted. La idea es almacenar scripts DDL-DML dentro de la herramienta, y al ejecutar los scripts solo una vez por entorno, se asegura de que todas sus bases de datos en cada entorno estén actualizadas a medida que sus construcciones se despliegan a través de ellas. Otros scripts (por ejemplo, procedimientos almacenados, vistas, disparadores, etc.) son esencialmente archivos de código y, por lo tanto, pertenecen al control de fuente. Estas secuencias de comandos DROP-CREATE-CONFIGURE se pueden ejecutar todas y cada una de las veces con una simple acción de implementación.

Otra pieza del rompecabezas de implementación en la que la mayoría de los desarrolladores no piensan es la automatización de procesos. Muchos desarrolladores deben realizar aprobaciones o completar formularios de solicitud de cambio para realizar estos procesos manualmente. Nuevamente, todo esto está disponible como parte de la configuración automatizada del flujo de trabajo dentro de BuildMaster. Puede configurar bloqueadores que no permitan que la promoción indique el entorno de control de calidad a menos que hayan pasado todas las pruebas unitarias o bloquear la promoción al entorno de ensayo a menos que alguien del equipo de control de calidad apruebe la compilación y todos los problemas de la herramienta de seguimiento de problemas se resuelvan o cierren. ese lanzamiento particular.

Si bien me doy cuenta de que omití CC.NET de la respuesta, todas nuestras aplicaciones se crean y despliegan a través de BuildMaster para que ya no las necesitemos, aunque podríamos recoger fácilmente los artefactos de una ubicación de colocación e implementarlos en ambientes posteriores.

1

Veo que muchas personas usan CC para sus proyectos .NET, pero ¿por qué no usar Jenkins, Sonarqube? Tienen todo lo que necesitas. Configuré todo esto en 3 días. Tengo un servidor Win 2008 R2, MSSQL, Jenkins, SVN SVS y Sonarqube.

Todo funciona muy bien y obtienes todas las métricas en tu proyecto. Sonarqube usa Gallio, Gendarme, FXcop, Stylecop, NDepths y PartCover para obtener sus métricas, y todo esto es bastante directo ya que SonarQube lo hace automáticamente sin mucha configuración.

publico som imágenes para que también lo perciban. Aquí es Jenkins bruja construye y obtener métricas de sonar y un otro trabajo para desplegar automáticamente a IIS

Y sonarqube, todas las métricas para mi proyecto. Esta es una aplicación MVC4 simple, pero funciona muy bien !:

Si desea más información que puedo ser más específico, pero creo que usted debe considerar al menos Jenkins. Si CC suites lo hace mejor, al menos buscó una buena alternativa antes de elegir.

Esta configuración completa usa MSBuild, también crea e implementa las aplicaciones.

Cuestiones relacionadas