GitHub Actions para equipos de QA Automatizadores

2 May, 2025 | DevOps

Recientemente tuve la oportunidad de dictar un taller enfocado en la automatización de procesos de integración y despliegue continuo (CI/CD) utilizando GitHub Actions, dirigido a un equipo de QA Automatizadores. El objetivo fue brindarles las bases y herramientas necesarias para que puedan implementar flujos de trabajo automáticos que mejoren la eficiencia y calidad en sus proyectos de testing y desarrollo.

¿Por qué GitHub Actions?

GitHub Actions es una plataforma integrada en GitHub que permite automatizar tareas como compilación, pruebas, despliegue y otras acciones relacionadas con el ciclo de vida del software. Al aprovechar los eventos que ocurren en un repositorio -como commits o pull requests- es posible ejecutar workflows configurables que agilizan el trabajo y reducen errores manuales.

Conceptos clave abordados en el taller

Para entender y sacar el máximo provecho a GitHub Actions, repasamos los siguientes conceptos fundamentales:

  • Workflow: Es un proceso automatizado definido en un archivo YAML dentro del repositorio (.github/workflows) que se ejecuta ante determinados eventos.
  • Evento (Event): Activador que dispara la ejecución del workflow, por ejemplo, un push o la apertura de un pull request.
  • Job: Conjunto de tareas o pasos que se ejecutan en un runner.
  • Runner: Servidor que ejecuta los jobs. Puede ser uno de los runners preconfigurados de GitHub (Ubuntu, Windows, macOS) o un runner auto-hospedado.
  • Step: Unidad individual dentro de un job, puede ser un comando o una acción.
  • Action: Aplicación reutilizable que realiza tareas específicas dentro de un workflow.

Triggers más comunes para activar workflows

Durante el taller vimos cómo configurar workflows que se ejecutan automáticamente en eventos tales como:

  • push: cada vez que se hace un commit.
  • pull_request: al abrir o actualizar una solicitud de extracción.
  • issues y issue_comment: para gestionar issues y comentarios.
  • workflow_dispatch: para ejecutar workflows manualmente.
  • schedule: para programar ejecuciones periódicas tipo cron.

Ejemplo práctico de workflow

Como parte de la práctica, construimos un workflow básico que se ejecuta en cada push o pull request a la rama cypress, realizando una ejecución automatizada de Cypress y almacenando su resultado en un artifact:

name: Run Cypress Tests

on:
  push:
    branches:
      - cypress

jobs:
  cypress-tests:
    runs-on: ubuntu-24.04

    steps:
      - name: Checkout code
        uses: actions/checkout@v4

      # 2. Configurar Node.js
      - name: Setup Node.js
        uses: actions/setup-node@v3
        with:
          node-version: 18

      # 3. Instalar dependencias
      - name: Install dependencies
        run: |
          cd test
          npm install

      # 4. Ejecutar los tests de Cypress
      - name: Run Cypress Tests
        run: |
          cd test
          npx cypress run 

      # 5. Publicar videos en GitHub (solo si los tests tienen éxito)
      - name: Publish Cypress Videos
        if: success()
        uses: actions/upload-artifact@v4
        with:
          name: cypress-videos
          path: test/cypress/videos

      # 6. Publicar capturas de pantalla en GitHub (solo si hay fallos)
      - name: Publish Cypress Screenshots
        if: failure()
        uses: actions/upload-artifact@v4
        with:
          name: cypress-screenshots
          path: test/cypress/screenshots

Este ejemplo es una base para que los equipos de QA puedan integrar sus pruebas automatizadas dentro de pipelines que se ejecuten de forma continua y confiable.

Conclusión

El taller fue una excelente oportunidad para que el equipo de QA Automatizadores comprendiera cómo GitHub Actions puede transformar sus procesos, facilitando la automatización y mejorando la calidad del software. Si quieres profundizar en este tema, te invito a revisar el repositorio completo con los materiales y ejemplos utilizados durante el taller: SWAT-GitHub-Actions.

¿Quieres que prepare más contenido o talleres sobre automatización y CI/CD? ¡Déjame un comentario y seguimos aprendiendo juntos!