Pregunta

Parece que hay tantas formas diferentes de automatizar la construcción/implementación que resulta difícil analizar todos los diferentes escenarios que la gente admite en los tutoriales en la web.Así que quería presentar la pregunta a la multitud de stackoverflow...¿Cuál sería la mejor manera de configurar un sistema de compilación e implementación automatizado utilizando la siguiente configuración?

  • estudio visual 2008
  • Proyecto de aplicación web
  • CruceroControl.NET

Una de las primeras cosas que intenté fue hacer que CCnet comprima automáticamente la salida y la copie en el servidor, pero eso requiere trabajo manual para descomprimirla en el destino.Sin embargo, si intentamos copiar todos los archivos individualmente, entonces podría llevar mucho tiempo si se trata de una aplicación grande (el servidor de compilación se encuentra fuera del centro de datos de nuestra oficina...Lo sé).

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

MSDeploy Parece realmente interesante, pero a menos que interprete la literatura incorrectamente, no ayuda en el escenario de implementación desde 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, habría que cambiar manualmente la configuración y las URL de los servicios web, etc.

¿Fue útil?

Solución

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

Usamos una combinación de CruiseControl, NAnt, MSBuild para generar una versión de lanzamiento de la aplicación.Luego, un script independiente utiliza MSDeploy y XCopy para hacer una copia de seguridad del sitio activo y transferir los archivos nuevos.

Nuestra solución se describe brevemente en una respuesta a esta pregunta. ¿Automatizar la implementación de aplicaciones web?

Otros consejos

Te podría interesar MSDeploy. Aquí está una publicación de Scott Hanselman sobre esto.Por el momento sólo está disponible como vista previa técnica (septiembre de 2008), pero vale la pena evaluarlo según sus requisitos.

Hay otra nueva herramienta de compilación (un contenedor muy inteligente) llamada NUConstruir.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 entre 75 desarrolladores).Pruébalo.

http://nubuild.codeplex.com/

  • Interfaz de línea de comandos fácil de usar
  • Capacidad para apuntar a todas las versiones de .NET Framework es decir1.1, 2.0, 3.0 y 3.5
  • Admite configuración basada en XML
  • Admite referencias de proyectos y archivos
  • Genera automáticamente la "lista de construcción ordenada completa" para un proyecto determinado, sin mantenimiento táctil.
  • Capacidad para detectar y mostrar dependencias circulares
  • Realice la construcción paralela: decide automáticamente cuáles de los proyectos en la lista de compilación generada se pueden construir de forma independiente.
  • Capacidad para manejar ensamblajes de proxy
  • Proporciona pista visual al proceso de compilación, por ejemplomostrando "% completado", "estado actual", etc.
  • Genera registro de ejecución detallado tanto en XML como en formato de texto
  • Fácilmente integrado con Cruise-Control.net Sistema de integración continua
  • Puede usar Logger personalizado como XMLLOGGER cuando se dirige a 2.0 + versión
  • Capacidad para analizar registros de errores
  • Capacidad para implementar ensamblajes construidos en la ubicación especificada del usuario
  • Capacidad para sincronizar el código fuente con el sistema de control de origen
  • Capacidad de gestión de versiones

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

Tuve un pregunta relacionada sobre cómo obtener un conjunto de archivos implementables a partir 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.

Este es un problema común (y desearía haberlo leído antes) para todo el desarrollo, no solo para ASP.NET.Al ser uno de sus desarrolladores, mi equipo naturalmente usa Construir Maestro internamente durante todo el proceso de lanzamiento y, para la mayoría de los escenarios, es gratuito.Dentro de la herramienta, podemos realizar todas las compilaciones de CI estándar 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. .

Dado que mencionó 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 (p. ej.Integración -> Control de calidad -> Producción) que ya tiene implementado y esencialmente promueve una compilación desde el control de fuente hasta la producción.La mayoría de las veces, es tan simple como agregar una acción de implementación que implemente un artefacto en el entorno; otras veces puede ser mucho más complejo.

También mencionaste casualmente que los cambios en los archivos de configuración son parte de la implementación, que es otro componente integrado de BuildMaster.La idea que teníamos era utilizar la herramienta en sí como centro central para todos los archivos de configuración e implementaciones, garantizando así que los últimos cambios se apliquen automáticamente con una simple acción de "implementar archivos de configuración" en su plan de implementación.

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 simplemente archivos HTML estáticos.Es fundamental que el esquema de la base de datos se actualice a la versión adecuada de la base de datos con cada implementación.Como era de esperar, hay un módulo dentro de BuildMaster que también se encarga de esto por usted.La idea es almacenar scripts DDL-DML dentro de la propia herramienta y ejecutar scripts. sólo una vez por entorno, garantiza que todas sus bases de datos en cada entorno estén actualizadas a medida que sus compilaciones se implementan a través de ellas.Otros guiones (p. ej.procedimientos almacenados, vistas, desencadenadores, etc.) son esencialmente archivos de código y, por lo tanto, pertenecen al control de código fuente.Estos scripts de tipo DROP-CREATE-CONFIGURE se pueden ejecutar todas y cada una de las veces en la mayoría de los casos con una simple acción de implementación.

Otra pieza del rompecabezas de la implementación en la que la mayoría de los desarrolladores no piensan es la automatización de procesos.Muchos desarrolladores necesitan realizar aprobaciones o completar formularios de solicitud de cambios para poder realizar estos procesos manualmente.Nuevamente, todo esto está disponible como parte de la configuración del flujo de trabajo automatizado dentro de BuildMaster.Puede configurar bloqueadores que no permitan la promoción al entorno de control de calidad a menos que hayan pasado todas las pruebas unitarias, o bloquear la promoción al entorno de prueba a menos que alguien del equipo de control de calidad apruebe la compilación y todos los problemas en su herramienta de seguimiento de problemas estén resueltos/cerrados. esa publicación en particular.

Si bien me doy cuenta de que omití CC.NET en la respuesta, todas nuestras aplicaciones se construyen e implementan a través de BuildMaster, por lo que ya no lo necesitamos, aunque podríamos recoger los artefactos de una ubicación de entrega e implementarlos en entornos posteriores con la misma facilidad.

Veo que mucha gente usa 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, VIsual SVN y Sonarqube.

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

Publico algunas fotos para que tú también tengas una idea.Aquí está Jenkins, que construye y obtiene métricas de Sonar y otro trabajo para implementar automáticamente en IIS.

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

Si quieres más información, puedo ser más específico, pero creo que al menos deberías considerar a jenkins.Si CC le conviene más, al menos buscó una buena alternativa antes de elegir.

Toda esta configuración utiliza MSBuild, además de compilar e implementar las aplicaciones.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top