GitHub Actions: Grundlegender Build und Test

GitBeginner
Jetzt üben

Einführung

In der modernen Softwareentwicklung ist Continuous Integration (CI) eine entscheidende Praxis, bei der Entwickler ihre Codeänderungen häufig in ein zentrales Repository zusammenführen. Automatisierte Builds und Tests werden ausgeführt, um diese Änderungen zu überprüfen.

GitHub Actions ist eine beliebte CI/CD-Plattform, mit der Sie Ihre Build-, Test- und Bereitstellungspipeline direkt in GitHub automatisieren können.

In diesem Lab lernen Sie, wie Sie einen grundlegenden GitHub Actions Workflow für ein Node.js-Projekt erstellen. Sie werden Schritte definieren, um die Node.js-Umgebung einzurichten, Abhängigkeiten zu installieren und Tests auszuführen. Abschließend werden Sie diese Änderungen in Ihr GitHub-Repository committen und pushen.

Dieses Lab baut auf dem Repository auf, das Sie in den vorherigen Labs erstellt haben. Sie werden das Repository github-actions-demo klonen und einen CI-Workflow für ein Node.js-Projekt erstellen.

Am Ende dieses Labs werden Sie die Struktur einer .yml Workflow-Datei verstehen und wissen, wie man wesentliche CI-Schritte konfiguriert.

Node.js-Setup mit uses actions/setup-node@v4 hinzufügen

In diesem Schritt klonen Sie das Repository und erstellen eine Workflow-Datei mit Node.js-Umgebungseinrichtung. GitHub Actions Workflows werden in YAML-Dateien definiert, die sich im Verzeichnis .github/workflows Ihres Repositorys befinden.

  1. Klicken Sie auf Ihrer GitHub-Repository-Seite für github-actions-demo auf die grüne Schaltfläche Code.
  2. Stellen Sie sicher, dass der Reiter HTTPS ausgewählt ist, und kopieren Sie die URL. Sie sollte etwa so aussehen: https://github.com/your-username/github-actions-demo.git.
  3. Öffnen Sie das Terminal in der LabEx-Umgebung. Der Standardpfad ist ~/project.
  4. 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
  1. Navigieren Sie in das geklonte Repository:
cd ~/project/github-actions-demo
  1. Erstellen Sie eine neue Datei namens node-ci.yml im Verzeichnis .github/workflows:
touch .github/workflows/node-ci.yml
  1. Öffnen Sie .github/workflows/node-ci.yml im WebIDE und beginnen Sie mit dem Hinzufügen des Workflow-Namens und des Triggers:
name: Node.js CI

on: [push]
  1. Fügen Sie den jobs-Abschnitt hinzu und definieren Sie den build-Job mit seinem Runner:
jobs:
  build:
    runs-on: ubuntu-latest
  1. Fügen Sie den steps-Abschnitt hinzu. Fügen Sie zuerst den Checkout-Schritt hinzu, um den Repository-Code abzurufen:
steps:
  - uses: actions/checkout@v4
  1. Fügen Sie den Node.js-Setup-Schritt hinzu:
- name: Use Node.js
  uses: actions/setup-node@v4
  with:
    node-version: "20"

Ihre vollständige Datei sollte nun wie folgt aussehen:

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"

Erklärung

  • name: Der Name Ihres Workflows.
  • on: [push]: Löst den Workflow aus, wann immer Code in das Repository gepusht wird.
  • jobs: Gruppiert alle Aufgaben, die im Workflow ausgeführt werden.
  • runs-on: ubuntu-latest: Konfiguriert den Job so, dass er auf einer von GitHub gehosteten virtuellen Maschine mit der neuesten Ubuntu-Version läuft.
  • steps: Eine Abfolge von Aufgaben.
  • uses: actions/checkout@v4: Checkt Ihr Repository aus, damit der Workflow darauf zugreifen kann.
  • uses: actions/setup-node@v4: Dies ist die offizielle Action zur Installation von Node.js auf dem Runner. Wir geben die Version '20' an.

Schritt zum Installieren der Abhängigkeiten mit run npm install hinzufügen

