GitHub Actions
GitHub Actions Automation & DevOps CI/CD

Générateur de Pipeline YAML pour GitHub Actions CI/CD

Créez des pipelines YAML GitHub Actions prêts pour la production pour Node.js, Go, Python, conteneurs Docker, tests unitaires et déploiements automatisés.

100% Côté Client
Zéro transmission au serveur
Préréglages :
Déclencheurs & Branches
Déclencheurs Actifs :
Environnement & Matrice
Étapes de Build, Test & Cache
Sécurité, Secrets & Concurrence
.github/workflows/nodejs-ci.yml Syntaxe Vérifiée (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 }}
Environnement Cible
NODE • ubuntu
Étapes du Pipeline
9 Étapes • ~5.2m exécution
Score de Sécurité
100/100 • Moindre Privilège

Génération Locale sans Latence

Concevez des workflows GitHub Actions sécurisés directement dans la mémoire de votre navigateur sans exposer vos dépôts.

Sécurité & Durcissement d'Entreprise

Applique le principe du moindre privilège pour GITHUB_TOKEN, annulation des runs concurrents, timeouts et épinglage des versions d'actions.

Support Multi-Langage & Matrices de Test

Modèles d'intégration continue taillés pour Node.js, Python, Go, Rust, Docker et GitHub Pages avec mise en cache automatisée.

Référence technique et guide d'architecture

Guide de développement pour le générateur de workflows YAML GitHub Actions CI/CD — Guide de référence

Créez des pipelines YAML GitHub Actions prêts pour la production pour Node.js, Go, Python, conteneurs Docker, tests unitaires et déploiements automatisés.

Paramètres clés et contrôles

namestring

Identifiant du workflow affiché dans les onglets GitHub Actions, les badges de statut et les vérifications de pull request.

Par défaut : CI / CD Pipeline
onstring | object

Définit les événements webhook déclencheurs : push, pull_request, planification cron ou déclenchement manuel workflow_dispatch.

Par défaut : push, pull_request
runs-onstring | array

Spécifie le système d'exploitation du runner virtuel (ubuntu-latest, macos-latest, windows-latest) ou les labels auto-hébergés.

Par défaut : ubuntu-latest
permissionsobject | string

Configure les permissions de moindre privilège accordées au GITHUB_TOKEN éphémère (ex. contents: read, packages: write).

Par défaut : contents: read
concurrencyobject | string

Empêche les exécutions concurrentes redondantes sur la même branche ou PR ; cancel-in-progress annule les builds obsolètes pour économiser des minutes.

Par défaut : group: ${{ github.ref }}, cancel-in-progress: true

Conseils de pro et bonnes practices

Référencez les actions via leur SHA de

Référencez les actions via leur SHA de commit complet à 40 caractères plutôt qu'un tag de version mutable (ex. actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1) pour prévenir les attaques de supply chain.

Configurez des groupes de concurrence

Configurez des groupes de concurrence avec 'cancel-in-progress: true' pour interrompre automatiquement les tests obsolètes lorsqu'un développeur pousse de nouveaux commits sur la même branche.

Déclarez 'permissions

Déclarez 'permissions: {}' au niveau racine pour bloquer tous les accès par défaut, puis n'accordez explicitement que les droits requis (comme contents: read ou pull-requests: write) dans chaque job.

Activez les options de cache intégrées

Activez les options de cache intégrées des actions officielles (comme 'cache: npm' dans setup-node ou 'cache: pip' dans setup-python) au lieu de configurer manuellement des étapes de cache complexes.

Pièges courants et dépannage

Le processus échoue avec l'erreur exit code 1 à cause d'un secret manquant ou d'une variable vide

Vérifiez les secrets dans Settings > Secrets and variables > Actions. Pour des raisons de sécurité, les pull requests issues de forks n'ont pas accès aux secrets du dépôt cible par défaut.

Erreur HTTP 403 (Resource not accessible by integration) lors de la création d'une release ou publication

Ajoutez un bloc de permissions explicite dans le job avec les accès en écriture : 'permissions: { contents: write, packages: write }'. Par défaut, GITHUB_TOKEN est en lecture seule.

Le workflow ne se déclenche pas sur les événements cron planifiés ou les tags

Assurez-vous que le fichier YAML du workflow est fusionné dans la branche par défaut (main ou master). GitHub Actions n'évalue les planifications cron que sur la branche par défaut.

Foire aux questions (FAQ)

Quelle est la différence fondamentale entre les jobs et les steps dans GitHub Actions ?▼

Un job s'exécute sur une machine virtuelle ou un conteneur isolé et tourne en parallèle par défaut (sauf dépendance avec 'needs'). Les steps s'exécutent séquentiellement au sein d'un même runner en partageant le système de fichiers local et l'environnement.

Pourquoi l'épinglage des actions par SHA de commit est-il essentiel pour la sécurité ?▼

Les tags comme @v4 sont des références Git mutables. En cas de compromission du compte du mainteneur ou du dépôt source, du code malveillant peut être injecté sous ce tag. Le SHA garantit l'exécution stricte du code audité.

Comment fonctionne workflow_dispatch pour les lancements manuels et paramétrés ?▼

L'ajout de 'workflow_dispatch:' sous 'on:' fait apparaître le bouton 'Run workflow' dans l'interface GitHub. Vous pouvez définir des paramètres typés (booléens, chaînes de caractères, menus déroulants) accessibles via '${{ inputs.nom_du_paramètre }}'.

Comment optimiser la durée d'exécution du pipeline et économiser les minutes de runner ?▼

Utilisez le cache de dépendances, configurez la concurrence avec cancel-in-progress, répartissez les suites de tests grâce aux matrices d'exécution et limitez les déclencheurs avec 'paths' ou 'paths-ignore'.

Outils et utilitaires connexes

Tous les outils →
Générateur de Configuration Linux Logrotate (Rétention & Compression)Développement

Générez des fichiers de configuration /etc/logrotate.d/ prêts pour la production avec rotation quotidienne/hebdomadaire, compression gzip, dateext, limites de taille et scripts postrotate.

Ouvrir l'outil→
Guide Développeur du Générateur de Configuration YAML Ubuntu NetplanDéveloppement

Générez des configurations YAML Netplan pour Ubuntu 20.04/22.04/24.04 : adresses IP statiques, DHCP, résolveurs DNS, passerelles, ponts et agrégations de liens.

Ouvrir l'outil→
Guide Développeur : Générateur de Modèles Python SQLAlchemy 2.0 depuis SQL DDLDéveloppement

Convertissez vos instructions SQL CREATE TABLE en modèles Python SQLAlchemy 2.0 DeclarativeBase fortement typés avec les annotations Mapped et mapped_column.

Ouvrir l'outil→
Guide Développeur : Générateur de Modèles Struct Golang GORM depuis SQL DDLDéveloppement

Convertissez vos schémas SQL CREATE TABLE en définitions de structures (struct) Golang avec balises GORM, balises JSON et typage Go précis.

Ouvrir l'outil→
Guide Développeur : Générateur de Modèles Sequelize TypeScript depuis SQL DDLDéveloppement

Guide technique complet pour convertir les instructions SQL CREATE TABLE DDL en modèles typés Sequelize TypeScript, définitions DataTypes, attributs CreationOptional et déclarations Model.init.

Ouvrir l'outil→
Json To Elixir Ecto Référence DéveloppeurDéveloppement

Guide architectural et référence de configuration pour compiler des données JSON brutes en schémas Elixir Ecto de production, migrations, changesets et typespecs Dialyzer.

Ouvrir l'outil→