Introduction
Ce guide explique comment créer un workflow d’intégration continue (CI) qui génère et teste du code Node.js. Si vos tests CI réussissent, vous pouvez déployer votre code ou publier un package.
Prérequis
Il est recommandé d’avoir une compréhension de base du Node.js, du YAML, des options de configuration de workflows et de la création de fichiers de workflow. Pour plus d’informations, consultez l’article suivant :
- AUTOTITRE
- « Bien démarrer avec Node.js »
Utilisation d’un modèle de workflow Node.js
Pour démarrer rapidement, ajoutez un modèle de workflow au répertoire .github/workflows de votre référentiel.
GitHub fournit un modèle de workflow pour Node.js qui devrait fonctionner pour la plupart des projets Node.js. Les sections suivantes de ce guide donnent des exemples de la manière dont vous pouvez personnaliser ce modèle de workflow.
-
Sur GitHub, accédez à la page principale du référentiel.
-
Sous le nom de votre référentiel, cliquez sur Actions.

-
Si vous disposez déjà d’un workflow dans votre dépôt, cliquez sur Nouveau workflow.
-
La page « Choisir un workflow » présente une sélection de modèles de workflow recommandés. Recherchez « Node.js ».
-
Filtrez la sélection des flux de travail en cliquant sur Intégration continue.
-
Dans le flux de travail « Node.js », cliquez sur Configurer.
-
Modifiez le workflow en fonction des besoins. Par exemple, changez les versions de Node que vous voulez utiliser.
-
Cliquez sur Valider les changements.
Le fichier de workflow est ajouté au répertoire de votre dépôt.
Spécification de la version de Node.js
Le moyen le plus simple de spécifier une version Node.js consiste à utiliser l’action fournie par GitHub. Pour plus d’informations, consultez .
L’action prend une version Node.js en tant qu’entrée et configure cette version sur l’exécuteur. L’action recherche une version spécifique de Node.js dans le cache d’outils de chaque exécuteur et ajoute les fichiers binaires nécessaires à , qui est conservé pour la suite du travail. L’action est recommandée pour utiliser Node.js avec GitHub Actions, car cela garantit un comportement cohérent sur tous les exécuteurs et toutes les versions de Node.js. Si vous utilisez un exécuteur auto-hébergé, vous devez installer Node.js et l’ajouter à .
Le modèle de workflow comprend une stratégie de matrice qui permet de générer et de tester votre code avec les versions de Node.js répertoriées dans . Le « x » dans le numéro de version est un caractère générique qui correspond à la dernière version mineure et corrective disponible d’une version donnée. Chaque version de Node.js spécifiée dans le tableau crée un travail qui exécute les mêmes étapes.
Chaque travail peut accéder à la valeur définie dans le tableau matriciel à l’aide du contexte . L’action utilise le contexte comme entrée . L’action configure chaque travail avec une version de Node.js différente avant de générer et de tester le code. Pour plus d’informations sur les stratégies de matrice et les contextes, consultez AUTOTITLE et AUTOTITLE.
strategy:
matrix:
node-version: ['18.x', '20.x']
steps:
- uses: actions/checkout@v5
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
strategy:
matrix:
node-version: ['18.x', '20.x']
steps:
- uses: actions/checkout@v5
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
Vous pouvez également créer et tester du code avec des versions exactes de Node.js.
strategy:
matrix:
node-version: ['10.17.0', '17.9.0']
strategy:
matrix:
node-version: ['10.17.0', '17.9.0']
Enfin, vous pouvez générer et tester du code à l’aide d’une seule version de Node.js.
name: Node.js CI
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- name: Use Node.js
uses: actions/setup-node@v4
with:
node-version: '20.x'
- run: npm ci
- run: npm run build --if-present
- run: npm test
name: Node.js CI
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- name: Use Node.js
uses: actions/setup-node@v4
with:
node-version: '20.x'
- run: npm ci
- run: npm run build --if-present
- run: npm test
Si vous ne spécifiez pas de version Node.js, GitHub utilise la version par défaut de l’environnement Node.js. Pour plus d’informations, consultez « AUTOTITLE ».
Installer les dépendances
Des gestionnaires de dépendances npm et Yarn sont installés sur les exécuteurs qui sont hébergés dans GitHub. Vous pouvez utiliser npm et Yarn pour installer des dépendances dans votre workflow avant de générer et de tester votre code. Les exécuteurs Windows et Linux hébergés dans GitHub disposent également de Grunt, Gulp et Bower.
Vous pouvez également mettre en cache vos dépendances pour accélérer vos exécutions de workflow. Pour plus d’informations, consultez « AUTOTITLE ».
Exemple d’utilisation de npm
Cet exemple installe les versions dans le fichier (espace réservé) ou (espace réservé) et bloque toute mise à jour du fichier de verrouillage. L’utilisation de est généralement plus rapide que l’exécution de . Pour davantage d’informations, consultez (espace réservé) ainsi que Présentation de (espace réservé) pour des builds plus rapides et plus fiables.
steps:
- uses: actions/checkout@v5
- name: Use Node.js
uses: actions/setup-node@v4
with:
node-version: '20.x'
- name: Install dependencies
run: npm ci
steps:
- uses: actions/checkout@v5
- name: Use Node.js
uses: actions/setup-node@v4
with:
node-version: '20.x'
- name: Install dependencies
run: npm ci
L'utilisation installe les dépendances définies dans le fichier. Pour plus d’informations, consultez .
steps:
- uses: actions/checkout@v5
- name: Use Node.js
uses: actions/setup-node@v4
with:
node-version: '20.x'
- name: Install dependencies
run: npm install
steps:
- uses: actions/checkout@v5
- name: Use Node.js
uses: actions/setup-node@v4
with:
node-version: '20.x'
- name: Install dependencies
run: npm install
Exemple d’utilisation de Yarn
Cet exemple installe les dépendances définies dans le fichier et empêche les mises à jour du fichier. Pour plus d’informations, consultez .
steps:
- uses: actions/checkout@v5
- name: Use Node.js
uses: actions/setup-node@v4
with:
node-version: '20.x'
- name: Install dependencies
run: yarn --frozen-lockfile
steps:
- uses: actions/checkout@v5
- name: Use Node.js
uses: actions/setup-node@v4
with:
node-version: '20.x'
- name: Install dependencies
run: yarn --frozen-lockfile
Vous pouvez également installer les dépendances définies dans le fichier.
steps:
- uses: actions/checkout@v5
- name: Use Node.js
uses: actions/setup-node@v4
with:
node-version: '20.x'
- name: Install dependencies
run: yarn
steps:
- uses: actions/checkout@v5
- name: Use Node.js
uses: actions/setup-node@v4
with:
node-version: '20.x'
- name: Install dependencies
run: yarn
Exemple d’utilisation d’un registre privé et de création du fichier .npmrc
Vous pouvez utiliser setup-node l’action pour créer un fichier local .npmrc sur l’exécuteur qui configure le registre et la portée par défaut. L’action setup-node accepte également un jeton d’authentification en tant qu’entrée. Celui-ci est utilisé pour accéder à des registres privés ou pour publier des packages de nœuds. Pour plus d’informations, consultez setup-node.
Pour vous authentifier auprès de votre registre privé, vous devez stocker votre jeton d’authentification npm en tant que secret. Par exemple, créez un secret de dépôt appelé . Pour plus d’informations, consultez « AUTOTITLE ».
Dans l’exemple ci-dessous, le secret stocke le jeton d’authentification npm. L’action configure le fichier pour lire le jeton d'authentification npm dans la variable d'environnement. Lors de l'utilisation de l’action pour créer un fichier, vous devez définir l’environnement avec le secret qui contient votre jeton d'authentification npm.
Avant d'installer les dépendances, utilisez l'action pour créer le fichier. L’action a deux paramètres d’entrée. Le paramètre définit la version Node.js, et le paramètre définit le registre par défaut. Si votre registre de paquets utilise des étendues, vous devez utiliser le paramètre. Pour plus d’informations, consultez .
steps:
- uses: actions/checkout@v5
- name: Use Node.js
uses: actions/setup-node@v4
with:
always-auth: true
node-version: '20.x'
registry-url: https://registry.npmjs.org
scope: '@octocat'
- name: Install dependencies
run: npm ci
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
steps:
- uses: actions/checkout@v5
- name: Use Node.js
uses: actions/setup-node@v4
with:
always-auth: true
node-version: '20.x'
registry-url: https://registry.npmjs.org
scope: '@octocat'
- name: Install dependencies
run: npm ci
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
L'exemple ci-dessus crée un fichier avec le contenu suivant :
//registry.npmjs.org/:_authToken=${NODE_AUTH_TOKEN}
@octocat:registry=https://registry.npmjs.org/
always-auth=true
Exemple de mise en cache des dépendances
Vous pouvez mettre en cache et restaurer les dépendances à l’aide de l’action .
L’exemple suivant met en cache les dépendances pour npm.
steps:
- uses: actions/checkout@v5
- uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'
- run: npm install
- run: npm test
steps:
- uses: actions/checkout@v5
- uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'
- run: npm install
- run: npm test
L’exemple suivant met en cache les dépendances pour Yarn.
steps:
- uses: actions/checkout@v5
- uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'yarn'
- run: yarn
- run: yarn test
steps:
- uses: actions/checkout@v5
- uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'yarn'
- run: yarn
- run: yarn test
L’exemple suivant met en cache les dépendances pour pnpm (v6.10+).
# Ce workflow utilise des actions qui ne sont pas certifiées par GitHub.
# Elles sont fournies par un tiers et régies par
# des conditions d’utilisation du service, une politique de confidentialité et un support distincts.
# documentation en ligne.
# NOTE: pnpm caching support requires pnpm version >= 6.10.0
steps:
- uses: actions/checkout@v5
- uses: pnpm/action-setup@0609f0983b7a228f052f81ef4c3d6510cae254ad
with:
version: 6.10.0
- uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'pnpm'
- run: pnpm install
- run: pnpm test
# Ce workflow utilise des actions qui ne sont pas certifiées par GitHub.
# Elles sont fournies par un tiers et régies par
# des conditions d’utilisation du service, une politique de confidentialité et un support distincts.
# documentation en ligne.
# NOTE: pnpm caching support requires pnpm version >= 6.10.0
steps:
- uses: actions/checkout@v5
- uses: pnpm/action-setup@0609f0983b7a228f052f81ef4c3d6510cae254ad
with:
version: 6.10.0
- uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'pnpm'
- run: pnpm install
- run: pnpm test
Si vous avez une exigence particulière ou si vous avez besoin d’un contrôle plus précis pour la mise en cache, vous pouvez utiliser l’action . Pour plus d’informations, consultez « AUTOTITLE ».
Génération et test de votre code
Vous pouvez utiliser les mêmes commandes que celles que vous utilisez localement pour générer et tester votre code. Par exemple, si vous exécutez pour exécuter les étapes de construction définies dans votre fichier et pour exécuter votre suite de tests, vous devez ajouter ces commandes dans votre fichier de flux de travail.
steps:
- uses: actions/checkout@v5
- name: Use Node.js
uses: actions/setup-node@v4
with:
node-version: '20.x'
- run: npm install
- run: npm run build --if-present
- run: npm test
steps:
- uses: actions/checkout@v5
- name: Use Node.js
uses: actions/setup-node@v4
with:
node-version: '20.x'
- run: npm install
- run: npm run build --if-present
- run: npm test
Empaquetage des données de workflow en tant qu’artefacts
Vous pouvez enregistrer les artefacts de vos étapes de génération et de test afin de les examiner une fois le travail terminé. Par exemple, vous devrez peut-être enregistrer des fichiers journaux, des vidages principaux, des résultats de test ou des captures d’écran. Pour plus d’informations, consultez « AUTOTITLE ».
Publication dans des registres de paquets
Vous pouvez configurer votre workflow pour publier votre package Node.js dans un registre de package une fois vos tests CI réussis. Pour plus d’informations sur la publication dans npm et GitHub Packages, consultez « AUTOTITLE ».