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.
-
Sur GitHub, accédez à la page principale du référentiel.
-
Sous le nom de votre dépÎt, 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 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 ».
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 }}
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.
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@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
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 ».
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
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
.
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
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
.
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
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.
steps: - uses: actions/checkout@v4 - name: Use Node.js uses: actions/setup-node@v4 with: node-version: '20.x' - name: Install dependencies run: yarn
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
.
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 }}
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.
steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: '20' cache: 'npm' - run: npm install - run: npm test
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.
steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: '20' cache: 'yarn' - run: yarn - run: yarn test
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+).
# 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
# 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.
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
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 ».