GitHub Actions - ciscojuan/tourisplan GitHub Wiki

Devops

GitHub Actions

GitHub Actions es una herramienta de GitHub que nos ayuda a automatixzar tareas relacionadas a nuestro repositorio.

  • CI Continuos Integration
  • CD Continuos Delivery

Con GitHub Actions podemos crear *workflows que se ejecutan en eventos específicos. En este proyecto, utilizamos dos workflows, cada uno con una función particular. Estos se activan al realizar un push o un pull request.

1. CI.yml

graph TD
    Start[Inicio del pipeline<br/>push / PR / dispatch]
    
    Start --> Lint[Lint]
    Start --> Build[Build]
    Start --> TypeCheck[TypeScript Check]

    Lint -->|✔️ npm run lint| EndLint[✅ Finaliza Lint]
    Build -->|✔️ npm run build| EndBuild[✅ Finaliza Build]
    TypeCheck -->|✔️ tsc --noEmit| EndCheck[✅ Finaliza Type Check]
Loading

Este workflow se ejecuta automáticamente cuando:

  • Se hace push a la rama main o ramas que comienzan con feature/

  • Se crea un pull request hacia las ramas main, develop u otras ramas que comiencen con feature/

  • Se activa manualmente (workflow_dispatch)

Consta de tres jobs independientes:

  • Lint: Verifica la calidad del código usando las reglas de linting configuradas en el proyecto

  • Build: Compila el proyecto para asegurar que no hay errores de construcción

  • Type-Check: Verifica que el código TypeScript no tenga errores de tipado

Cada job utiliza Node.js 20 y ejecuta los comandos correspondientes después de instalar las dependencias.

2. SAST Snyk Analysis

graph TD
    A[Trigger: workflow_dispatch] --> B{Input: run_sast == true}
    B -- Yes --> C[Job: sast-snyk]
    
    C --> D[Checkout code<br/>actions/checkout@v4]
    D --> E[Setup Node.js v20<br/>actions/setup-node@v4]
    E --> F[Install dependencies<br/>npm ci]
    F --> G[Run Snyk scan<br/>snyk/actions/node@master]
    G --> H[Generate HTML report<br/>snyk-to-html]
    H --> I[Upload Snyk report<br/>actions/upload-artifact@v4]
    
    B -- No --> Z[⏹️ Job skipped]
Loading

Este workflow está enfocado en el análisis de seguridad del código:

  • Solo se ejecuta manualmente mediante workflow_dispatch.

  • Utiliza Snyk para detectar vulnerabilidades en el código y sus dependencias.

  • Establece un umbral de severidad alta para los reportes.

  • Genera un reporte en formato HTML con los resultados.

  • Sube el reporte como artefacto para su posterior revisión.

Este análisis es especialmente útil para auditorías de seguridad antes de despliegues importantes o revisiones periódicas.

Reglas en las ramas:

Se establecieron un conjunto de reglas que se aplican a las ramas para garantizar la calidad y seguridad del código. Por ejemplo:

main

  • No se permite hacer push directo.
  • Un usuario no puede hacer un pull request directamente; se requieren al menos dos colaboradores que aprueben el pull request para hacer merge.
  • No se permite bypass para hacer un PR.

develop

  • No se permite hacer push directo.
  • Para hacer merge en esta rama, se debe crear un pull request desde otra rama.
  • No se permite bypass para hacer un PR.

GitHub Projects

GitHub ofrece una herramienta de monitoreo de tareas llamada Project Board. A partir de esta herramienta, se pueden crear issues o spikes que se agregan al tablero.

Con las columnas To Do, In Progress y Done, se gestiona el estado de cada tarea de manera clara y organizada.

⚠️ **GitHub.com Fallback** ⚠️