Responsabilidades de Build Script y Build Server

12

Necesito algunas aclaraciones sobre las responsabilidades de Build Script y Build Server.

Leí varios artículos en la red sobre integración continua y compilaciones. Incluso

Y tuve una conversación con mi asesor sobre el proceso de compilación de nuestro software. Como tiene mucha experiencia, confío en sus declaraciones, pero me quedé confundido.

Según tengo entendido, a partir de mi investigación (y corríjame aquí, ya que es lo que estoy preguntando) el ideal debería ser el siguiente:

  • cada proyecto tiene su script de compilación
  • este script construye el proyecto
  • este script se asegura de que las dependencias se construyan previamente

Dado que las dependencias podrían ser otro proyecto, con su propio script de compilación se acumula una jerarquía similar a un árbol. Puede haber un script de compilación superior que compila todos los proyectos y aplicaciones.

Sin embargo, las responsabilidades del servidor de compilación son:

  • echa un vistazo al repositorio
  • desencadenar la construcción
  • pruebas de activación y otras herramientas de control de calidad
  • hacer que el artefacto esté disponible

Esto puede activarse manualmente, todas las noches o siempre que cambie el repositorio


Los objetivos de mi asesor son, según tengo entendido, que un script de compilación es inflexible y no se puede mantener (aparte del hecho de que tomaría mucho tiempo crear uno para nuestra base de código heredada). Además, el Servidor de compilación debe mantener las dependencias, por ejemplo, para usar dependencias más antiguas cuando se crean nuevas fallas. Y en particular porque, Antcomo era el tema concreto, no es capaz de construir todo tipo de tecnologías diferentes que se utilizan en la base del código, y no es capaz de mantener las dependencias.

¿Puede por favor elaborar los objetivos y aclarar las responsabilidades?

Angelo.Hannes
fuente
44
Si bien esta es una buena pregunta y será respondida (lo haré más tarde cuando tenga tiempo, y aún no ha sido respondida): realmente debería regresar y obtener una aclaración de su asesor. Estar confundido después de tener una conversación con alguien que evaluará su desempeño es una receta para el desastre y una indicación de que no se está comunicando adecuadamente con usted (o no está escuchando activamente, pero ese no parece ser el caso aquí).
Steven Evers
2
@ Angelo.Hannes Creo que has alcanzado todos los puntos principales. ¿Puedes aclarar más específicamente lo que te confunde?
M. Dudley
@SteveEvers Bueno, como acabo de leer algunas introducciones a este tema, primero quería expandir mi conocimiento al respecto. Entonces sin duda retomaré este tema nuevamente. Por lo tanto, realmente agradecería una respuesta suya.
Angelo.Hannes
@ M.Dudley Como dije, no estoy seguro de qué responsabilidades ir a dónde. Y si un script de compilación para todo el software es el camino correcto.
Angelo.Hannes

Respuestas:

14

Estas cosas son ortogonales:

El script de compilación es el mecanismo que, al invocarlo en un árbol de origen recién extraído, genera una compilación completa de objetivos y dependencias requeridos. Simplemente podría ser 'hacer todo' si tiene un archivo MAKE o una invocación adecuada de MSBuild, Ant, Maven o Scons. Si tiene una jerarquía compleja de dependencias o proyectos relacionados, su 'script de compilación' puede ser un archivo de nivel superior que invoca a cada uno de ellos a su vez, verificando el éxito a medida que avanza.

La secuencia de comandos de compilación es solo una secuencia de comandos, posiblemente, muchas (pago, compilación, prueba, paquete), pero podría tener un mecanismo todo en uno controlado por parámetros de línea de comandos; depende de su entorno.

El servidor de compilación , o más bien el servidor de integración continua , es el mecanismo de automatización responsable de programar / disparar, monitorear e informar sobre el pago -> compilación -> prueba -> paquete -> etapa -> tubería de implementación. Podría usar cron / Task Scheduler si no tuviera nada más sofisticado a mano, pero ahora hay muchas herramientas excelentes como Jenkins, Cruise Control, TeamCity, etc.

Es importante que pueda invocar una compilación sin usar el servidor CI, en el caso de que esté ocupado / fuera de línea / inalcanzable / no disponible, por lo tanto, la lógica para obtener la compilación / prueba / lo que sea necesario debe estar fuera del Sistema CI, pero es invocable por él, parametrizado por rama / tipo de compilación / versión / arquitectura, etc.

JBRWilkinson
fuente