Nachdem die Umgebung mit Node.js eingerichtet ist, besteht der nächste logische Schritt in einer CI-Pipeline (Continuous Integration) darin, die Abhängigkeiten des Projekts zu installieren. Dies stellt sicher, dass alle externen Bibliotheken, die Ihre Anwendung benötigt, verfügbar sind, bevor mit dem Bauen oder Testen begonnen wird.

Öffnen Sie erneut .github/workflows/node-ci.yml und fügen Sie den Schritt zur Installation der Abhängigkeiten hinzu.

Fügen Sie die folgenden Zeilen am Ende des steps-Abschnitts hinzu (achten Sie auf die korrekte Einrückung):

- name: Install dependencies
  run: npm install

Ihre vollständige .github/workflows/node-ci.yml sollte nun wie folgt aussehen:

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"
      - name: Install dependencies
        run: npm install

Erklärung

  • run: npm install: Dieser Befehl führt npm install in der Shell des Runners aus. Er liest die package.json-Datei (die wir später erstellen werden) und installiert die aufgeführten Abhängigkeiten.

Schritt zum Ausführen der Tests mit run npm test hinzufügen

Nach der Installation der Abhängigkeiten ist das Ausführen automatisierter Tests der kritischste Teil der Continuous Integration (CI). Dies stellt sicher, dass neue Änderungen die bestehende Funktionalität nicht beeinträchtigen.

Öffnen Sie .github/workflows/node-ci.yml und fügen Sie den Schritt zum Ausführen der Tests hinzu.

Fügen Sie die folgenden Zeilen am Ende des steps-Abschnitts hinzu:

- name: Run tests
  run: npm test

Ihre endgültige .github/workflows/node-ci.yml sollte wie folgt aussehen:

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"
      - name: Install dependencies
        run: npm install
      - name: Run tests
        run: npm test

Erläuterung

  • run: npm test: Dies führt das in Ihrer package.json definierte Test-Skript aus. Wenn die Tests fehlschlagen (mit einem von Null verschiedenen Exit-Code beendet werden), wird der GitHub Action Workflow als fehlgeschlagen markiert.

package.json und einfache Testdatei erstellen

Damit der gerade erstellte Workflow tatsächlich funktioniert, benötigen wir eine Node.js-Projektstruktur. Insbesondere benötigt npm install eine package.json-Datei, und npm test benötigt ein definiertes Test-Skript.

  1. Stellen Sie sicher, dass Sie sich im Repository-Verzeichnis befinden:
cd ~/project/github-actions-demo
  1. Erstellen Sie eine package.json-Datei im Stammverzeichnis des Repositorys:
touch package.json
  1. Öffnen Sie package.json und fügen Sie den folgenden Inhalt hinzu. Dies definiert ein Basisprojekt und ein einfaches Test-Skript, das immer erfolgreich ist (mit dem Exit-Code 0 beendet wird).
{
  "name": "github-actions-demo",
  "version": "1.0.0",
  "description": "Demo project",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Running tests...\" && exit 0"
  },
  "keywords": [],
  "author": "",
  "license": "ISC"
}
  1. Als Nächstes aktualisieren wir index.js, um unseren Anwendungscode darzustellen.
echo "console.log('Hello, GitHub Actions!');" > index.js

Nun haben Sie ein minimales Node.js-Projekt, das die Anforderungen des definierten Workflows erfüllt:

  1. npm install wird ausgeführt (obwohl keine Abhängigkeiten vorhanden sind, wird package.json überprüft).
  2. npm test führt den Befehl echo "Running tests..." && exit 0 aus.

Änderungen committen, pushen und Build/Test im Workflow-Lauf verifizieren

Nachdem wir nun die Workflow-Definition und die Projektdateien erstellt haben, müssen wir sie auf GitHub committen und pushen. Das Pushen dieser Commits löst den Action Runner aus, um die von uns definierten Schritte auszuführen.

  1. Stellen Sie sicher, dass Sie sich im Repository-Verzeichnis befinden:
cd ~/project/github-actions-demo
  1. Überprüfen Sie den Status Ihres Repositorys:
