Erstellung des ersten GitHub Actions Workflows

GitBeginner
Jetzt üben

Einführung

GitHub Actions ist eine Continuous Integration/Continuous Delivery (CI/CD)-Plattform, mit der Sie Ihre Build-, Test- und Bereitstellungspipeline automatisieren können. Sie können Workflows erstellen, die jeden Pull Request für Ihr Repository bauen und testen oder zusammengeführte Pull Requests in die Produktion bereitstellen.

In diesem Lab erstellen Sie Ihren ersten einfachen Workflow. Sie lernen die Standardverzeichnisstruktur kennen, die von GitHub Actions benötigt wird, wie Sie den Workflow-Namen definieren, wie Sie die Ereignisse angeben, die den Workflow auslösen, und wie Sie Jobs definieren, um Befehle auszuführen.

Dieses Lab baut auf dem Repository auf, das Sie im vorherigen Lab erstellt haben. Sie werden das Repository github-actions-demo in Ihre LabEx-Umgebung klonen und Ihre erste Workflow-Datei hinzufügen.

Erstellen Sie eine neue YAML-Datei namens hello-world.yml in .github/workflows

In diesem Schritt klonen Sie das Repository, das Sie im vorherigen Lab erstellt haben, und erstellen Ihre erste Workflow-Datei.

  1. Klicken Sie auf der 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

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.
  1. Navigieren Sie in das geklonte Repository:
cd ~/project/github-actions-demo
  1. Das Verzeichnis .github/workflows sollte vom vorherigen Lab bereits existieren. Überprüfen Sie dessen Existenz:
ls -R .github
  1. Erstellen Sie eine neue Datei mit dem Namen hello-world.yml im Verzeichnis .github/workflows. Diese Datei wird unsere Workflow-Konfiguration enthalten:
touch .github/workflows/hello-world.yml

Sie können überprüfen, ob die Datei erfolgreich erstellt wurde:

ls -R .github

Sie sollten das Verzeichnis workflows sehen, das sowohl main.yml (aus dem vorherigen Lab) als auch hello-world.yml enthält.

Fügen Sie den Schlüssel 'name' mit dem Wert 'Hello World Workflow' zur YAML-Datei hinzu

In diesem Schritt beginnen Sie mit der Bearbeitung der YAML-Datei, um Ihren Workflow zu definieren. Das erste Element, das wir normalerweise hinzufügen, ist der name des Workflows. Dieser Name wird im Tab "Actions" des GitHub-Repositorys angezeigt und erleichtert die Identifizierung.

Öffnen Sie die Datei hello-world.yml mit dem WebIDE-Editor. Sie finden die Datei im Datei-Explorer auf der linken Seite unter project/github-actions-demo/.github/workflows/.

Fügen Sie den folgenden Inhalt in die Datei ein:

name: Hello World Workflow

Dieses Schlüssel-Wert-Paar weist Ihrem Workflow einen menschenlesbaren Namen zu.

Nachdem Sie den Inhalt hinzugefügt haben, speichern Sie die Datei (Strg+S oder Cmd+S).

Sie können den Inhalt der Datei im Terminal überprüfen:

cat .github/workflows/hello-world.yml
Verify workflow name

Fügen Sie den Schlüssel 'on' mit dem 'push'-Ereignis hinzu, um bei Pushes ausgelöst zu werden

In diesem Schritt definieren Sie, wann der Workflow ausgeführt werden soll. Dies geschieht mit dem Schlüsselwort on. Wir möchten, dass dieser Workflow jedes Mal ausgeführt wird, wenn Code in das Repository gepusht wird.

Öffnen Sie erneut .github/workflows/hello-world.yml und fügen Sie die folgenden Zeilen unterhalb des name-Schlüssels hinzu:

on: [push]

Ihre Datei sollte nun wie folgt aussehen:

name: Hello World Workflow
on: [push]

Die Konfiguration on: [push] weist GitHub Actions an, diesen Workflow jedes Mal auszulösen, wenn ein git push auf einen beliebigen Branch im Repository erfolgt.

Hinweis: GitHub Actions unterstützt viele weitere Trigger-Ereignisse. Zum Beispiel:

  • pull_request: Löst aus, wenn ein Pull Request geöffnet, synchronisiert oder geschlossen wird
  • workflow_dispatch: Ermöglicht das manuelle Auslösen über den GitHub Actions Tab
  • schedule: Wird nach einem Zeitplan unter Verwendung der Cron-Syntax ausgeführt
  • release: Löst aus, wenn eine Veröffentlichung (Release) veröffentlicht wird
  • Und viele weitere Ereignisse wie issues, pull_request_review usw.

In diesem Lab verwenden wir on: [push], da dies der einfachste und häufigste Trigger ist. Sie können andere Trigger-Typen erkunden, wenn Sie mit GitHub Actions fortfahren.

Speichern Sie die Datei nach den Änderungen.

Fügen Sie den Abschnitt 'jobs' mit einem Job namens 'build' hinzu

In diesem Schritt definieren Sie die eigentliche Arbeit, die der Workflow ausführen soll. Ein Workflow-Lauf besteht aus einem oder mehreren jobs. Jobs werden standardmäßig parallel ausgeführt.

