Pregunta

Actualmente, mi equipo está intentando automatizar la implementación de nuestras aplicaciones web .Net y PHP.Queremos agilizar las implementaciones y evitar las molestias y muchos de los dolores de cabeza que causa hacerlo manualmente.

Necesitamos una solución que nos permita:

- Compile the application  
  - Version the application with the SVN version number
  - Backup the existing site
  - Deploy to a web farm

Todas nuestras aplicaciones están controladas en origen mediante SVN y nuestras aplicaciones .Net utilizan CruiseControl.Hemos intentado utilizar scripts de implementación de MSBuild y NAnt con éxito limitado.También hemos usado Capistrano en el pasado, pero deseamos evitar el uso de Ruby si es posible.

¿Existen otras herramientas de implementación que puedan ayudarnos?

¿Fue útil?

Solución

Gracias a todos por sus amables sugerencias.Los revisamos todos, pero después de una cuidadosa consideración decidimos implementar el nuestro con una combinación de CruiseControl, NAnt, MSBuild y MSDeploy.

Este artículo tiene gran información:Integración de MSBuild con CruiseControl.NET

Así es aproximadamente cómo funciona nuestra solución:

  • Los desarrolladores crean la versión de 'depuración' de la aplicación y ejecutan pruebas unitarias, luego se registran en SVN.
  • CruiseControl ve las actualizaciones y llama a nuestro script de compilación...
    • Ejecuta cualquier migración nueva en la base de datos de compilación.
    • Reemplaza los archivos de configuración con la configuración del servidor de compilación.
    • Crea la configuración de 'depuración' de la aplicación.
    • Ejecuta todas las pruebas unitarias y de integración.
    • Crea la configuración de 'implementación' de la aplicación.
      • Versiones las DLL con la versión principal/menor actual y la revisión SVN, p.1.2.0.423
      • Mueve esta nueva compilación a una carpeta de 'lanzamiento' en nuestro servidor de compilación.
      • Elimina archivos innecesarios
    • Actualiza IIS en el servidor de compilación si es necesario

Luego, cuando hayamos verificado que todo está listo para la puesta en marcha/puesta en escena, ejecutamos otro script para:

  • Ejecute migraciones en un servidor en vivo/de prueba
  • Implementación de MS:archivar el sitio actual en vivo/ensayo
  • Implementación de MS:sincronizar el sitio desde la compilación hasta el directo/puesta en escena

No fue agradable llegar a esta etapa, pero ahora está funcionando a las mil maravillas :D

Intentaré mantener esta respuesta actualizada a medida que hagamos cambios en nuestro proceso, ya que parece haber varias preguntas similares sobre SA ahora.

Otros consejos

He usado Visual Build Pro durante años, es bastante ingenioso y fácil de usar y tiene muchas operaciones estándar (como las que mencionaste) integradas.

yo suelo Marioneta, Makefiles para construir RPM y Bambú para hacer esto por mí.Mi sistema no se aplica directamente y no estoy muy familiarizado con el mundo de Windows, pero existen algunos patrones transferibles.

Mi configuración de creación me permite crear RPM para todo (libras PHP, sitios web PHP, módulos Perl, aplicaciones C, etc.) que componen mi aplicación.Esto se puede llamar manualmente o mediante Bamboo.Transfiero estos RPM a un repositorio de yum y a controles de Puppet asegurándome de que las versiones más recientes (o correctas) del software estén instaladas en el clúster.

¿Podría automatizar la creación de paquetes de software en MSI?Creo que Puppet puede gestionar la instalación de paquetes y versiones de software en Windows.

Yo uso msdeploy para esto.Funciona perfecto.

Acerca de la hormiga;para la plataforma .NET tenemos NAnt y puedes usarlo en combinación con MSDeploy;tiene la posibilidad de llamar a MSDeploy desde su Nant-script.

Editado:Sólo para dejar las cosas claras;puedes hacer todo con msdeploy.Usar Nant no es un requisito.

En lugar de usar xcopy, logramos usar el comando -source:dirpath con direcciones UNC para los servidores con msdeploy.La clave fue ignoreAcls=true y eliminar llamadas al nombre de usuario y contraseña en la cadena msdeploy:

msdeploy -verb:sync -source:dirpath=\\build\e$\app -dest:dirpath=\\live\d$\app,ignoreAcls=true

El ejemplo implementa el sitio desde la unidad E de nuestro servidor de compilación a la unidad D de nuestro servidor en vivo.Existen algunas consideraciones de seguridad al exponer recursos compartidos o este nivel de acceso al disco en un servidor en vivo.Actualmente estamos estudiando la posibilidad de utilizar una carpeta compartida de acceso limitado.

Luego canalizamos esta salida a un archivo de registro que luego se mueve al archivo de respaldo como referencia.El archivo de registro registra qué archivos se movieron y cuándo. Continuando con el ejemplo anterior con el comando de canalización de salida:

... > E:\archive\msdeploy.log

Nadie mencionó Final Builder http://www.finalbuilder.com.Está a la par con Visual build Pro.Buena GUI para crear arneses de implementación de compilación automatizados

Tela.Parece pequeño, simple, procesal.Escrito en Python, ya que Ruby es un no-no (¿por qué?).

Consulte Setup Factory (de Indigo Rose).Es bastante robusto en lo que puede hacer.Utiliza la API del instalador de Windows.Probablemente pueda hacer lo que necesitas.

La única razón por la que Nant debería existir es para tener un marco similar a Ant en el que podamos escribir tareas utilizando el conjunto de lenguajes .NET.Si no desea que un desarrollador .NET puro escriba tareas personalizadas, no veo ninguna razón por la que no pueda usar Ant.El hecho de que escriba su aplicación en un lenguaje .NET no significa que tenga que utilizar una herramienta de compilación .NET.

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