GitHub Actions - ciscojuan/tourisplan GitHub Wiki
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.
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]
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.
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]
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.
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 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.