Wir werden einen Abschnitt jobs hinzufügen, der einen einzelnen Job namens build enthält. Dieser Job wird in einer Ubuntu-Umgebung ausgeführt und führt einen einfachen Befehl aus.

Fügen Sie den folgenden Inhalt zu Ihrer Datei .github/workflows/hello-world.yml hinzu:

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: Say Hello
        run: echo "Hello, World!"

Lassen Sie uns aufschlüsseln, was dies bewirkt:

  • jobs:: Startet den Jobs-Abschnitt.
  • build:: Die ID des Jobs.
  • runs-on: ubuntu-latest: Gibt den Typ der Maschine (Runner) an, auf der der Job ausgeführt werden soll.
  • steps:: Eine Liste von Aufgaben, die im Job ausgeführt werden sollen.
  • run: echo "Hello, World!": Ein auszuführender Shell-Befehl.

Ihre vollständige Datei sollte nun wie folgt aussehen:

name: Hello World Workflow
on: [push]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: Say Hello
        run: echo "Hello, World!"

Speichern Sie die Datei.

Commiten und pushen Sie die Workflow-Datei mithilfe von Git-Befehlen

In diesem Schritt committen Sie die neue Workflow-Datei und pushen sie nach GitHub. Dadurch wird der gerade erstellte Workflow ausgelöst.

  1. Stellen Sie sicher, dass Sie sich im Repository-Verzeichnis befinden:
cd ~/project/github-actions-demo
  1. Überprüfen Sie den Status Ihres Repositorys, um die nicht verfolgte Datei zu sehen:
git status
  1. Fügen Sie die neue Datei zur Staging Area hinzu:
git add .github/workflows/hello-world.yml
  1. Committen Sie die Änderungen mit einer aussagekräftigen Nachricht:
git commit -m "Add hello world workflow"

Beispielausgabe:

[main ... ] Add hello world workflow
 1 file changed, X insertions(+), X deletions(-)
 create mode 100644 .github/workflows/hello-world.yml
  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. Es erscheint ein Popup mit der Meldung: "The extension 'GitHub' wants to sign in using GitHub." Klicken Sie auf Allow.
  2. Es erscheint eine neue Benachrichtigung. Klicken Sie auf "Copy&Continue to GitHub" und anschließend im nächsten Dialog 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 abschließt.

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 nach Abschluss des aktuellen Labs zerstört, und Ihre Anmeldeinformationen sowie Autorisierungsinformationen werden nicht gespeichert.

Dieser Authentifizierungsprozess erfordert keine manuelle Konfiguration von Benutzername oder Personal Access Token.

Nachdem Sie die Authentifizierungsschritte befolgt haben, sehen Sie eine Ausgabe, die der folgenden ähnelt:

Beispielausgabe:

Enumerating objects: X, done.
Counting objects: 100% (X/X), done.
Delta compression using up to 4 threads
Compressing objects: 100% (X/X), done.
Writing objects: 100% (X/X), XXX bytes | XXX.00 KiB/s, done.
Total X (delta X), reused X (delta X), pack-reused 0
To https://github.com/your-username/github-actions-demo.git
   XXXXXXX..XXXXXXX  main -> main
  1. Besuchen Sie Ihr Repository auf GitHub in einem Webbrowser und navigieren Sie zum Tab Actions. Sie sollten sehen, dass der "Hello World Workflow" läuft oder abgeschlossen ist.
Verify workflow run

Hinweis: Wenn Sie Code pushen, können mehrere Actions ausgelöst werden, falls sich mehrere Workflow-Dateien in Ihrem Repository befinden. 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 Workflow-Lauf, um die detaillierten Ausführungsprotokolle anzuzeigen. Sie werden Folgendes sehen:
    • Der Workflow-Name: Oben als "Hello World Workflow"
    • Der Job-Name: In der linken Seitenleiste als "build"
    • Die Schritt-Ausführung: Klicken Sie auf den Job "build", um ihn zu erweitern, und klicken Sie dann auf den Schritt "Say Hello"
    • Die Ausgabe: Sie sollten die Ausgabe Hello, World! in den Protokollen sehen
Verify workflow run logs

Dies gibt Ihnen eine vollständige Übersicht darüber, wie Ihr Workflow ausgeführt wurde, einschließlich welcher Schritte erfolgreich waren und welche Ausgabe sie erzeugt haben. Dies ist sehr nützlich für das Debugging und das Verständnis dessen, was Ihr Workflow tut.

Zusammenfassung

In diesem Lab haben Sie erfolgreich Ihren ersten GitHub Actions Workflow erstellt. Sie haben gelernt, wie man:

  1. Die erforderliche Verzeichnisstruktur .github/workflows erstellt.
  2. Einen Workflow mithilfe der YAML-Syntax definiert.
  3. Den Workflow-name und die auslösenden Ereignisse (trigger events) mit on festlegt.
  4. jobs und steps definiert, um Befehle auszuführen.
  5. Den Workflow in ein Repository committet und pusht.

Dies sind die grundlegenden Bausteine für die Erstellung komplexer CI/CD-Pipelines, die Ihre Software automatisch bauen, testen und bereitstellen können.