¿Puedes hacer una compilación en un solo paso?

14

De la prueba de joel :

  

¿Puedes hacer una compilación en un solo paso?

Tengo que decir que no puedo. Actualmente estoy trabajando en una aplicación web que tiene una lista de elementos de hoja de cálculo que se deben llevar a cabo para implementar. Entonces mi pregunta es ¿cómo puedo automatizar esto ? ¿Tiene que ser toda la organización? ¿Consejos / técnicas?

    
pregunta billy.bob 13.01.2011 - 13:26

6 respuestas

10

Make puede automatizar el proceso de construcción en un solo paso. Make puede hacer prácticamente lo que quieras. No estoy seguro de por qué sapporo piensa que Make solo se aplica a C / C ++. Puedes usar make para ejecutar cualquier tipo de comando. Ni siquiera está vinculado a la programación, aunque es para lo que se utiliza normalmente.

    
respondido por el Pemdas 13.01.2011 - 14:41
3

Dependiendo de su entorno, es posible que desee buscar en Make (C / C ++), Ant / Maven (Java), Gradle (Groovy), con los que estoy familiarizado. Las posibilidades son altas: hay una solución popular para su entorno.

    
respondido por el sapporo 13.01.2011 - 13:35
3

En el trabajo, usamos FinalBuilder , lo que facilita la configuración de un script para automatizar todo el proceso: verifique el código, compile todo, ejecute pruebas, cree un paquete de implementación, etc.

Es una muy buena herramienta y recientemente ganó el Premio Dr. Dobbs Jolt por las herramientas de administración de cambios y configuración.

    
respondido por el Mason Wheeler 13.01.2011 - 18:22
0

Claro que hay una manera de automatizar esto. Con herramientas como Chef , configurar un nuevo servidor recién instalado puede ser tan fácil como:

knife bootstrap ip.address -N aNameForTheServer -r "role[some functionality]"

En mi caso, algunos pasos ejecutados por ese único comando son:

  • Instale las bibliotecas, los programas y los módulos de Python necesarios
  • Crear nuevos usuarios con privilegios de acceso especificados
  • Cree nuevas bases de datos, cargue el esquema requerido, establezca los derechos de propiedad y acceso
  • Descargue y ponga en escena el código del proyecto y luego escriba la información de configuración
  • Ponga todo en modo de producción lanzando servidores de bases de datos, configurando trabajos cron, etc.

No estoy seguro de cómo se desempeñará Chef en su entorno, ya que el soporte de Windows aparece como "preliminar", pero para el sistema basado en UNIX son las rodillas de la abeja.

Puppet es un sistema similar que es un poco más antiguo que chef y puede ofrecer un mejor soporte de Windows.

    
respondido por el Sharpie 13.01.2011 - 17:13
0

Es sencillo con Maven en el mundo Java

mvn clean deploy

En nuestra configuración, esto hace toda la construcción necesaria del archivo WAR (extrayendo las dependencias JAR según sea necesario), la implementación en el servidor web dev y la creación de datos de prueba enlatados en la base de datos dev. Una vez que está en su lugar, Maven maneja las pruebas funcionales completas a través de SeleniumRC para verificar que la aplicación funciona.

Este comando único implementa la aplicación completamente en el clúster de servidores de desarrollo, por lo que está disponible para que otros desarrolladores puedan trabajar de inmediato (asumiendo que haya superado las pruebas). Es inusual que una implementación de desarrollo falle ya que los desarrolladores han verificado que funciona localmente con mvn clean install .

El artefacto de instantánea (WAR) se copia en el repositorio de Maven para compartirlo con otros desarrolladores (según el comportamiento estándar de Maven deploy ).

Está bien, pero solo has implementado una instantánea en dev, ¿qué pasa con la prueba y la producción?

La distribución a los servidores de prueba y (más tarde) de producción se maneja a través del proceso de lanzamiento de Maven que nos gusta manejar manualmente para asegurarnos de que alguien esté observando cualquier salida sospechosa. Los probadores solo funcionan con artefactos liberados, no con instantáneas.

Una vez que se publica, se usa un script de compilación simple para SFTP del archivo WAR al grupo de servidores de prueba, otra vez con alguien observando el proceso para asegurarse de que nada salga mal.

Finalmente, después de que todos los probadores estén contentos, el archivo WAR sin cambios se ha SFTP hasta el clúster de servidores de producción de conmutación por error, con alguien vigilando de cerca y una posición de reversión inmediata en su lugar en caso de desastre.

    
respondido por el Gary Rowe 13.01.2011 - 18:15
0

Me di cuenta de que podía marcar ese resultado en nuestra prueba de Joel para ...

Hice un servidor de compilación en Python que lo automatizó usando pychron .

El código se sincronizó con VSS desde la línea de comandos, se compila con borland make (la mayoría de los IDE crearán archivos make para usted, ya sea que los llamen así. Delphi solía bombear archivos make y llamarlos archivos .BPG, ahora son archivos XML de MSBuild y puedes usar MSBuild) y los errores se colocaron en un archivo XML que seguí agregando.

Entonces ... Solo escribe un archivo por lotes y haz estas cosas.

  1. Sincronizar código desde el control de código fuente
  2. Borre cosas tontas (archivos de configuración individuales para proyectos) que sabe que le impedirán poder construir todo.
  3. Construye todo (yo construyo todo, hago todo hermano).
  4. Registra tus errores, advertencias y demás, pero no dejes de construir. (Si eres realmente inteligente, extraerás el nombre de la última persona que verificó el archivo que causó la ruptura de la compilación y le enviará un nastygram)
respondido por el Peter Turner 13.01.2011 - 18:41

Lea otras preguntas en las etiquetas