- Un workflow es un archivo YAML en
.github/workflows/. - Los eventos inician los workflows. Los jobs se ejecutan en runners. Los steps hacen el trabajo.
- Guarda contraseñas y tokens en secretos, nunca en el código.
- Usa la caché y una matriz para hacer los pipelines más rápidos y más amplios.
Sin automatización, cada lanzamiento va así: alguien ejecuta las pruebas, alguien compila la aplicación, alguien copia archivos a un servidor. La gente olvida pasos. La gente comete erratas. Los lanzamientos se vuelven lentos y aterradores.
GitHub Actions elimina ese dolor. Describes los pasos una vez y GitHub los ejecuta en cada cambio.
CI/CD en palabras sencillas
- Integración continua (CI): cada vez que alguien sube código, el sistema lo compila y ejecuta las pruebas. Encuentras los problemas en minutos.
- Entrega o despliegue continuo (CD): el código que pasa las comprobaciones se prepara para el lanzamiento, o se lanza automáticamente.
GitHub Actions es la herramienta de CI/CD integrada en GitHub. Si eres nuevo en GitHub, empieza con nuestro tutorial de Git para principiantes.
Las partes principales de GitHub Actions
| Parte | Qué es |
|---|---|
| Workflow | Un archivo YAML que describe un proceso automatizado |
| Evento | Lo que lo inicia, como un push o un pull request |
| Job | Un grupo de pasos que se ejecutan en una máquina |
| Step | Un solo comando o una acción reutilizable |
| Runner | La máquina que ejecuta el job (alojada por GitHub o propia) |
| Action | Un paso reutilizable ya hecho, como actions/checkout |
Tu primer workflow
Crea un archivo llamado .github/workflows/hello.yml en tu repositorio:
name: Hello
on: [push]
jobs:
greet:
runs-on: ubuntu-latest
steps:
- name: Say hello
run: echo "Hola desde GitHub Actions"
Haz commit y push. Abre la pestaña Actions de tu repositorio y verás la ejecución. Haz clic en ella para leer los registros.
Un workflow real: instalar, probar y compilar
Esta es una configuración habitual para un proyecto de Node.js. Se ejecuta en cada push y pull request a main.
name: CI
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
cache: npm
- run: npm ci
- run: npm test
- run: npm run build
Línea por línea: checkout descarga tu código, setup-node instala Node y guarda en caché los paquetes, y los tres pasos run instalan, prueban y compilan. Si cualquier paso falla, falla todo el job y GitHub marca el pull request en rojo.
Consejo: activa la protección de ramas para que un pull request no pueda fusionarse hasta que pase esta comprobación.
Usa los secretos de forma segura
No escribas nunca contraseñas, claves de API ni tokens en tu archivo de workflow. Añádelos en Settings → Secrets and variables → Actions y luego léelos en el workflow:
- name: Deploy
run: ./deploy.sh
env:
API_TOKEN: ${{ secrets.API_TOKEN }}
GitHub oculta los valores de los secretos en los registros. Aun así, evita imprimirlos y da a cada token solo el acceso que necesita.
Prueba muchas versiones con una matriz y ve más rápido con la caché
Una matriz ejecuta el mismo job con distintas configuraciones, como varias versiones de Node:
strategy:
matrix:
node: [18, 20, 22]
steps:
- uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node }}
cache: npm
La caché guarda los paquetes descargados entre ejecuciones, para que la siguiente empiece más rápido. La mayoría de las acciones de configuración tienen una opción cache sencilla, como se muestra arriba.
Despliega automáticamente
Cuando las pruebas pasan, puedes desplegar. Un patrón seguro es desplegar solo desde main y solo después de que el job de pruebas termine bien:
deploy:
needs: test
if: github.ref == 'refs/heads/main'
runs-on: ubuntu-latest
environment: production
steps:
- uses: actions/checkout@v4
- run: ./deploy.sh
env:
API_TOKEN: ${{ secrets.API_TOKEN }}
La línea needs hace que el despliegue espere a las pruebas. La línea environment te permite añadir una aprobación manual antes de producción. Si lanzas aplicaciones en contenedores, aprende lo básico en nuestro tutorial de Docker.
Buenas prácticas
- Mantén los jobs pequeños y rápidos. Los pipelines lentos se ignoran.
- Fija las versiones de las acciones. Usa
@v4o un hash de commit completo, no una rama que se mueve. - Usa el mínimo privilegio. Define
permissionsen el workflow solo con lo que necesita. - Ejecuta primero las comprobaciones rápidas. Lint y pruebas unitarias antes de las pruebas end-to-end lentas.
- Guarda los informes. Sube los informes de pruebas como artefactos para poder leer los fallos.
- Ten cuidado con las acciones de terceros. Prefiere las conocidas y lee lo que hacen.
¿Quieres añadir pruebas de navegador a tu pipeline? Consulta las buenas prácticas de pruebas end-to-end para saber qué ejecutar y cuándo.
Errores comunes y soluciones rápidas
| Problema | Causa probable | Solución |
|---|---|---|
| El workflow no se inicia | El archivo no está en .github/workflows/ o el YAML no es válido |
Revisa la ruta y la indentación |
| “Permission denied” en un script | El script no es ejecutable | Ejecuta chmod +x y haz commit |
| El secreto está vacío | Nombre equivocado, o pull request desde un fork | Revisa el nombre; los forks no reciben secretos |
| Funciona en local pero falla en CI | Versiones distintas o archivos que faltan | Fija las versiones y usa npm ci |
Preguntas frecuentes
¿Es gratis GitHub Actions?
GitHub ofrece una cantidad gratuita de minutos para repositorios públicos y una cantidad limitada para los privados. Consulta la página de precios de GitHub para ver los límites actuales.
¿Cuál es la diferencia entre CI y CD?
CI compila y prueba cada cambio. CD prepara o entrega el cambio a los usuarios después de que pase las comprobaciones.
¿Dónde pongo los archivos de workflow?
En la carpeta .github/workflows/ de tu repositorio, como archivos .yml o .yaml.
¿Puedo ejecutar GitHub Actions en mi propio servidor?
Sí. Puedes configurar runners autoalojados. Protégelos bien, sobre todo en repositorios públicos.
¿Cómo ejecuto las pruebas solo en los pull requests?
Usa on: pull_request en tu workflow. También puedes limitarlo a ciertas ramas o rutas de archivos.
Sigue aprendiendo
¿Necesitas ayuda con testing, WordPress o SEO?
Ayudamos a los equipos a lanzar mejor software y a hacer crecer sus sitios. Cuéntanos en qué trabajas y te sugeriremos un siguiente paso claro.
Más guías sobre testing, IA y desarrollo moderno
¿Te gustó este artículo? Elige otro tutorial y sigue aprendiendo.
Playwright MCP: la guía completa de automatización de pruebas con IA
Playwright MCP permite que un asistente de IA controle un navegador real. Aprende cómo funciona, cómo configurarlo, qué pueden hacer con él los equipos de QA y cuáles son sus límites.
Leer artículo →Automatización de pruebasAutomatización de pruebas con IA en 2026: agentes de IA y QA
Descubre cómo la IA está cambiando las pruebas de software en 2026. Aprende qué puede hacer por los casos de prueba, los localizadores autorreparables y los agentes, dónde se queda corta y cómo pueden empezar con seguridad los equipos de QA.
Leer artículo →Bases de datos y SQLLos JOIN de SQL explicados con ejemplos (Inner, Left, Right, Full)
Los JOIN de SQL explicados paso a paso con tablas de ejemplo y consultas: INNER, LEFT, RIGHT, FULL, CROSS y SELF, además de errores comunes y consejos de rendimiento.
Leer artículo →