Workflow anpassen, um die Strategiematrix einzubeziehen
Das Schlüsselwort strategy wird verwendet, um die Build-Matrix zu konfigurieren. Wir definieren eine Matrix mit einem einzigen Schlüssel node-version.
- Klicken Sie auf Ihrer GitHub-Repository-Seite für
github-actions-demo auf die grüne Schaltfläche Code.
- Stellen Sie sicher, dass der Reiter HTTPS ausgewählt ist, und kopieren Sie die URL. Sie sollte wie
https://github.com/your-username/github-actions-demo.git aussehen.
- Öffnen Sie das Terminal in der LabEx-Umgebung. Der Standardpfad ist
~/project.
- Verwenden Sie den Befehl
git clone, um das Repository herunterzuladen. Ersetzen Sie your-username durch Ihren tatsächlichen GitHub-Benutzernamen.
cd ~/project
git clone https://github.com/your-username/github-actions-demo.git
Beispielausgabe:
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.
- Navigieren Sie in das geklonte Repository:
cd ~/project/github-actions-demo
-
Erstellen Sie eine neue Workflow-Datei .github/workflows/matrix-build.yml mithilfe des WebIDE-Editors. Sie finden die Datei im Dateiexplorer auf der linken Seite unter project/github-actions-demo/.github/workflows/.
-
Beginnen Sie mit der Erstellung der grundlegenden Workflow-Struktur. Fügen Sie den Workflow-Namen und den Trigger hinzu:
name: Matrix Build
on: [push]
- Fügen Sie nun den
jobs-Abschnitt mit einer grundlegenden Build-Job-Struktur hinzu:
jobs:
build:
runs-on: ubuntu-latest
- Fügen Sie die Matrix-Strategie hinzu. Dies ist der Schlüsselteil, der es ermöglicht, den Job mit mehreren Node.js-Versionen auszuführen:
strategy:
matrix:
node-version: [18, 20, 22]
Dies definiert eine Matrixvariable node-version mit drei Werten. GitHub Actions erstellt für jeden Wert einen separaten Job.
- Fügen Sie den
steps-Abschnitt hinzu. Fügen Sie zuerst den Checkout-Schritt hinzu:
steps:
- uses: actions/checkout@v4
- Fügen Sie den Node.js-Setup-Schritt hinzu. Beachten Sie, wie wir
${{ matrix.node-version }} verwenden, um auf den aktuellen Matrixwert zu verweisen:
- name: Use Node.js
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
- Fügen Sie den Schritt zum Installieren der Abhängigkeiten hinzu:
- name: Install dependencies
run: npm install
- Fügen Sie den Build-Schritt hinzu, der das Artifact-Verzeichnis erstellt:
- name: Build project
run: |
mkdir dist
echo "This is the build artifact" > dist/build.txt
- Fügen Sie den Testschritt hinzu:
- name: Run tests
run: npm test
- Fügen Sie abschließend den Schritt zum Hochladen des Artifacts hinzu. Beachten Sie, wie der Artifact-Name die Matrixversion enthält, um jedes Artifact eindeutig zu machen:
- name: Upload build artifact
uses: actions/upload-artifact@v4
with:
name: build-assets-${{ matrix.node-version }}
path: dist
Ihre vollständige Datei sollte nun wie folgt aussehen:
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
Erklärung
strategy: Definiert die Build-Strategie.
matrix: Definiert die Matrixvariablen.
node-version: Dies ist ein von uns gewählter Variablenname. Wir haben ihm ein Array von Werten [18, 20, 22] zugewiesen. GitHub Actions wird den Job build dreimal ausführen, einmal für jeden Wert.
${{ matrix.node-version }}: Diese Syntax ermöglicht den Zugriff auf den aktuellen Matrixwert in Ihren Schritten.
Speichern Sie die Datei (Strg+S oder Cmd+S) nach den Änderungen.