Générations matricielles pour plusieurs environnements
Utilisez des stratégies matricielles pour exécuter en parallèle des tâches sur plusieurs versions de langages, systèmes d’exploitation ou configurations.
Générations matricielles pour plusieurs environnements est une leçon CI/CD with GitHub Actions & DevOps Pipelines gratuite sur CoddyKit. Ceci est la leçon 1 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage CI/CD with GitHub Actions & DevOps Pipelines, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours CI/CD with GitHub Actions & DevOps Pipelines comprend 4 leçons au total.
Que sont les exécutions en matrice ?
Découvrez une fonctionnalité puissante de GitHub Actions : les exécutions en matrice ! Imaginez que vous deviez tester votre code dans de nombreux environnements différents, comme plusieurs systèmes d’exploitation ou versions de langages de programmation.
Au lieu de créer un flux de travail distinct pour chaque combinaison, les exécutions en matrice vous permettent de définir un ensemble de variables. GitHub Actions exécute alors automatiquement vos tâches pour chaque combinaison possible de ces variables.
Pourquoi utiliser les exécutions en matrice ?
Les exécutions en matrice sont particulièrement utiles pour :
- Tests multiplateformes : vérifier que votre application fonctionne sous Windows, macOS et Linux.
- Compatibilité multiversion : effectuer des tests avec différentes versions de Node.js, de Python ou de votre base de données.
- Exécution en parallèle : exécuter tous ces tests simultanément afin de gagner beaucoup de temps.
Elles vous aident à obtenir efficacement une couverture de test plus étendue.
Syntaxe de base des matrices
Vous définissez une matrice dans la section strategy d’une tâche. Dans strategy.matrix, vous répertoriez une ou plusieurs variables, chacune contenant un tableau de valeurs.
GitHub Actions crée ensuite une tâche pour chaque combinaison. Voyons à quoi cela ressemble :
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [14, 16, 18]
steps:
- uses: actions/checkout@v3
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node-version }}
- name: Install dependencies
run: npm ci
- name: Run tests
run: npm testExemple : plusieurs versions de Node.js
Dans l’extrait précédent, nous avons défini une variable node-version avec trois valeurs : 14, 16 et 18.
Cette définition d’une seule tâche déclenchera trois tâches distinctes, chacune s’exécutant sur ubuntu-latest, mais utilisant une version différente de Node.js. Cela garantit que votre projet fonctionne avec chacune de ces versions.
Combinaison de plusieurs variables de matrice
Vous n’êtes pas limité à une seule variable ! Vous pouvez combiner plusieurs variables dans votre matrice. Par exemple, vous pouvez vouloir tester différents systèmes d’exploitation avec différentes versions de Node.js.
Il suffit d’ajouter d’autres paires clé-valeur sous strategy.matrix. Le nombre total de tâches correspond au produit du nombre de valeurs de chaque variable.
Exemple : matrice de systèmes d’exploitation et de Node.js
Voici comment configurer une matrice pour effectuer des tests à la fois sur Ubuntu et Windows, avec les versions 16 et 18 de Node.js.
Cette configuration créera 2 (OS) * 2 (versions de Node.js) = 4 tâches distinctes.
jobs:
build:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, windows-latest]
node-version: [16, 18]
steps:
- uses: actions/checkout@v3
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node-version }}
- name: Install dependencies
run: npm ci
- name: Run tests
run: npm testPersonnalisation des combinaisons avec l’inclusion
Vous aurez parfois besoin de combinaisons spécifiques qui ne sont pas couvertes par le produit cartésien par défaut, ou vous voudrez ajouter des variables supplémentaires à certaines compilations. Utilisez include pour ajouter de nouvelles entrées à la matrice.
Par exemple, vous pouvez vouloir exécuter un test supplémentaire uniquement sur Ubuntu avec Node.js 14, ou transmettre une variable d’environnement spécifique à une combinaison donnée de système d’exploitation et de version.
jobs:
build:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, windows-latest]
node-version: [16, 18]
include:
- os: ubuntu-latest
node-version: 14
test-suite: 'full'Exclusion de combinaisons spécifiques
Que faire si une combinaison est connue pour échouer ou n’est pas pertinente pour votre projet ? Le mot-clé exclude vous permet de supprimer des configurations spécifiques de votre matrice.
Cela vous aide à éviter les exécutions de tâches inutiles et à vous concentrer sur les cas de test pertinents.
jobs:
build:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, windows-latest]
node-version: [16, 18, 20]
exclude:
- os: windows-latest
node-version: 16Accéder aux variables de la matrice
Dans les étapes de votre tâche, vous pouvez accéder aux valeurs actuelles des variables de la matrice à l’aide de la syntaxe ${{ matrix.variable_name }}. Cette possibilité est essentielle pour configurer des outils ou exécuter des commandes propres à chaque combinaison de la matrice.
Par exemple, ${{ matrix.os }} définit dynamiquement le système d’exploitation de l’exécuteur, tandis que ${{ matrix.node-version }} configure l’action de configuration de Node.js.
Applications pratiques
Les exécutions en matrice sont particulièrement utiles pour :
- Développement de bibliothèques : effectuer des tests avec plusieurs versions d’une dépendance.
- Projets multilingues : compiler et tester des composants écrits dans différents langages ou utilisant différents compilateurs.
- Compatibilité des navigateurs : si vous utilisez un outil qui le permet, tester des applications web sur différents navigateurs.
Elles transforment des scénarios de test complexes en flux de travail concis et faciles à maintenir.
Défi : exécutions en matrice
Considérez un flux de travail GitHub Actions qui utilise une stratégie matricielle. La matrice est définie comme suit :
strategy:
matrix:
os: [ubuntu-latest, macos-latest]
python-version: [3.8, 3.9]
exclude:
- os: macos-latest
python-version: 3.8
Combien de tâches cette configuration matricielle créera-t-elle ?
Récapitulatif : exécutions en matrice
Excellent travail ! Vous avez découvert les exécutions en matrice de GitHub Actions.
- Elles vous permettent d’exécuter des tâches pour plusieurs combinaisons de variables (OS, versions de langages, etc.).
- Elles sont définies à l’aide de
strategy.matrixdans une tâche. includeajoute des combinaisons spécifiques, tandis queexcludeles supprime.- Les variables sont accessibles via
${{ matrix.variable_name }}.
Les exécutions en matrice sont essentielles pour effectuer efficacement des tests complets dans des environnements variés. Continuez à vous exercer pour les maîtriser !
Questions Fréquemment Posées
La leçon « Générations matricielles pour plusieurs environnements » est-elle gratuite ?
Oui — le texte complet de « Générations matricielles pour plusieurs environnements » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours CI/CD with GitHub Actions & DevOps Pipelines, passe à CoddyKit PRO. Le cours CI/CD with GitHub Actions & DevOps Pipelines comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Générations matricielles pour plusieurs environnements » ?
Utilisez des stratégies matricielles pour exécuter en parallèle des tâches sur plusieurs versions de langages, systèmes d’exploitation ou configurations. Tu pratiques CI/CD with GitHub Actions & DevOps Pipelines avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer CI/CD with GitHub Actions & DevOps Pipelines ?
Aucune expérience préalable n'est requise. CI/CD with GitHub Actions & DevOps Pipelines sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 4.
Combien de temps prend la leçon « Générations matricielles pour plusieurs environnements » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon CI/CD with GitHub Actions & DevOps Pipelines ?
Oui. Chaque leçon CI/CD with GitHub Actions & DevOps Pipelines inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Générations matricielles pour plusieurs environnements
- Mise en cache des dépendances pour accélérer l’exécution
- Flux de travail et actions réutilisables
- Exécution conditionnelle et dépendances entre tâches