PureTools

GitHub Actions: CI/CD De Cero al Deploy

PureTools Team· 8 min de lectura
GitHub Actions: CI/CD De Cero al Deploy

GitHub Actions: Tu Pipeline CI/CD Gratuito

GitHub Actions ejecuta workflows en respuesta a eventos (push, PR, schedule). Es gratuito para repos públicos y viene con 2000 min/mes para repos privados.

Workflow Básico

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

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: 20
          cache: 'npm'
      - run: npm ci
      - run: npm run lint
      - run: npm test

Conceptos Clave

ConceptoSignificado
WorkflowArchivo YAML en .github/workflows/
EventLo que dispara el workflow
JobConjunto de steps (puede correr en paralelo)
StepComando o action individual
ActionUnidad reutilizable
SecretVariable cifrada

CI/CD Completo: Test → Build → Deploy

name: CI/CD
on:
  push:
    branches: [main]

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with: { node-version: 20, cache: 'npm' }
      - run: npm ci
      - run: npm run lint
      - run: npm test

  deploy:
    needs: test
    runs-on: ubuntu-latest
    if: github.ref == 'refs/heads/main'
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with: { node-version: 20, cache: 'npm' }
      - run: npm ci && npm run build
      - name: Deploy
        env:
          DEPLOY_TOKEN: ${{ secrets.DEPLOY_TOKEN }}
        run: npx wrangler deploy --token $DEPLOY_TOKEN

Matrix Builds

strategy:
  matrix:
    node-version: [18, 20, 22]

Patrones Útiles

# Ejecutar solo cuando archivos específicos cambian
on:
  push:
    paths: ['src/**', 'package.json']

# Agendado (cron)
on:
  schedule:
    - cron: '0 8 * * 1'

# Trigger manual
on:
  workflow_dispatch:

Valida tu YAML: Formateador YAML — verifica la sintaxis de tu archivo de workflow.