Guía rápida de pipelines CI/CD en GitLab
Un buen pipeline CI/CD (Integración contínua e Integración de despliegue) es el que lleva el código del punto A al punto B de manera efeciente.
CI/CD pipelines interviene en el SDLC (Ciclo de vida del desarrollo de software), usar esos pipelines automatizados reduce la cantidad de errores humanos y crea iteraciones rápidas.
Glosario de un GitLab Pipeline:
- Commit: Un cambio en el código.
- Pipeline: Una colección de jobs divididos en varios stages o etapas.
- Runner: Un agente que ejecuta jobs individualmente así estos pueden ejecutarse una y otra vez veces si es necesario.
- Stages: Define a los stages o etapas de un job, como por ejemplo stage : “Desarrollo” o Stage: ”Despliegue”. Los jobs que están en un mismo stage pueden ser paralelizados.
Estos pipelines pueden ser configurados usando un archivo version-controlled YAML, gitlab-ci.yml, que se encuentra dentro de la raíz de un proyecto. Desde ahí se puede configurar parametros para el pipeline.
- Con GitLab Runner se puede especificar qué es lo que se va a ejecutar.
- Qué pasa si un proceso resulta satisfactorio o falla.
Se puede usar arquitectura microservicios y pipelines multi proyectos, ya que algunos pueden llegar a ser muy grandes y tener interdependencias con otros proyectos.
Pipeline as a code
Hay una interfaz gráfica para crear pipelines pero tiene sus desventajas como: La auditoría es limitada, díficil para colaborar, errores difíciles de tratar, un ejemplo es que hacer un rollback es un ejercicio inútil, los pipelines CI/CD en este estado son fáciles de generar errores y difíciles de modificar.
Pipeline trabajado como código corrige todo lo anterior mencionado, es útil para equipos flexibles, para comentarlo más específicamente, pipelines como código ofrece:
- Contro de versiones: Mantiene un registro de los cambios y provee un rollback fácil de implementar.
- Pistas de auditoría: Se puede saber cuándo y qué cambios se hizo al código fuente.
- Fácil de colaborar: El código está disponible al equipo para mejoras, sugerencias y actualizaciones.
- Conocimiento compartido: Se puede importar plantillas y code snipplets para que los equipos puedan compartir mejores prácticas.
- Built-in Lint: Herramienta que asegura que el archivo YAML es válido y ayuda a los nuevos usuarios.
Tener automatizado el proceso de desarrollo, testing y despliegue es lo que proporciona rápidez y disminución de errores en el software, DevOps es esta área de conocimiento que se encarga de lo anteriormente explicado.
Contruir mejores pipelines con Auto DevOps
Antes era complicado configurar desde cero un proceso automatizado de CI/CD pipeline, AutoDevOps es una solución a este problema nos hace ahorrar tiempo y nos da flexibilidad, usa plantillas para instalar el pipeline de entrega, obviamente permite modificaciones pero la mayoría de configuraciones está hecha.