Prácticas Continuous Delivery
A diferencia de las herramientas de integración continua como Jenkins encargado de facilitar y automatizar la unión del trabajo de diferentes desarrolladores, detectando errores e integrando rápidamente, por otro lado se encuentran las soluciónes de entrega continua que buscan asegurar que el producto sea liberado rápidamente y de forma segura en ambientes de producción en cualquier momento. Más que herramientas que faciliten hacer este trabajo, lo importante es familiarizarse también con las prácticas conocidas como "Continuous Delivery".
Es necesario mencionar que las prácticas de entrega continua no pueden funcionar aisladamente sin las de integración continua para lo cual es imprescindible contar con herramientas que automatizen estas tareas. Este post se dedica a hablar sobre la entrega continua utilizando GO Continuous Delivery (GO CD).
GO Continuous Delivery
Con respecto a la forma de ejecutar los jobs, éstos pueden ejecutar comandos maven, de python, linux o cualquier otra herramienta proveída por la máquina asignada donde que ejecuta las tareas.
Los Agentes
Con ayuda de scripts, se le puede indicar al job los comandos que debe realizar para completar su objetivo, haciendo muy manipulable el trabajo asignado, además de facilitar el arreglo de errores. Los scripts poseen la secuencia de comandos para realizar alguna acción, por ejemplo: compilar un código fuente, obtener un artefacto compilado desde algún repositorio, colocarlo en algún lugar de la máquina e inicializarlo, etc.
La forma de desencadenar los pipelines en GO es proveyendo materiales a cada uno. Así, un pipeline se ejecuta al encontrar un cambio en un repositorio de código o incluso, al finalizar uno o varios pipelines.
Abstracción
- Multiples Pipelines corren en paralelo
- Multiples Stages dentro de un Pipeline corren secuencialmente
- Multiples Jobs dentro de un Stage corren en paralelo
- Multiples Tasks dentro de un Job corren secuencialmente
El diseño de los pipelines necesitan de una estructura consistente tomando ventaja de la abstracción proveída al momento de crear alguno de estos pasos, considerando también que los nombres de los pipeles, stages, etc. correspondan con lo que realmente están haciendo.