GitHub Actions
GitHub Actions Automation & DevOps CI/CD

Generador de Flujos de Trabajo YAML para GitHub Actions CI/CD

Cree canalizaciones de flujos de trabajo YAML de GitHub Actions listas para producción para Node.js, Go, Python, compilaciones de Docker, pruebas y lanzamientos automatizados.

100% En el cliente
Cero transmisión al servidor
Preajustes:
Disparadores y Ramas
Disparadores Activos:
Entorno y Matriz
Pasos de Compilación, Pruebas y Caché
Seguridad, Secretos y Concurrencia
.github/workflows/nodejs-ci.yml Sintaxis Verificada (v4)
name: Node.js CI/CD Pipeline

on:
  push:
    branches:
      - 'main'
      - 'master'
  pull_request:
    branches:
      - 'main'
      - 'master'
  workflow_dispatch:
  release:
    types: [published]

concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true

permissions:
  contents: write

jobs:
  build-and-test:
    name: NODE Test & Build
    runs-on: ubuntu-latest
    timeout-minutes: 20
    strategy:
      fail-fast: false
      matrix:
        node-version: ['18.x', '20.x', '22.x']
    steps:
      - name: Checkout code repository
        uses: actions/checkout@v4
        with:
          fetch-depth: 1

      - name: Install pnpm package manager
        uses: pnpm/action-setup@v4
        with:
          version: 'latest'

      - name: Set up Node.js runtime environment
        uses: actions/setup-node@v4
        with:
          node-version: ${{ matrix.node-version }}
          cache: 'pnpm'

      - name: Install project dependencies
        run: pnpm install --frozen-lockfile

      - name: Run code linter and style check
        run: pnpm run lint

      - name: Run static typecheck
        run: pnpm run typecheck

      - name: Run automated test suite
        run: pnpm test -- --coverage

      - name: Compile and build production bundle
        run: pnpm run build

      - name: Upload build artifact
        uses: actions/upload-artifact@v4
        with:
          name: node-js-ci-cd-pipeline-artifact
          path: dist/
          retention-days: 7

      - name: Create GitHub Release on tag
        if: startsWith(github.ref, 'refs/tags/')
        uses: softprops/action-gh-release@v2
        with:
          generate_release_notes: true
          files: dist/**
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
Entorno Objetivo
NODE • ubuntu
Pasos del Pipeline
9 Pasos • ~5.2m ejecución
Puntaje de Seguridad
100/100 • Mínimo Privilegio

Compilación Local Instantánea

Sintetice flujos de trabajo de GitHub Actions en la memoria del navegador sin transmitir datos del repositorio a la nube.

Endurecimiento de Seguridad Empresarial

Aplica permisos mínimos para GITHUB_TOKEN, cancelación de ejecuciones redundantes, límites de tiempo y fijación de versiones de acciones.

Soporte Multi-Lenguaje y Estrategia de Matrices

Plantillas optimizadas para Node.js, Python, Go, Rust, Docker y GitHub Pages con almacenamiento en caché automático de dependencias.

Referencia técnica y guía de arquitectura

Guía del generador de flujos de trabajo YAML para GitHub Actions CI/CD — Guía de referencia

Cree canalizaciones de flujos de trabajo YAML de GitHub Actions listas para producción para Node.js, Go, Python, compilaciones de Docker, pruebas y lanzamientos automatizados.

Parámetros clave y controles

namestring

Identificador del flujo de trabajo mostrado en las pestañas de GitHub Actions, insignias de estado y comprobaciones de PR.

Por defecto: CI / CD Pipeline
onstring | object

Define los eventos de webhook que desencadenan la canalización: push, pull_request, cron programado o workflow_dispatch manual.

Por defecto: push, pull_request
runs-onstring | array

Especifica el sistema operativo del ejecutor (ubuntu-latest, macos-latest, windows-latest) o etiquetas autoalojadas.

Por defecto: ubuntu-latest
permissionsobject | string

Configura permisos de privilegios mínimos otorgados al GITHUB_TOKEN efímero (por ejemplo contents: read, packages: write).

Por defecto: contents: read
concurrencyobject | string

Evita ejecuciones simultáneas redundantes en la misma rama o PR; cancel-in-progress aborta trabajos obsoletos para ahorrar minutos.

Por defecto: group: ${{ github.ref }}, cancel-in-progress: true

Consejos profesionales y mejores prácticas

Haga referencia a las acciones usando

Haga referencia a las acciones usando el SHA de commit completo de 40 caracteres en lugar de etiquetas mutables (ej.: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1) para protegerse contra ataques a la cadena de suministro.

Configure grupos de concurrencia con

Configure grupos de concurrencia con 'cancel-in-progress: true' para detener automáticamente las compilaciones de pruebas obsoletas cuando se suben nuevos cambios a la misma rama.

Declare 'permissions

Declare 'permissions: {}' a nivel global para denegar todo acceso por defecto y habilite explícitamente solo los alcances requeridos (como contents: read o pull-requests: write) dentro de cada trabajo.

Utilice los parámetros de caché

Utilice los parámetros de caché integrados en acciones oficiales (como 'cache: npm' en setup-node o 'cache: pip' en setup-python) en lugar de crear pasos de caché manuales.

Errores comunes y solución de problemas

El proceso finaliza con código de error exit code 1 por secretos ausentes o variables de entorno vacías

Compruebe los secretos en Settings > Secrets and variables > Actions. Por seguridad, los flujos activados desde bifurcaciones (forks) no heredan secretos de forma predeterminada.

Error HTTP 403 (Resource not accessible by integration) al publicar versiones o artefactos

Añada un bloque de permisos explícito en el trabajo con acceso de escritura: 'permissions: { contents: write, packages: write }'. En repositorios recientes, GITHUB_TOKEN es de solo lectura por defecto.

El flujo de trabajo no se activa con eventos cron programados ni con subidas de etiquetas

Asegúrese de que el archivo YAML esté confirmado en la rama predeterminada del repositorio (main o master). GitHub Actions evalúa los eventos cron programados únicamente en la rama principal.

Preguntas frecuentes (FAQ)

¿Cuál es la diferencia fundamental entre jobs (trabajos) y steps (pasos)?▼

Un trabajo se ejecuta en una máquina virtual o contenedor aislado y se ejecuta en paralelo por defecto (salvo dependencias con 'needs'). Los pasos se ejecutan de manera secuencial dentro del mismo ejecutor, compartiendo el sistema de archivos local y variables de entorno.

¿Por qué se recomienda fijar las acciones con SHA de commit en lugar de etiquetas de versión?▼

Las etiquetas como @v4 son referencias mutables. Si el repositorio o cuenta del desarrollador original se ve comprometido, podría inyectarse código malicioso. Fijar el SHA garantiza la inmutabilidad y la ejecución del código exacto auditado.

¿Cómo funciona workflow_dispatch para ejecuciones manuales y parametrizadas?▼

Al declarar 'workflow_dispatch:' bajo 'on:', aparece el botón 'Run workflow' en la interfaz de GitHub. Permite definir entradas personalizadas (valores booleanos, cadenas de texto o menús desplegables) accesibles como '${{ inputs.nombre }}'.

¿Cómo se pueden optimizar los tiempos de ejecución y ahorrar minutos de runner?▼

Implemente caché de dependencias, utilice matrices de compilación con fail-fast, cancele ejecuciones obsoletas con concurrency y limite los desencadenadores mediante filtros de rutas (paths / paths-ignore).

Herramientas y utilidades relacionadas

Todas las herramientas →
Generador de Configuraciones Linux Logrotate (Retención y Compresión)Desarrollo

Genere archivos de configuración para /etc/logrotate.d/ listos para producción con rotación diaria/semanal, compresión gzip, dateext, límites de tamaño y scripts postrotate.

Abrir herramienta→
Guía de Desarrollo del Generador de Configuración YAML de Ubuntu NetplanDesarrollo

Genere configuraciones netplan YAML para Ubuntu 20.04/22.04/24.04: IPs estáticas, DHCP, servidores DNS, rutas de puerta de enlace, bridges y bonds.

Abrir herramienta→
Guía de Desarrollo: Generador de Modelos Python SQLAlchemy 2.0 desde SQL DDLDesarrollo

Convierta sentencias SQL CREATE TABLE en modelos fuertemente tipados de Python SQLAlchemy 2.0 DeclarativeBase con anotaciones Mapped y mapped_column.

Abrir herramienta→
Guía para Desarrolladores: Generador de Modelos Struct GORM para Golang desde SQL DDLDesarrollo

Convierta esquemas SQL CREATE TABLE en definiciones de estructuras struct de Golang con etiquetas GORM, etiquetas JSON y tipos Go fuertemente tipados.

Abrir herramienta→
Guía de Desarrollo: Generador de Modelos Sequelize TypeScript desde SQL DDLDesarrollo

Referencia técnica para desarrolladores sobre la conversión de DDL SQL CREATE TABLE en modelos tipados Sequelize TypeScript, definiciones DataTypes, atributos CreationOptional y declaraciones Model.init.

Abrir herramienta→
Json To Elixir Ecto Referencia para DesarrolladoresDesarrollo

Guía técnica y de configuración arquitectónica para compilar cargas JSON en esquemas Elixir Ecto de producción, migraciones, changesets y typespecs de Dialyzer.

Abrir herramienta→