Modifier le workflow pour inclure une matrice de stratégie
Le mot-clé strategy est utilisé pour configurer la matrice de construction (build matrix). Nous allons définir une matrice avec une seule clé : node-version.
- Sur la page de votre dépôt GitHub pour
github-actions-demo, cliquez sur le bouton vert Code.
- Assurez-vous que l'onglet HTTPS est sélectionné et copiez l'URL. Elle devrait ressembler à
https://github.com/your-username/github-actions-demo.git.
- Ouvrez le terminal dans l'environnement LabEx. Le chemin par défaut est
~/project.
- Utilisez la commande
git clone pour télécharger le dépôt. Remplacez your-username par votre nom d'utilisateur GitHub réel.
cd ~/project
git clone https://github.com/your-username/github-actions-demo.git
Exemple de sortie :
Cloning into 'github-actions-demo'...
remote: Enumerating objects: X, done.
remote: Counting objects: 100% (X/X), done.
remote: Total X (delta 0), reused 0 (delta 0), pack-reused 0
Receiving objects: 100% (X/X), done.
- Naviguez dans le dépôt cloné :
cd ~/project/github-actions-demo
-
Créez un nouveau fichier de workflow .github/workflows/matrix-build.yml en utilisant l'éditeur WebIDE. Vous pouvez trouver le fichier dans l'explorateur de fichiers sur le côté gauche sous project/github-actions-demo/.github/workflows/.
-
Commencez par créer la structure de workflow de base. Ajoutez le nom du workflow et le déclencheur (trigger) :
name: Matrix Build
on: [push]
- Ajoutez maintenant la section
jobs avec une structure de job de construction de base :
jobs:
build:
runs-on: ubuntu-latest
- Ajoutez la stratégie de matrice (
strategy). C'est la partie clé qui permet d'exécuter le job avec plusieurs versions de Node.js :
strategy:
matrix:
node-version: [18, 20, 22]
Ceci définit une variable de matrice node-version avec trois valeurs. GitHub Actions créera un job séparé pour chaque valeur.
- Ajoutez la section
steps. D'abord, ajoutez l'étape de checkout :
steps:
- uses: actions/checkout@v4
- Ajoutez l'étape de configuration de Node.js. Remarquez comment nous utilisons
${{ matrix.node-version }} pour référencer la valeur actuelle de la matrice :
- name: Use Node.js
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
- Ajoutez l'étape pour installer les dépendances :
- name: Install dependencies
run: npm install
- Ajoutez l'étape de construction qui crée le répertoire d'artefact :
- name: Build project
run: |
mkdir dist
echo "This is the build artifact" > dist/build.txt
- Ajoutez l'étape de test :
- name: Run tests
run: npm test
- Enfin, ajoutez l'étape de téléchargement de l'artefact. Remarquez comment le nom de l'artefact inclut la version de la matrice pour rendre chaque artefact unique :
- name: Upload build artifact
uses: actions/upload-artifact@v4
with:
name: build-assets-${{ matrix.node-version }}
path: dist
Votre fichier complet devrait maintenant ressembler à ceci :
name: Matrix Build
on: [push]
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [18, 20, 22]
steps:
- uses: actions/checkout@v4
- name: Use Node.js
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
- name: Install dependencies
run: npm install
- name: Build project
run: |
mkdir dist
echo "This is the build artifact" > dist/build.txt
- name: Run tests
run: npm test
- name: Upload build artifact
uses: actions/upload-artifact@v4
with:
name: build-assets-${{ matrix.node-version }}
path: dist
Explication
strategy: Définit la stratégie de construction.
matrix: Définit les variables de la matrice.
node-version: C'est un nom de variable que nous avons choisi. Nous lui avons assigné un tableau de valeurs [18, 20, 22]. GitHub Actions exécutera le job build trois fois, une fois pour chaque valeur.
${{ matrix.node-version }}: Cette syntaxe vous permet d'accéder à la valeur actuelle de la matrice dans vos étapes.
Enregistrez le fichier (Ctrl+S ou Cmd+S) après avoir effectué les modifications.