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

Guárdalo como .github/workflows/node-ci.yml en tu repositorio
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

  1. Guarda el archivo en la carpeta .github/workflows/ de tu repositorio.
  2. Súbelo (commit y push). GitHub detecta el workflow y lo ejecuta según sus eventos.
  3. 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.

Crear cuenta gratisIniciar sesión