deploy - publicar asp.net core iis
Creación/despliegue automatizado paso a paso de ASP.NET (7)
¿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.
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 las personas admiten 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 automatizado de compilación e implementación con la siguiente configuración:
- Visual Studio 2008
- Proyecto de aplicación web
- CruiseControl.NET
Una de las primeras cosas que probé fue que CCnet comprima automáticamente la salida y la copie en el servidor, pero luego eso requiere un 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 múltiples entornos ya que tenemos dev, qa, uat y luego, por supuesto, prod.
MSDeploy parece realmente interesante, pero a menos que esté interpretando 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, uno tendría que cambiar manualmente las configuraciones de configuración y las URL de los servicios web, etc.
Hay otra nueva herramienta de compilación (una envoltura 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.
- Interfaz de línea de comando fácil de usar
- Posibilidad de apuntar a todas las versiones de .Net framework, es decir, 1.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 completa de compilación ordenada" para un proyecto determinado - Sin mantenimiento táctil.
- Capacidad de detectar y mostrar dependencias circulares
- Realizar creación paralela: decide automáticamente cuál de los proyectos en la lista de compilación generada se puede generar de forma independiente.
- Capacidad de manejar ensambles proxy
- Proporciona una pista visual del proceso de compilación, por ejemplo, mostrando "% completado", "estado actual", etc.
- Genera un registro de ejecución detallado tanto en formato XML como en formato de texto
- Fácilmente integrado con el sistema de integración continua Cruise-Control.Net
- Puede usar un registrador personalizado como XMLLogger cuando se orienta a la versión 2.0 +
- Posibilidad de analizar los registros de errores
- Posibilidad de implementar conjuntos construidos en la ubicación especificada por el usuario
- Posibilidad de sincronizar el código fuente con el sistema de control de fuente
- Capacidad de gestión de versiones
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 ¿ Despliegue Automatizado para Aplicaciones Web?
Tenía una pregunta relacionada sobre cómo obtener un conjunto desplegable de archivos a partir de una versió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.
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.
Publiqué algunas imágenes para que también lo sintieran. Aquí está la bruja de Jenkins crea 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 genial !:
Si quieres más información, puedo ser más específico, pero creo que al menos deberías considerar a 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.
Este es un problema común (y desearía haberlo leído antes) para todo el desarrollo, no solo ASP.NET. Siendo uno de sus desarrolladores, mi equipo usa internamente BuildMaster 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. .
Como usted 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 (por ejemplo, Integración -> Control de calidad -> Producción) que ya tiene implementado y, esencialmente, promover una construcció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 mencionó informalmente que los cambios en los archivos de configuración son parte de la implementación, que es otro componente incorporado de 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 en sí, y al ejecutar 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, activadores, 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 que la mayoría de los desarrolladores no piensa 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.
Aunque me doy cuenta de que omití CC.NET de la respuesta, todas nuestras aplicaciones se crean y despliegan a través de BuildMaster, por lo que ya no las necesitamos, aunque podríamos recoger fácilmente los artefactos de una ubicación de colocación e implementarlos en entornos posteriores.