te comparto un mapa mental interactivo con los conceptos de Event, Runner, Workflow, Job, Step y Action todo lo que debes hacer es entrar a la pagina
y copiar el siguente codigo en el
---
markmap:
colorFreezeLevel: 2
initialExpandLevel: 2
---
# GitHub Actions: Componentes Clave 🚀
- ## **Workflow** (Flujo de Trabajo) ⚙️
- Define un proceso automatizado.
- Se compone de uno o más **Jobs**.
- Se desencadena por un **Event**.
- Ejemplo de archivo: `.github/workflows/main.yml`
- ### **Event** (Evento) ⚡️
- Actividad específica que dispara un **Workflow**.
- Ejemplos:
- `push`: Al empujar cambios a un repositorio.
- `pull_request`: Al crear o actualizar una Pull Request.
- `schedule`: Ejecución programada (cron).
- `workflow_dispatch`: Disparo manual.
- `release`: Al crear una nueva release.
- ## **Runner** (Ejecutor) 🏃♂️
- Servidor/máquina que ejecuta los **Jobs** de un **Workflow**.
- Tipos:
- **GitHub-hosted runners**:
- Mantenidos por GitHub.
- Entornos limpios para cada job (Ubuntu, Windows, macOS).
- **Self-hosted runners**:
- Máquinas propias que configuras para ejecutar jobs.
- Permiten más control sobre el hardware, software y entorno.
- ## **Job** (Trabajo) 🛠️
- Conjunto de **Steps** que se ejecutan secuencialmente en el mismo **Runner**.
- Los jobs pueden ejecutarse en paralelo por defecto o secuencialmente si se definen dependencias (`needs`).
- Atributos principales:
- `name`: Nombre descriptivo del job.
- `runs-on`: Especifica el tipo de **Runner** a usar (e.g., `ubuntu-latest`).
- `steps`: Define la secuencia de **Steps**.
- `needs`: Define dependencias con otros jobs.
- `if`: Condición para ejecutar el job.
- ### **Step** (Paso) ➡️
- Tarea individual dentro de un **Job**.
- Puede ser:
- Un script de línea de comandos:
- `run: echo "Hola Mundo"`
- `run: npm install`
- Una **Action**.
- Atributos principales:
- `name`: Nombre descriptivo del step.
- `uses`: Para ejecutar una **Action**.
- `run`: Para ejecutar comandos.
- `with`: Para pasar parámetros a una **Action**.
- `env`: Para definir variables de entorno para el step.
- ## **Action** (Acción) 🧩
- Pieza de código reutilizable que realiza una tarea compleja o común.
- Elimina la necesidad de escribir scripts repetitivos.
- Se invocan dentro de un **Step** usando la palabra clave `uses`.
- Tipos:
- **Marketplace Actions**: Creadas por la comunidad o GitHub (e.g., `actions/checkout@v4`, `actions/setup-node@v4`).
- **Custom Actions**:
- Definidas en tu propio repositorio.
- Definidas en otro repositorio público o privado.
- Tecnologías:
- Docker (contenedores).
- JavaScript/Node.js.
- Composite (combinación de otros steps).