Generador de workflows de GitHub Actions
Elige tu stack y obtén un archivo .github/workflows listo para hacer commit: disparadores de push, pull request, etiquetas y programación, una matriz de versiones y sistemas operativos, caché de dependencias, pasos de lint, test y build, y un despliegue opcional a GitHub Pages o GitHub Container Registry. Incluye permisos mínimos y un dependabot.yml a juego.
Última actualización:
Archivos generados
Guardar como
Cómo usar Generador de workflows de GitHub Actions
- Elige el tipo de proyecto: Node.js, Python, Go, Java, Rust, .NET, imagen Docker o sitio estático.
- Configura los disparadores: ramas para push y pull requests, etiquetas opcionales como v*, una programación cron y ejecuciones manuales.
- Configura la matriz de versiones del lenguaje y sistemas operativos, y edita los comandos de instalación, lint, test y build.
- Elige un destino de despliegue (GitHub Pages o una imagen Docker en GHCR) y extras como caché y artefactos.
- Copia o descarga el workflow, guárdalo como
.github/workflows/ci.ymlen tu repositorio y haz push. La ejecución aparece en la pestaña Actions.
Estructura del archivo del workflow
| Clave | Ejemplo | Significado |
|---|---|---|
on | push, pull_request, schedule, workflow_dispatch | Eventos que inician el workflow |
permissions | contents: read | Alcances del GITHUB_TOKEN automático |
concurrency | group: ${{ github.workflow }}-${{ github.ref }} | Solo una ejecución por grupo; las ejecuciones antiguas del PR se cancelan |
jobs.<id>.runs-on | ubuntu-latest | Imagen del runner para el job |
strategy.matrix | node: ['22', '24'] | Ejecuta el job una vez por combinación |
steps[].uses | actions/checkout@v5 | Ejecuta una acción publicada en una versión |
steps[].run | npm test | Ejecuta un comando de shell |
needs | needs: test | Espera a que otro job termine con éxito primero |
if | github.ref == 'refs/heads/main' | Ejecuta un job o paso solo cuando la condición es verdadera |
Acciones que usa el generador
Versiones mayores vigentes en 2025-2026. Fijar una etiqueta mayor recibe las correcciones automáticamente; para la máxima seguridad de la cadena de suministro puedes fijar en su lugar un SHA de commit completo y dejar que Dependabot lo actualice.
| Acción | Se usa para |
|---|---|
actions/checkout@v5 | Clonar el repositorio en el runner |
actions/setup-node@v5, setup-python@v6, setup-go@v6, setup-java@v5, setup-dotnet@v4 | Instalar el entorno del lenguaje, con caché integrada |
pnpm/action-setup@v4 | Instalar pnpm antes de setup-node |
dtolnay/rust-toolchain, Swatinem/rust-cache@v2 | Toolchain de Rust y caché de cargo |
actions/upload-artifact@v4 | Conservar la salida del build para descargarla |
actions/configure-pages@v5, upload-pages-artifact@v4, deploy-pages@v4 | Publicar en GitHub Pages |
docker/setup-buildx-action@v3, login-action@v3, metadata-action@v5, build-push-action@v6 | Compilar, etiquetar y subir imágenes de contenedor |
Consejos para una CI rápida y fiable
- Usa instalaciones limpias (
npm ci,pnpm install --frozen-lockfile) para que la CI falle cuando el archivo de bloqueo esté desactualizado en lugar de resolver nuevas versiones sin avisar. - Mantén la matriz pequeña para los pull requests; probar cada sistema operativo y versión multiplica los minutos. Prueba la versión compatible más antigua y la más reciente.
- Usa paths-ignore para cambios solo de documentación, pero recuerda que una comprobación de estado obligatoria que nunca se ejecuta bloquea el merge.
- Guarda las credenciales como secretos (Settings → Secrets and variables → Actions) y haz referencia a ellas como
${{ secrets.NAME }}; nunca las muestres en los logs. - Valida en local con un validador de YAML, o ejecuta los workflows en tu equipo con una herramienta como act antes de hacer push.
Preguntas frecuentes
¿Dónde pongo el archivo del workflow?
Guárdalo en tu repositorio dentro de .github/workflows/ con extensión .yml o .yaml, por ejemplo .github/workflows/ci.yml, y súbelo a GitHub. Los workflows se ejecutan desde la rama predeterminada para las programaciones y desde la rama enviada para los eventos push y pull_request. El archivo dependabot.yml va directamente en .github/.
¿Qué hace la matriz?
strategy.matrix ejecuta el mismo job una vez por cada combinación de valores; por ejemplo, Node.js 22 y 24 en Ubuntu y Windows da cuatro jobs en paralelo. Pon fail-fast en false para que las demás combinaciones terminen cuando una falla, así ves todas las versiones rotas a la vez.
¿Cómo funciona la caché de dependencias?
Las acciones oficiales de setup (setup-node, setup-python, setup-java, setup-go) pueden guardar en caché la carpeta de descargas del gestor de paquetes con una clave basada en el hash de tu archivo de bloqueo, así las ejecuciones posteriores la reutilizan en lugar de descargarlo todo. Requiere un archivo de bloqueo incluido en el repositorio, como package-lock.json o requirements.txt. Rust usa Swatinem/rust-cache y .NET usa actions/cache sobre la carpeta de NuGet.
¿Por qué poner permissions: contents: read?
El GITHUB_TOKEN automático solo obtiene los permisos que concedes. Contents de solo lectura basta para descargar el código y limita el daño si un paso o una dependencia se ve comprometido. Los jobs que necesitan más lo piden explícitamente: packages: write para subir imágenes, pages: write e id-token: write para desplegar en GitHub Pages.
¿Cómo despliego un sitio en GitHub Pages con Actions?
Elige Desplegar en GitHub Pages, indica la carpeta de salida del build y, en los ajustes del repositorio, pon Pages → Source en GitHub Actions. El job de build sube la carpeta con actions/upload-pages-artifact y un job de despliegue la publica con actions/deploy-pages en el entorno github-pages.
¿Qué sintaxis cron usa la programación?
Cron POSIX estándar de 5 campos en UTC: minuto, hora, día del mes, mes, día de la semana. Por ejemplo, 0 6 * * 1 se ejecuta cada lunes a las 06:00 UTC. El intervalo más corto es cada 5 minutos, y las ejecuciones programadas pueden retrasarse en periodos de mucha carga.
¿Qué versiones de las acciones se usan?
Las versiones mayores vigentes en 2025-2026, por ejemplo actions/checkout@v5, actions/setup-node@v5, actions/setup-python@v6 y actions/setup-go@v6. Las versiones mayores cambian con el tiempo, así que el dependabot.yml generado revisa el ecosistema github-actions cada semana y abre pull requests cuando salen versiones nuevas.
¿Se prueban todas las herramientas de FreeToolCabin para comprobar su calidad y precisión?
Sí. Cada herramienta del sitio pasa pruebas automáticas en navegadores reales para comprobar que el resultado es correcto y que no hay errores. Si encuentras un fallo o tienes una sugerencia, escríbenos a [email protected] y lo revisaremos.