git status
  1. Fügen Sie alle Dateien zur Staging Area hinzu:
git add .
  1. Committen Sie die Änderungen mit einer aussagekräftigen Nachricht:
git commit -m "Add Node.js CI workflow and project files"
  1. Pushen Sie die Änderungen in das Remote-Repository auf GitHub:
git push

Hinweis zur Authentifizierung:
Wenn Sie git push ausführen, werden Sie von der WebIDE automatisch zur Authentifizierung aufgefordert. Befolgen Sie diese detaillierten Schritte:

  1. Ein Popup wird mit der Meldung angezeigt: "The extension 'GitHub' wants to sign in using GitHub." Klicken Sie auf Allow.
  2. Eine neue Benachrichtigung wird angezeigt. Klicken Sie auf "Copy&Continue to GitHub" und dann bei der nächsten Aufforderung auf "Open".
  3. Melden Sie sich in dem sich öffnenden Browserfenster bei Ihrem GitHub-Konto an und geben Sie den kopierten Autorisierungscode ein. Nach Bestätigung der Autorisierung schließt sich die Seite automatisch.
  4. Warten Sie einige Sekunden, und Sie werden sehen, dass das Terminal den Push-Vorgang erfolgreich abgeschlossen hat.

Datenschutzhinweis: Die WebIDE wird für Authentifizierungszwecke vollen Zugriff auf Ihr GitHub-Konto anfordern. Sie müssen sich keine Sorgen um Datenschutzbedenken machen – die LabEx VM wird sofort zerstört, nachdem Sie das aktuelle Lab abgeschlossen haben, und Ihre Anmelde- und Autorisierungsinformationen werden nicht gespeichert.

Überprüfung des Workflow-Laufs

  1. Besuchen Sie Ihr Repository auf GitHub in einem Webbrowser: https://github.com/your-username/github-actions-demo
  2. Klicken Sie oben auf der Repository-Seite auf den Tab Actions.
  3. Sie sollten einen Workflow-Lauf sehen, der wahrscheinlich "Add Node.js CI workflow and project files" oder "Node.js CI" heißt.

Hinweis: Wenn Sie Code pushen, können mehrere Actions ausgelöst werden, falls Sie mehrere Workflow-Dateien in Ihrem Repository haben. Bitte identifizieren Sie den korrekten Workflow-Lauf, indem Sie den Workflow-Namen in der linken Seitenleiste überprüfen oder die Workflow-Lauf-Liste auf der rechten Seite verwenden.

  1. Klicken Sie auf den Titel des Workflow-Laufs und dann auf den Job build, um die detaillierten Logs anzuzeigen.

Sie können jeden Schritt erweitern, um zu sehen, was passiert ist:

  • Checkout code: Zeigt an, dass das Repository ausgecheckt wurde
  • Use Node.js: Zeigt an, dass Node.js v20 installiert wurde
  • Install dependencies: Zeigt an, dass npm install ausgeführt wurde
  • Run tests: Zeigt an, dass npm test ausgeführt wurde, und Sie sollten die Ausgabe Running tests... sehen

Wenn alle Schritte erfolgreich abgeschlossen wurden, funktioniert Ihr CI-Workflow korrekt.

GitHub Actions logs

Zusammenfassung

In diesem Lab haben Sie erfolgreich einen grundlegenden Continuous Integration (CI) Workflow mithilfe von GitHub Actions erstellt. Sie haben gelernt, wie man:

  1. Eine .yml Workflow-Datei im Verzeichnis .github/workflows erstellt.
  2. Den Workflow so konfiguriert, dass er bei push-Ereignissen ausgelöst wird.
  3. Die Action actions/setup-node verwendet, um die Node.js-Umgebung einzurichten.
  4. Schritte hinzufügt, um Abhängigkeiten zu installieren (npm install) und Tests auszuführen (npm test).
  5. Eine grundlegende Node.js-Projektstruktur einrichtet, um den Workflow zu unterstützen.

Diese Fähigkeiten bilden die Grundlage moderner DevOps-Praktiken und ermöglichen es Ihnen, die Überprüfung Ihres Codes bei jeder Änderung zu automatisieren.