Skip to main content

Création et test de code Node.js

DĂ©couvrez comment crĂ©er un flux de travail 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 l’article suivant :

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.

  1. Sur GitHub, accédez à la page principale du référentiel.

  2. Sous le nom de votre dépÎt, cliquez sur Actions.

    Capture d’écran des onglets du rĂ©fĂ©rentiel « github/docs Â». L’onglet « Actions Â» est mis en surbrillance avec un encadrĂ© orange.

  3. Si vous disposez dĂ©jĂ  d’un workflow dans votre dĂ©pĂŽt, cliquez sur Nouveau workflow.

  4. La page « Choisir un workflow Â» prĂ©sente une sĂ©lection de modĂšles de workflow recommandĂ©s. Recherchez « Node.js Â».

  5. Filtrez la sélection des flux de travail en cliquant sur Intégration continue.

  6. Dans le flux de travail « Node.js Â», cliquez sur Configurer.

  7. Modifiez le workflow en fonction des besoins. Par exemple, changez les versions de Node que vous voulez utiliser.

  8. Cliquez sur Valider les changements.

Le fichier de workflow node.js.yml est ajoutĂ© Ă  l’annuaire .github/workflows de votre rĂ©fĂ©rentiel.

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 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 node-version. 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 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 « RĂ©fĂ©rence sur les contextes Â».

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

steps:
- uses: actions/checkout@v4
- 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.

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@v4
      - 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 « ExĂ©cuteurs hĂ©bergĂ©s par GitHub Â».

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 « RĂ©fĂ©rence sur la mise en cache des dĂ©pendances Â».

Exemple d’utilisation de npm

Cet exemple installe les versions dans le package-lock.json ou npm-shrinkwrap.json fichier et empĂȘche les mises Ă  jour du fichier de verrouillage. 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@v4
- name: Use Node.js
  uses: actions/setup-node@v4
  with:
    node-version: '20.x'
- name: Install dependencies
  run: npm ci

L’utilisation de npm install installe les dĂ©pendances dĂ©finies dans le package.json fichier. Pour plus d’informations, consultez npm install.

YAML
steps:
- uses: actions/checkout@v4
- 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 yarn.lock fichier et empĂȘche les mises Ă  jour du yarn.lock fichier. Pour plus d’informations, consultez yarn install.

YAML
steps:
- uses: actions/checkout@v4
- 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 package.json fichier.

YAML
steps:
- uses: actions/checkout@v4
- 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Ă© NPM_TOKEN. Pour plus d’informations, consultez « Utilisation de secrets dans GitHub Actions Â».

Dans l’exemple ci-dessous, le secret NPM_TOKEN stocke le jeton d’authentification npm. L’action setup-node configure le .npmrc fichier pour lire le jeton d'authentification npm dans la NODE_AUTH_TOKEN variable d'environnement. Lors de l'utilisation de setup-node l’action pour crĂ©er un .npmrc fichier, vous devez dĂ©finir NODE_AUTH_TOKEN l’environnement avec le secret qui contient votre jeton d'authentification npm.

Avant d'installer les dĂ©pendances, utilisez l'action setup-node pour crĂ©er le .npmrc fichier. 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@v4
- 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 .npmrc 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 setup-node.

L’exemple suivant met en cache les dĂ©pendances pour npm.

YAML
steps:
- uses: actions/checkout@v4
- 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.

YAML
steps:
- uses: actions/checkout@v4
- 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+).

YAML
# 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@v4
- 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 cache. Pour plus d’informations, consultez « RĂ©fĂ©rence sur la mise en cache des dĂ©pendances Â».

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 les Ă©tapes de construction dĂ©finies dans votre package.json fichier et npm test pour exĂ©cuter votre suite de tests, vous devez ajouter ces commandes dans votre fichier de flux de travail.

YAML
steps:
- uses: actions/checkout@v4
- 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 « Stocker et partager des donnĂ©es avec les artefacts de workflow Â».

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 Â».