Skip to main content
Nous publions des mises à jour fréquentes de notre documentation, et la traduction de cette page peut encore être en cours. Pour obtenir les informations les plus actuelles, consultez la documentation anglaise.
GitHub AE est actuellement en version limitée.

Création et test de code Node.js

Vous pouvez créer un workflow d’intégration continue (CI) pour générer et tester votre projet Node.js.

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 les pages suivantes :

Utilisation du workflow de démarrage Node.js

GitHub fournit un workflow de démarrage Node.js qui fonctionnera pour la plupart des projets Node.js. Ce guide inclut des exemples npm et Yarn que vous pouvez utiliser pour personnaliser le workflow de démarrage. Pour plus d’informations, consultez le Workflow de démarrage Node.js.

Pour commencer rapidement, ajoutez le workflow de démarrage au répertoire .github/workflows de votre dépôt. Le workflow indiqué ci-dessous suppose que la branche par défaut de votre dépôt est main.

YAML
name: Node.js CI

on:
  push:
    branches: [ main ]
  pull_request:
    branches: [ main ]

jobs:
  build:

    runs-on: ubuntu-latest

    strategy:
      matrix:
        node-version: [14.x, 16.x, 18.x, 20.x]

    steps:
      - uses: actions/checkout@v3
      - name: Use Node.js ${{ matrix.node-version }}
        uses: actions/setup-node@v3
        with:
          node-version: ${{ matrix.node-version }}
      - run: npm ci
      - run: npm run build --if-present
      - run: npm test

Exécution sur un autre système d’exploitation

Le workflow de démarrage configure les travaux à exécuter sur Linux, à l’aide d’exécuteurs ubuntu-latest hébergés par GitHub. Vous pouvez modifier la clé runs-on pour exécuter vos travaux sur un autre système d’exploitation. Par exemple, vous pouvez utiliser des exécuteurs Windows hébergés par GitHub.

runs-on: windows-latest

Vous pouvez également exécuter sur les exécuteurs de données macOS hébergés par GitHub.

runs-on: macos-latest

Vous pouvez également exécuter des travaux dans des conteneurs Docker, ou vous pouvez fournir un exécuteur auto-hébergé qui s’exécute sur votre propre infrastructure. Pour plus d’informations, consultez « Workflow syntax for GitHub Actions ».

Spécification de la version de Node.js

Le moyen le plus simple de spécifier une version Node.js consiste à utiliser l’action setup-node fournie par GitHub. Pour plus d’informations, consultez setup-node.

L’action setup-node prend une version Node.js en tant qu’entrée et configure cette version sur l’exécuteur. L’action setup-node recherche une version spécifique de Node.js dans le cache d’outils de chaque exécuteur et ajoute les fichiers binaires nécessaires à PATH, qui est conservé pour la suite du travail. L’action setup-node 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 à PATH.

Le workflow de démarrage inclut une stratégie de matrice qui génère et teste votre code avec quatre versions de Node.js : 14.x, 16.x, 18.x et 20.x. « x » 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 node-version crée un travail qui exécute les mêmes étapes.

Chaque travail peut accéder à la valeur définie dans le tableau matriciel node-version à l’aide du contexte matrix. L’action setup-node utilise le contexte comme entrée node-version. L’action setup-node 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 « Workflow syntax for GitHub Actions » et « Contextes ».

YAML
strategy:
  matrix:
    node-version: [14.x, 16.x, 18.x, 20.x]

steps:
- uses: actions/checkout@v3
- name: Use Node.js ${{ matrix.node-version }}
  uses: actions/setup-node@v3
  with:
    node-version: ${{ matrix.node-version }}

Vous pouvez également créer et tester du code avec des versions exactes de Node.js.

YAML
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.

YAML
name: Node.js CI

on: [push]

jobs:
  build:

    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v3
      - name: Use Node.js
        uses: actions/setup-node@v3
        with:
          node-version: '18.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. Vous devez installer les logiciels nécessaires sur vos exécuteurs autohébergés. Pour plus d’informations sur les exécuteurs autohébergés, consultez « Hébergement de vos propres exécuteurs ».

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.

Exemple d’utilisation de npm

Cet exemple installe les dépendances définies dans le fichier package.json. Pour plus d’informations, consultez npm install.

YAML
steps:
- uses: actions/checkout@v3
- name: Use Node.js
  uses: actions/setup-node@v3
  with:
    node-version: '18.x'
- name: Install dependencies
  run: npm install

L’utilisation de npm ci installe les versions dans le fichier package-lock.json ou npm-shrinkwrap.json, et empêche les mises à jour du fichier verrouillé. L’utilisation de npm ci est généralement plus rapide que l’exécution de npm install. Pour plus d’informations, consultez npm ci et « Présentation de npm ci pour des builds plus rapides et plus fiables ».

YAML
steps:
- uses: actions/checkout@v3
- name: Use Node.js
  uses: actions/setup-node@v3
  with:
    node-version: '18.x'
- name: Install dependencies
  run: npm ci

Exemple d’utilisation de Yarn

Cet exemple installe les dépendances définies dans le fichier package.json. Pour plus d’informations, consultez yarn install.

YAML
steps:
- uses: actions/checkout@v3
- name: Use Node.js
  uses: actions/setup-node@v3
  with:
    node-version: '18.x'
- name: Install dependencies
  run: yarn

Vous pouvez également passer --frozen-lockfile pour installer les versions dans le fichier yarn.lock et empêcher les mises à jour du fichier yarn.lock.

YAML
steps:
- uses: actions/checkout@v3
- name: Use Node.js
  uses: actions/setup-node@v3
  with:
    node-version: '18.x'
- name: Install dependencies
  run: yarn --frozen-lockfile

Exemple d’utilisation d’un registre privé et de création du fichier .npmrc

Vous pouvez utiliser l’action setup-node pour créer un fichier .npmrc local sur l’exécuteur, qui configure le registre et l’étendue 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é NPM_TOKEN. Pour plus d’informations, consultez « Secrets chiffrés ».

Dans l’exemple ci-dessous, le secret NPM_TOKEN stocke le jeton d’authentification npm. L’action setup-node configure le fichier  .npmrc pour lire le jeton d’authentification npm à partir de la variable d’environnement NODE_AUTH_TOKEN. Lorsque vous utilisez l’action setup-node pour créer un fichier  .npmrc, vous devez définir la variable d’environnement avec le secret NODE_AUTH_TOKEN qui contient votre jeton d’authentification npm.

Avant d’installer des dépendances, utilisez l’action setup-node pour créer le fichier  .npmrc. L’action a deux paramètres d’entrée. Le paramètre node-version définit la version Node.js, et le paramètre registry-url définit le registre par défaut. Si votre registre de package utilise des étendues, vous devez utiliser le paramètre scope. Pour plus d’informations, consultez npm-scope.

YAML
steps:
- uses: actions/checkout@v3
- name: Use Node.js
  uses: actions/setup-node@v3
  with:
    always-auth: true
    node-version: '18.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  .npmrc avec le contenu suivant :

//registry.npmjs.org/:_authToken=${NODE_AUTH_TOKEN}
@octocat:registry=https://registry.npmjs.org/
always-auth=true

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 npm run build pour exécuter des étapes de génération définies dans votre fichier package.json, et npm test pour exécuter votre suite de tests, vous devez ajouter ces commandes dans votre fichier de workflow.

YAML
steps:
- uses: actions/checkout@v3
- name: Use Node.js
  uses: actions/setup-node@v3
  with:
    node-version: '18.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 « Stockage des données de workflow en tant qu’artefacts ».

Publication dans des registres de package

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 « Publication de packages Node.js ».