GitHub Actions es una potente herramienta de automatización dentro de GitHub que permite crear flujos de trabajo (workflows) para compilar, probar, empaquetar, y desplegar tu código automáticamente.
A continuación te dejo una guía completa para aprender GitHub Actions desde cero.
Conceptos clave GitHub actions
Workflow
Un workflow es un archivo YAML que define la automatización.
- Vive en:
.github/workflows/ - Extensión:
.ymlo.yaml
Job
Un workflow tiene uno o más jobs.
- Se ejecutan en máquinas virtuales
- Pueden correr en paralelo o en secuencia
Step
Cada job tiene steps.
Un step puede:
- Ejecutar comandos (
run) - Usar una acción (
uses)
Action
Reutilizable, puede ser una acción propia o de terceros.
Runner
Es la máquina donde corre el workflow.
Ejemplo:
ubuntu-latest
Event
Define cuándo se ejecuta el workflow.
Ejemplos:
pushpull_requestscheduleworkflow_dispatch(manual)
Conceptos de workflows
| Clave YAML | ¿Qué hace? | Ejemplo |
|---|---|---|
| name |
Define el nombre del workflow. Aparece en la pestaña de "Actions" en GitHub. |
|
| on |
Define los eventos que disparan el workflow. Puede ser:
|
|
| jobs |
Contiene los diferentes bloques de ejecución. Cada job es independiente y puede tener pasos (steps) y condiciones. |
|
| runs-on |
Define el sistema operativo donde se ejecutará el job. Valores comunes:
|
|
| steps | Lista de acciones o comandos que se ejecutan dentro de un job. |
|
| uses |
Ejecuta una acción de GitHub. Sintaxis: autor/repositorio@versión |
|
| run | Ejecuta comandos de shell directamente. |
|
| name (dentro de steps) | Nombre descriptivo del paso, útil para identificarlo en la interfaz. | |
| with | Se usa con uses: para pasar parámetros a la acción. |
|
| env | Define variables de entorno (env) disponibles en los pasos. |
|
| if | Condicional para ejecutar un paso o job. |
|
| needs | Establece dependencias entre jobs. |
|
| strategy | Permite definir matrices de ejecución para probar múltiples versiones/configuraciones. |
|
| continue-on-error | Si es true, no falla el job aunque el paso falle. | |
| timeout-minutes | Establece un tiempo máximo de ejecución del job. | |
| defaults | Permite establecer valores por defecto para los pasos. |
|
| outputs | Permite compartir datos entre jobs. |
|
| secrets | Accede a secretos definidos en GitHub (por ejemplo, tokens, contraseñas). |
|
| github y env contextos | Se accede a información del evento actual: |
|
Ejemplo de archivo yaml
name: Mi primer workflow
on: # Evento
push:
branches: ["main"]
jobs: # Trabajo
saludo: # Nombre del job
runs-on: ubuntu-latest # Runner
steps: # Pasos
- name: Mostrar mensaje
run: echo "Hola" # Comando
Primer proyecto práctico (desde cero)
Objetivo del proyecto
Crear un repositorio que:
- Se ejecute automáticamente en cada
push - Imprima mensajes
- Ejecute un pequeño script
Crear repositorio
- En GitHub → New repository
- Nombre:
github-actions-intro - Público
- Inicializar con README
Clonar repositorio
Procedemos a clonar el repositorio remoto en nuestro equipo local
git clone https://github.com/tu-usuario/github-actions-intro.git
cd github-actions-intro
Crear estructura de GitHub Actions
Crear carpetas dentro del proyecto clonado:
mkdir -p .github/workflows
Crear tu primer workflow
Archivo: .github/workflows/hello-world.yml
name: Mi primer workflow
on:
push:
branches: ["main"]
jobs:
saludo:
runs-on: ubuntu-latest
steps:
- name: Mostrar mensaje
run: echo "Hola, este workflow funciona 🎉"
Subir cambios
Luego de crear el archivo, procedemos a realizar el commit y subir los cambios al repositorio remoto, esto lo hacemos de la siguiente forma
git add .
git commit -m "Primer workflow de GitHub Actions"
git push origin main
Ver ejecución
Ve al repositorio en GitHub
Pestaña Actions
Verás el workflow ejecutándose
Abre el job y revisa los logs