La automatización de la compilación es la práctica de crear sistemas de software de una manera relativamente desatendida. La compilación se configura para ejecutarse con una interacción mínima o nula del desarrollador de software y sin utilizar la computadora personal del desarrollador . La automatización de la compilación abarca el acto de configurar el sistema de compilación y el sistema resultante en sí.
La automatización de la compilación abarca tanto la secuenciación de operaciones de compilación a través de herramientas de interfaz no interactivas como la ejecución de compilaciones en un servidor compartido . [1]
Herramientas
Las herramientas de automatización de compilación permiten secuenciar las tareas de compilación de software mediante una interfaz no interactiva. Se pueden utilizar herramientas existentes, como Make, mediante un archivo de configuración personalizado o parámetros de línea de comandos. También se pueden utilizar herramientas personalizadas, como scripts de shell.
Algunas herramientas, como los scripts de shell , son de programación declarativa orientada a tareas . Codifican secuencias de comandos para ejecutar con una lógica condicional mínima.
Algunas herramientas, como Make, están orientadas al producto. Crean un producto, también conocido como objetivo, en función de dependencias configuradas. [2]
Servidores
Un servidor de compilación es un servidor configurado para ejecutar compilaciones. A diferencia de una computadora personal, un servidor permite un entorno de compilación más consistente y disponible.
Tradicionalmente, un servidor de compilación era una computadora local dedicada como recurso compartido en lugar de usarse como una computadora personal. Hoy en día, existen muchos sitios web de computación en la nube y software como servicio (SaaS) para compilar.
Sin un servidor de compilación, la compilación generalmente depende de que los desarrolladores utilicen sus computadoras personales, lo que tiene muchos inconvenientes, entre los que se incluyen los siguientes: Los desarrolladores que saben cómo compilar pueden estar de vacaciones. La máquina del desarrollador puede tener un problema que impida la compilación. La máquina del desarrollador puede tener otro software instalado que interfiera con la compilación adecuada.
Un servidor de integración continua es un servidor de compilación que se configura para compilar de forma relativamente frecuente, generalmente en cada confirmación de código. Un servidor de compilación también puede incorporarse a una herramienta ARA o ALM .
Las opciones típicas de activación de compilación incluyen:
- A pedido: solicitado por un usuario
- Programado: como una compilación nocturna
- On-commit: creación de un sistema de control de versiones a partir de cada confirmación
Integración continua y entrega continua
La automatización del proceso de compilación es un paso necesario para implementar la integración continua y la entrega continua (CI/CD), todas ellas consideradas como las mejores prácticas para el desarrollo de software. [3] [ ¿Cómo? ]
Ventajas
Las ventajas de la automatización de la compilación incluyen: [4]
- Puede ahorrar tiempo y dinero a largo plazo.
- Permite la integración, entrega y pruebas continuas.
- Un proceso de construcción más consistente
- Puede optimizar el proceso de construcción, reduciendo el tiempo y las tareas redundantes.
- Reduce la dependencia del personal clave y sus computadoras personales
- Puede automatizar la recopilación del historial de compilación
Véase también
- Automatización del lanzamiento de aplicaciones : proceso de empaquetado e implementación
- Automatización continua de la configuración : metodología de configuración e implementación de softwarePages displaying wikidata descriptions as a fallback
- Integración continua : práctica de desarrollo de software que consiste en crear y probar software con frecuencia.
- Entrega continua : enfoque de ingeniería de software de ciclos cortos
- Prueba continua : proceso de ejecución de pruebas automatizadas como parte del proceso de entrega de software para obtener retroalimentación inmediata sobre los riesgos comerciales asociados con un candidato a lanzamiento.Pages displaying wikidata descriptions as a fallback
- DevOps – Conjunto de prácticas de desarrollo de software
- Lista de software de automatización de compilaciones
- Ingeniería de familias de productos : sinónimo de "ingeniería de dominio"Pages displaying wikidata descriptions as a fallback
- Ingeniería de lanzamiento
- Gestión de configuración de software : seguimiento y control de cambios de software
- Pruebas unitarias : validación del comportamiento de código fuente aislado
Referencias
- ^ Ceruzzi, Paul E. (2003). Una historia de la informática moderna. The MIT Press. ISBN 978-0-262-53203-7.
- ^ Clark, Mike (2004). Automatización de proyectos pragmáticos: cómo crear, implementar y monitorear aplicaciones Java . The Pragmatic Programmers. ISBN 978-0-9745140-3-1.
- ^ Bashan, Shmuel; Bellagio, David E. (2011). Gestión de elementos de trabajo con IBM Rational ClearQuest y Jazz: una guía de personalización . IBM Press. ISBN 978-0-13-700179-8.
- ^ "Copia archivada" (PDF) . Archivado desde el original (PDF) el 23 de noviembre de 2008. Consultado el 19 de septiembre de 2008 .
{{cite web}}: CS1 maint: archived copy as title (link)