Pipeline de CI/CD con GitHub Actions para automatizar despliegues
|

CI/CD con GitHub Actions desde cero: guia completa

CI/CD es una de las practicas mas importantes en el mundo DevOps. GitHub Actions te permite automatizar todo tu pipeline de integracion y despliegue directamente desde tu repositorio, sin necesidad de herramientas externas. En este post te explico como funciona desde cero con ejemplos reales. Consulta la documentacion oficial de GitHub Actions para mas detalle.

Que es CI/CD y por que usarlo

CI/CD son las siglas de Continuous Integration y Continuous Deployment. Con CI, cada vez que subes codigo se ejecutan automaticamente los tests y el linting. Con CD, si el CI pasa, el codigo se despliega automaticamente al entorno correspondiente.

Conceptos clave de GitHub Actions CI/CD

  • Workflow: el archivo YAML que define el pipeline completo.
  • Event: lo que dispara el workflow (push, pull_request, schedule).
  • Job: un conjunto de steps que se ejecutan en el mismo runner.
  • Step: una tarea individual dentro de un job.
  • Action: un bloque reutilizable del Marketplace.
  • Runner: la maquina donde se ejecuta el job.

Tu primer workflow de CI/CD con GitHub Actions

Crea el archivo .github/workflows/hola-mundo.yml en tu repositorio:

name: Mi primer workflow

on:
  push:
    branches: [ main ]

jobs:
  hola-mundo:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout del codigo
        uses: actions/checkout@v4

      - name: Decir hola
        run: echo Hola desde GitHub Actions

CI para Node.js con GitHub Actions

name: CI - Node.js

on:
  push:
    branches: [ main, develop ]
  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

Pipeline CI/CD completo con Docker

Este es el workflow mas completo: construye la imagen Docker, ejecuta los tests y despliega si todo pasa:

name: CI/CD - Build y Deploy

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 test

  build:
    needs: test
    runs-on: ubuntu-latest
    permissions:
      contents: read
      packages: write
    steps:
      - uses: actions/checkout@v4
      - name: Login en GitHub Container Registry
        uses: docker/login-action@v3
        with:
          registry: ghcr.io
          username: ${{ github.actor }}
          password: ${{ secrets.GITHUB_TOKEN }}
      - name: Build y push de la imagen
        uses: docker/build-push-action@v5
        with:
          context: .
          push: true
          tags: ghcr.io/${{ github.repository }}:main

  deploy:
    needs: build
    runs-on: ubuntu-latest
    steps:
      - name: Deploy via SSH
        uses: appleboy/ssh-action@v1
        with:
          host: ${{ secrets.SERVER_HOST }}
          username: ${{ secrets.SERVER_USER }}
          key: ${{ secrets.SSH_PRIVATE_KEY }}
          script: |
            docker pull ghcr.io/${{ github.repository }}:main
            docker stop mi-app || true
            docker rm mi-app || true
            docker run -d --name mi-app -p 3000:3000 ghcr.io/${{ github.repository }}:main

Secretos en GitHub Actions

Nunca pongas credenciales en el workflow. Añadelos en Settings del repo, luego Secrets and variables, luego Actions:

steps:
  - name: Deploy
    env:
      DATABASE_URL: ${{ secrets.DATABASE_URL }}
      API_KEY: ${{ secrets.API_KEY }}
    run: ./deploy.sh

Actions mas utiles del Marketplace

ActionPara que sirve
actions/checkout@v4Clona el repositorio
actions/setup-node@v4Instala Node.js
docker/build-push-action@v5Build y push Docker
azure/login@v2Login en Azure
google-github-actions/auth@v2Autenticacion en GCP
appleboy/ssh-action@v1Comandos via SSH
actions/cache@v4Cachear dependencias

Conclusion

GitHub Actions es una de las herramientas mas potentes del ecosistema DevOps. Lo mejor es que esta integrado en GitHub sin servidores adicionales. Con los ejemplos de este post tienes todo lo necesario para montar tu primer pipeline de CI/CD.

En el proximo post veremos GitHub Actions vs GitLab CI: comparativa completa 2026. Si quieres profundizar en contenedores, revisa el post de Docker Compose completo. Tienes preguntas sobre GitHub Actions? Dejame un comentario.

¡No te pierdas los próximos posts!

¡No hacemos spam! Lee nuestra política de privacidad para obtener más información.

Publicaciones Similares

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *