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

  1. Pipeline: Una serie de etapas (stages) que se ejecutan en secuencia o en paralelo.
  2. Job: Una tarea individual dentro de una etapa.
  3. Runner: Un agente que ejecuta los jobs definidos en el pipeline.
  4. .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

  1. Instalar GitLab Runner:

    sudo apt-get install gitlab-runner
    
  2. 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

  1. Crea un nuevo proyecto en GitLab.

  2. 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..."
    
  3. Realiza un commit y observa cómo se ejecuta el pipeline en GitLab.

Ejercicio 2: Integración de Pruebas Automatizadas

  1. Modifica el archivo .gitlab-ci.yml para incluir un job que ejecute pruebas unitarias.

  2. 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
    
  3. 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!

© Copyright 2024. Todos los derechos reservados