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
- La tecla F5 no es un proceso de compilación
- El servidor de compilación: el monitor cardíaco de su proyecto
- Las construcciones diarias son tu amigo
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, Ant
como 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?
fuente
Respuestas:
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.
fuente