Jenkins para automatizar la implementación de aplicaciones ASP.NET

13

¿Existe alguna posibilidad de automatizar / semiautomatizar implementaciones de aplicaciones web ASP.NET utilizando Jenkins? Puede ser en entornos controlados o no controlados, para que los usuarios no controlados tengan que ingresar el ID de usuario y la contraseña. Estoy buscando formas de copiar los archivos de destino a destino y ejecutar scripts de SQL en el escenario de la granja de servidores web.

Editar Actualmente estamos usando archivos bat para xcopy / configure app pool / sql cmd, etc para implementar la aplicación. Pero para que esto funcione, el equipo de soporte de producción necesita descargar el código fuente, compilar el proyecto y ejecutar los archivos bat para implementar la aplicación.

Ahora, queremos automatizar la implementación sin que el usuario descargue el código fuente y el usuario final solo tiene que visitar una URL y completar los parámetros de ID de usuario y contraseña, y seleccionar la etiqueta svn y debería implementarse. Pero Jenkins se está ejecutando bajo un inicio de sesión anónimo, por lo que el archivo bat existente no funcionará ya que no tiene permisos para ejecutar el script.

Por lo tanto, me gustaría saber si existe alguna alternativa para este tipo de situación. Será bueno si el contexto del usuario se suplanta utilizando el ID de usuario y la contraseña ingresados, permitiendo que el archivo por lotes existente se ejecute sin más cambios. Si no es posible, también nos gustaría explorar otras ideas, pero no tenemos flexibilidad para elegir una herramienta automatizada como Puppet, etc., deberíamos quedarnos con estos archivos por lotes.

    
pregunta Sunny 02.05.2013 - 22:36

2 respuestas

11

Compartiré lo que hemos estado usando y hacia dónde planeamos ir, tal vez te ayude a darte una mejor idea.

  • Actualmente usamos a Jenkins y Github juntos: una vez que algo se fusiona en maestro, Github le dice a Jenkins y comienza una compilación.
  • Utilizamos un script de Nant en Jenkins para construir el proyecto, ejecutar pruebas unitarias y, si todo se ve bien, se inicia otro proyecto de Jenkins. La secuencia de comandos de Nant también escupe un directorio con código totalmente compilado / CSS / JS minimizado, etc.
  • El proyecto secundario de Jenkins toma la salida de la compilación y la envía de vuelta a Github, en un repositorio separado.
  • Un archivo .BAT se ejecuta cada 5 minutos en el servidor web intermedio y básicamente busca actualizaciones en ese repositorio. Si se encuentra una actualización, descargamos la última compilación, hacemos una copia de seguridad de nuestros archivos de preparación y luego implementamos la compilación más reciente en la carpeta de preparación.
  • Para comenzar, tenemos un archivo .BAT que maneja la copia de seguridad de los archivos en vivo y la copia de los archivos del repositorio sobre los archivos en vivo. Se ejecuta manualmente. No maneja las actualizaciones de SQL (las hacemos a mano).

Ahora, obviamente, esto no es totalmente ideal pero está funcionando para nosotros. Queremos expandir esto en el futuro para:

  • Use Web Deploy para enviar los archivos de Jenkins directamente a IIS, y haga cualquier otro comando que Necesito correr.
  • Use migraciones automáticas (una característica de Entity Framework) para manejar todas las actualizaciones de SQL, como parte de la implementación.
respondido por el Nicholas Head 08.05.2013 - 21:36
4

Ya estoy usando Jenkins para aplicaciones .Net y TFS.

  1. Agregue la configuración requerida en su proyecto y transformación & check-in el código.
  2. Obtenga lo último de TFS (use el complemento TFS)
  3. Genere el proyecto (use el complemento MSBuild). puede publicar el código de Msbuild usando argumentos de línea de comando.
  4. Sincronice el código de la ubicación de publicación al destino mediante el comando msdeploy.exe (ubicado en "C: \ Archivos de programa (x86) \ IIS \ Microsoft Web Deploy V2 \ msdeploy.exe")
  5. También puede enviar correos electrónicos y hacer la copia de seguridad a través de Jenkins.

También puede usar MSTest.exe para ejecutar la prueba unitaria y mostrarla en la consola jenkin o publicar también el resultado de la prueba.

    
respondido por el Sanjeev Kumar 10.11.2014 - 22:33

Lea otras preguntas en las etiquetas