¿Se puede hacer una acumulación en un solo paso?

14

De la prueba de joel :

¿Se puede hacer una acumulació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 deben llevarse a cabo para implementar. Entonces mi pregunta es ¿cómo puedo automatizar esto ? ¿Tiene que ser de toda la organización? Consejos / técnicas?

billy.bob
fuente
3
¿Depende de cuáles son los elementos de la lista? Idealmente, sí, debería poder automatizarlo.
Nadie el
44
es.wikipedia.org/wiki/Build_automation Por cierto: algunos se quedan un paso es demasiado :)
Mchl
Todo tipo: mover archivos, escribir los procedimientos almacenados, etc., ¡hay 14 pasos!
billy.bob
2
Desde un ángulo diferente, ¿qué crees que no puedes automatizar en la lista?
Tyanna
1
La pregunta de cómo automatizar una compilación no es subjetiva, y debe hacerse en Stack Overflow. La pregunta también debe tener más información sobre las tareas necesarias, para obtener una respuesta útil.
David Thornley

Respuestas:

10

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

Pemdas
fuente
2
make es una de esas herramientas tipo "navaja suiza"; Me encanta trabajar con eso. Algo más para señalar dónde sería útil hacer es que si está automatizando su compilación / proceso / etc., y uno o más pasos dependen de que otro se complete con éxito, make se detendrá si ese paso falla, no permitiendo que esos otros pasos continúen y Posiblemente causar problemas.
Will
1
Dado que muchas 'aplicaciones / sistemas nix se instalan con' ./configure; hacer; make install 'Creo que make también funciona como motor de instalación. Si puede hacer eso, también estoy seguro de que puede resolver la quandry del OP.
JBRWilkinson
Hacer, pero la sintaxis es bastante oscura. Hasta la fecha, he encontrado 2 alternativas: SCons (mucho más fácil que Make + makedepend) y una herramienta para automatizar la creación del Makefile (propietario).
Matthieu M.
@JbRWilkinson ... como dije, make puede hacer casi lo que quieras;)
Pemdas
3

Dependiendo de su entorno, es posible que desee ver Make (C / C ++), Ant / Maven (Java), Gradle (Groovy), que es con lo que estoy familiarizado. Hay muchas posibilidades de que haya una solución popular para su entorno.

sapporo
fuente
Es un entorno ASP.NET / SQL
billy.bob
@ m.edmondson - entonces cruisecontrol.sourceforge.net es probablemente tu camino a seguir
bobah
Otro buen entorno de integración continua para ASP.NET es TeamCity. He utilizado CruiseControl y TeamCity y descubrí que TeamCity es un poco más fácil de usar y un poco más potente. Pero ese podría no ser el caso.
RationalGeek
NANT es la variante .NET ANT que hemos usado bien como complemento del control de crucero que no usaría para crear código para la implementación donde tiende a querer algunas cosas adicionales incluidas / ajustadas / parámetros establecidos y modificados, etc. . Para eso son buenos ANT / NANT.
Jon Hopkins el
Secundo la sugerencia de @Jon Hopkinds: nant es una gran combinación para su entorno.
JBRWilkinson
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, programas y módulos de Python necesarios.
  • Crear nuevos usuarios con acceso privado especificado
  • Cree nuevas bases de datos, cargue el esquema requerido, establezca la propiedad y los derechos de acceso
  • Descargue y organice el código del proyecto y luego escriba la información de configuración
  • Ponga todo en modo de producción iniciando 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 las abejas.

Puppet es un sistema similar que es un poco más antiguo que el chef y puede ofrecer una mejor compatibilidad con Windows.

Sharpie
fuente
0

Es sencillo con Maven en el mundo de Java

mvn clean deploy

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

Este comando único hace que la aplicación se implemente por completo en el clúster del servidor de desarrollo, por lo que está fácilmente disponible para que otros desarrolladores puedan trabajar de inmediato (suponiendo que haya pasado las pruebas). Es inusual que una implementación de desarrollo falle ya que los desarrolladores han verificado que funciona localmente mvn clean install.

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

De acuerdo, pero solo ha implementado una instantánea para el desarrollo, ¿qué pasa con las pruebas 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 asegurar que alguien esté atento a cualquier salida sospechosa. Los probadores solo trabajan con artefactos lanzados, no con instantáneas.

Una vez que se lanza, se usa un script de compilación simple para SFTP el archivo WAR al clúster del servidor de prueba, nuevamente con alguien que observa 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 aplica SFTP hasta el clúster del servidor de producción de conmutación por error, con alguien vigilando de cerca y una posición de reversión inmediata en caso de desastre.

Gary Rowe
fuente
0

Pensé que podría marcar esa en nuestra prueba de Joel, así que ...

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, compilando con borland make (la mayoría de los IDE crearán archivos make para usted, los llame así o no. Delphi solía bombear archivos make y llamarlos archivos .BPG, ahora ellos ' re archivos MSBuild XML y puede 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 origen
  2. Elimine cosas tontas (archivos de configuración individuales para proyectos) que sabe que le impedirán construir todo.
  3. Construir todo (construiría todo, haría a todos los hermanos).
  4. Registre sus errores y advertencias, pero no deje 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)
Peter Turner
fuente