Featured image of post Primeros pasos con CI/CD usando GitHub ActionsFeatured image of post Primeros pasos con CI/CD usando GitHub Actions

Primeros pasos con CI/CD usando GitHub Actions

Una guía para principiantes sobre CI/CD con GitHub Actions, que cubre lo esencial para tu primera configuración de automatización.

Si “CI/CD” suena como algo que deberías saber pero no sabes por dónde empezar, esta guía es para ti. GitHub Actions hace que la integración y entrega continuas sean accesibles para todos los que tienen un repositorio de GitHub.

¿Qué es GitHub Actions?

GitHub Actions es una plataforma CI/CD integrada directamente en GitHub. Te permite automatizar pruebas, compilaciones y despliegues directamente desde tu repositorio. Los flujos de trabajo se activan con pushes, pull requests o eventos programados.

1. Conceptos básicos del flujo de trabajo

Coloca un archivo YAML dentro de .github/workflows/ para definir tu flujo de trabajo.

.github/
└── workflows/
    └── ci.yml

Aquí está la estructura básica:

name: CI

on:
  push:
    branches: [main]
  pull_request:
    branches: [main]

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Configurar Node.js
        uses: actions/setup-node@v4
        with:
          node-version: 20
      - run: npm ci
      - run: npm test

Elementos clave

ElementoDescripción
nameNombre del flujo de trabajo mostrado en GitHub
onEventos desencadenantes (push, pull_request, schedule, etc.)
jobsColección de trabajos que pueden ejecutarse en paralelo
runs-onEntorno del ejecutor (ubuntu-latest, windows-latest, macos-latest)
stepsTareas individuales dentro de un trabajo
usesReutilizar una acción existente
runEjecutar un comando de shell directamente

2. Variantes de activación

# Al hacer push
on: push

# Al hacer pull request
on: pull_request

# Programado (cron)
on:
  schedule:
    - cron: '0 9 * * 1'  # Cada lunes a las 9:00 UTC

# Activación manual
on:
  workflow_dispatch:

3. Uso de acciones del Marketplace

Miles de acciones están disponibles en GitHub Marketplace. Estas son las más comunes:

- uses: actions/checkout@v4          # Clonar repositorio
- uses: actions/setup-node@v4        # Configurar Node.js
- uses: actions/setup-python@v5      # Configurar Python
- uses: docker/login-action@v3       # Iniciar sesión en registro Docker
- uses: actions/cache@v4             # Cachear dependencias
- uses: actions/upload-artifact@v4   # Subir artefactos de compilación

4. Compilaciones en matriz para pruebas paralelas

jobs:
  test:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        node-version: [18, 20, 22]
        os: [ubuntu-latest, windows-latest]
    runs-on: ${{ matrix.os }}
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: ${{ matrix.node-version }}
      - run: npm ci
      - run: npm test

Son seis combinaciones ejecutándose automáticamente.

5. Secretos y variables de entorno

Almacena claves API y contraseñas en Settings → Secrets and variables → Actions en GitHub.

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: deploy.sh
        env:
          API_KEY: ${{ secrets.API_KEY }}
          DEPLOY_TOKEN: ${{ secrets.DEPLOY_TOKEN }}

Nunca escribas secretos directamente en tus archivos YAML.

6. Cacheo de dependencias

Cachear node_modules o ~/.npm puede acelerar significativamente tus flujos de trabajo.

- name: Cachear módulos de Node
  uses: actions/cache@v4
  with:
    path: ~/.npm
    key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
    restore-keys: |
      ${{ runner.os }}-node-

7. Ejemplo de despliegue (GitHub Pages)

name: Desplegar en GitHub Pages

on:
  push:
    branches: [main]

permissions:
  contents: read
  pages: write
  id-token: write

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: 20
      - run: npm ci
      - run: npm run build
      - uses: actions/configure-pages@v4
      - uses: actions/upload-pages-artifact@v3
        with:
          path: ./out
      - uses: actions/deploy-pages@v4

Resumen

GitHub Actions es una de las herramientas CI/CD más fáciles para empezar — solo coloca un archivo YAML en .github/workflows/. Comienza con un simple flujo de trabajo de “ejecutar pruebas al hacer push”, luego explora gradualmente compilaciones en matriz, cacheo y despliegues automatizados.