Workflow de GitHub Actions para Node.js (lint, pruebas y build)
Un workflow de integración continua para un proyecto Node.js: instala con npm ci y ejecuta lint, pruebas y build en varias versiones de Node, con caché de npm. Este es el YAML exacto que genera la aplicación.
Cuándo usarla
- Tu proyecto tiene package.json y package-lock.json.
- Quieres ejecutar lint, pruebas y build en varias versiones de Node.
- Quieres un punto de partida seguro para ampliarlo (despliegue, publicación…).
El workflow completo
name: CI Node
on:
push:
branches:
- main
pull_request:
branches:
- main
workflow_dispatch:
permissions:
contents: read
jobs:
build:
name: Node ${{ matrix.node-version }}
runs-on: ubuntu-latest
timeout-minutes: 15
strategy:
matrix:
node-version:
- 20
- 22
- 24
fail-fast: false
steps:
- name: Descargar el código (actions/checkout v7.0.1)
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1
- name: Instalar Node (actions/setup-node v7.1.0)
uses: actions/setup-node@949feb2413d6458794dcd2491c4babbbce0c15c1
with:
node-version: ${{ matrix.node-version }}
cache: npm
- name: Instalar dependencias
run: npm ci
- name: Lint
run: npm run lint --if-present
- name: Pruebas
run: npm test --if-present
- name: Build
run: npm run build --if-present
Es un punto de partida: puedes abrirlo en el editor, cambiar eventos, jobs y steps, y la aplicación lo vuelve a validar antes de generar el archivo.
Antes de usarla
- Necesita un package-lock.json (usa `npm ci`).
- Los scripts `lint`, `test` y `build` se ejecutan solo si existen en tu package.json (`--if-present`).
- Cambia las versiones de la matriz por las que soporte tu proyecto.
Qué hace cada parte
- EventosEl workflow se ejecuta al subir cambios a main, en los pull requests hacia main y a mano desde la pestaña Actions (workflow_dispatch).
- Matriz de versionesUna matriz con tres versiones de Node crea un job por versión; con fail-fast desactivado, un fallo en una no cancela las demás.
- Scripts opcionalesLos scripts lint, test y build se ejecutan solo si existen en tu package.json (--if-present), así que la plantilla no falla por no tenerlos.
- Caché de npmLa acción de instalar Node guarda la caché de npm entre ejecuciones.
- Permisos y seguridadPermisos mínimos: el token solo puede leer el contenido del repositorio (contents: read). Las acciones de terceros van fijadas a un SHA de commit concreto (con la versión legible en el nombre del step), no a una etiqueta móvil.
- Tiempo máximoCada job tiene un tiempo máximo (timeout-minutes) para que un cuelgue no consuma minutos sin fin.
Cómo usarla en tu repositorio
- Guarda el archivo en la carpeta .github/workflows/ de tu repositorio.
- Súbelo (commit y push). GitHub detecta el workflow y lo ejecuta según sus eventos.
- Mira el resultado en la pestaña Actions del repositorio.
Preguntas frecuentes
¿Por qué npm ci y no npm install?
npm ci instala exactamente lo que dice package-lock.json y falla si no coincide con package.json, lo que hace las ejecuciones reproducibles.
¿Y si uso pnpm o yarn?
Cambia el step de instalar dependencias y la caché de la acción de Node por los de tu gestor. El resto de la plantilla sirve igual.
¿Cómo cambio las versiones de Node?
Edita la lista de la matriz (node-version) por las versiones que soporte tu proyecto.
Otras plantillas
- Workflow de GitHub Actions para Python (pytest)Instala dependencias y ejecuta pytest en varias versiones de Python con cache de pip.
- Workflow de GitHub Actions para construir y publicar una imagen Docker en GHCRConstruye la imagen del repositorio y la publica en GitHub Container Registry (ghcr.io) al subir a main o crear una etiqueta v*.
Pruébalo gratis
El editor está disponible con una cuenta gratuita, con límites de uso. Nada se ejecuta en tu repositorio ni en tu instalación: tú decides qué archivo usas.