Introducción
GitLab CI/CD es una herramienta poderosa y flexible para la integración y el despliegue continuo. Permite a los equipos de desarrollo automatizar la construcción, prueba y despliegue de su código, mejorando la eficiencia y reduciendo errores humanos. En esta sección, aprenderás cómo configurar y utilizar GitLab CI/CD para tus proyectos.
Conceptos Clave
- Pipeline: Una serie de etapas (stages) que se ejecutan en secuencia o en paralelo.
- Job: Una tarea individual dentro de una etapa.
- Runner: Un agente que ejecuta los jobs definidos en el pipeline.
- .gitlab-ci.yml: El archivo de configuración donde se definen los pipelines.
Configuración Básica
Paso 1: Crear el Archivo .gitlab-ci.yml
El archivo .gitlab-ci.yml
se coloca en la raíz de tu repositorio y define los pipelines. Aquí tienes un ejemplo básico:
stages: - build - test - deploy build_job: stage: build script: - echo "Compilando el código..." - make build test_job: stage: test script: - echo "Ejecutando pruebas..." - make test deploy_job: stage: deploy script: - echo "Desplegando la aplicación..." - make deploy
Explicación del Código
- stages: Define las etapas del pipeline.
- build_job: Un job en la etapa de construcción.
- stage: Especifica la etapa a la que pertenece el job.
- script: Lista de comandos que se ejecutarán.
- test_job: Un job en la etapa de pruebas.
- deploy_job: Un job en la etapa de despliegue.
Paso 2: Configurar un Runner
Para ejecutar los jobs, necesitas un runner. GitLab ofrece runners compartidos, pero también puedes configurar uno propio.
Configuración de un Runner Propio
-
Instalar GitLab Runner:
sudo apt-get install gitlab-runner
-
Registrar el Runner:
sudo gitlab-runner register
Durante el registro, se te pedirá:
- URL del GitLab: La URL de tu instancia de GitLab.
- Token de registro: Lo obtienes desde la configuración del proyecto en GitLab.
- Descripción: Un nombre para identificar el runner.
- Tags: Etiquetas para especificar en qué jobs se utilizará el runner.
- Executor: Elige el tipo de ejecutor (shell, docker, etc.).
Ejemplo Práctico
Pipeline para una Aplicación Web
Supongamos que tienes una aplicación web y quieres configurar un pipeline que incluya construcción, pruebas y despliegue.
Archivo .gitlab-ci.yml
stages: - build - test - deploy variables: APP_NAME: "mi-aplicacion-web" DEPLOY_SERVER: "mi-servidor-deploy" build_job: stage: build script: - echo "Construyendo la aplicación..." - npm install - npm run build test_job: stage: test script: - echo "Ejecutando pruebas..." - npm test deploy_job: stage: deploy script: - echo "Desplegando la aplicación..." - scp -r dist/ $DEPLOY_SERVER:/var/www/$APP_NAME - ssh $DEPLOY_SERVER "systemctl restart nginx"
Explicación del Código
- variables: Define variables de entorno que se pueden usar en los scripts.
- build_job: Construye la aplicación usando npm.
- test_job: Ejecuta las pruebas.
- deploy_job: Despliega la aplicación al servidor especificado y reinicia el servidor web.
Ejercicios Prácticos
Ejercicio 1: Configuración de un Pipeline Básico
-
Crea un nuevo proyecto en GitLab.
-
Añade un archivo
.gitlab-ci.yml
en la raíz del proyecto con el siguiente contenido:stages: - build - test build_job: stage: build script: - echo "Construyendo el proyecto..." test_job: stage: test script: - echo "Ejecutando pruebas..."
-
Realiza un commit y observa cómo se ejecuta el pipeline en GitLab.
Ejercicio 2: Integración de Pruebas Automatizadas
-
Modifica el archivo
.gitlab-ci.yml
para incluir un job que ejecute pruebas unitarias. -
Usa un framework de pruebas adecuado para tu proyecto (por ejemplo, Jest para proyectos Node.js).
stages: - build - test build_job: stage: build script: - echo "Construyendo el proyecto..." - npm install test_job: stage: test script: - echo "Ejecutando pruebas..." - npm test
-
Realiza un commit y verifica que las pruebas se ejecuten correctamente.
Conclusión
GitLab CI/CD es una herramienta esencial para cualquier equipo de desarrollo que busque automatizar sus procesos de construcción, prueba y despliegue. Con una configuración adecuada, puedes mejorar significativamente la eficiencia y la calidad de tu software. En esta sección, has aprendido los conceptos básicos, cómo configurar un pipeline y cómo integrar pruebas automatizadas. ¡Ahora estás listo para explorar más funciones avanzadas y personalizar tus pipelines según las necesidades de tu proyecto!
Curso de CI/CD: Integración y Despliegue Continuo
Módulo 1: Introducción a CI/CD
Módulo 2: Integración Continua (CI)
- Introducción a la Integración Continua
- Configuración de un Entorno de CI
- Automatización de la Construcción
- Pruebas Automatizadas
- Integración con Control de Versiones
Módulo 3: Despliegue Continuo (CD)
- Introducción al Despliegue Continuo
- Automatización del Despliegue
- Estrategias de Despliegue
- Monitoreo y Retroalimentación
Módulo 4: Prácticas Avanzadas de CI/CD
Módulo 5: Implementación de CI/CD en Proyectos Reales
Módulo 6: Herramientas y Tecnologías
Módulo 7: Ejercicios Prácticos
- Ejercicio 1: Configuración de un Pipeline Básico
- Ejercicio 2: Integración de Pruebas Automatizadas
- Ejercicio 3: Despliegue en un Entorno de Producción
- Ejercicio 4: Monitoreo y Retroalimentación