GitHub CI Einführung
GitHub CI/CD (Continuous Integration/Continuous Deployment) ist eine leistungsstarke Plattform, die es Entwicklern ermöglicht, automatisierte Workflows für das Bauen, Testen und Bereitstellen von Anwendungen direkt aus ihren GitHub-Repositories zu erstellen.
Mit GitHub Actions können Sie benutzerdefinierte CI/CD-Pipelines erstellen, die auf Ereignisse in Ihrem Repository reagieren, wie z.B. Code-Pushes oder Pull-Requests.
Erste Schritte mit GitHub CI/CD
- Repository vorbereiten:
Stellen Sie sicher, dass Ihr Code in einem GitHub-Repository gehostet wird. - Workflow-Datei erstellen:
Sie müssen Ihrem Projekt eine Workflow-Datei hinzufügen.
Erstellen Sie im Verzeichnis.github/workflowszBsp die YAML-Datei myfirstworkflow.yml. - Aktionen hinzufügen:
Fügen Sie in Ihrer Workflow-Datei die gewünschten GitHub Actions hinzu, um den Build-, Test- und Deploy-Prozess zu automatisieren.
Typischer Workflow- on: -> wann wird der Workflow ausgelöst: zBsp durch push auf
masterbrunch - jobs mit verschiedenen steps:
- Repo auschecken
- QEMU Emulator für cross-compiling einrichten
- Build ausführen
- Tests ausführen
- Deployment durchführen - Auf Image-Registry einloggen - Image bauen und pushen
- on: -> wann wird der Workflow ausgelöst: zBsp durch push auf
- Secrets konfigurieren:
Wenn Ihr Workflow sensible Informationen wie API-Schlüssel oder Zugangsdaten benötigt, speichern Sie diese als "Secrets" in den Repository-Einstellungen.
Secrets sind verschlüsselte Umgebungsvariablen, die in Workflows verwendet werden können, ohne dass sie im Code des Repositories sichtbar sind. - Workflow ausführen:
Sobald Sie Ihre Workflow-Datei committet haben, wird der Workflow automatisch ausgeführt, wenn das definierte Ereignis eintritt.
Die Ausführung kann unter dem Reiter "Actions" in Ihrem GitHub-Repository überwacht werden. Allfällige Fehler können dort eingesehen und und dann in der Workflow-Datei behoben werden.
Beispiel Workflow für ein Spring-Boot-Projekt
Erläuterung zu den Teilen der Workflow-Datei:
name: Der Name des Workflows, der in der GitHub-Oberfläche angezeigt wird.on: Definiert die Ereignisse, die den Workflow auslösen. In diesem Fall wird der Workflow bei Push- und Pull-Request-Ereignissen auf demmain-Branch ausgelöst.jobs: Eine Sammlung von Jobs, die im Workflow ausgeführt werden. Jeder Job kann mehrere Schritte enthalten.build: Der Name des Jobs, der den Build-Prozess definiert.runs-on: Gibt die Umgebung an, in der der Job ausgeführt wird. In diesem Fall wirdubuntu-latestverwendet.steps: Eine Liste von Schritten, die im Job ausgeführt werden. Jeder Schritt kann eine Aktion oder ein Befehl sein.
name: Java CI (modern)
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up JDK
uses: actions/setup-java@v4
with:
distribution: 'temurin' # Alternativ: zulu, microsoft, etc.
java-version: '11' # Oder '17', je nach Projektanforderung
cache: 'maven' # Aktiviert Maven-Abhängigkeits-Cache
- name: Build & Test
run: mvn -B -ntp verify # Batch-Mode (-B), kein Transfer-Progress (-ntp)
Detaillierte Erklärung der Steps
-
Checkout Code:
Dieser Schritt verwendet dieactions/checkout-Action, um den Code aus dem Repository in die Laufzeitumgebung zu klonen. Dies ist notwendig, damit die nachfolgenden Schritte auf den Quellcode zugreifen können.
GitHub Actions stellt diese Action bereit, um den Checkout-Prozess zu vereinfachen.
siehe unten. -
JDK einrichten:
Dieser Schritt richtet die Java-Entwicklungsumgebung ein, indem er die angegebene JDK-Version installiert. Die Option- name: Set up JDK uses: actions/setup-java@v4 with: distribution: 'temurin' # Alternativ: zulu, microsoft, etc. java-version: '11' # Oder '17', je nach Projektanforderung cache: 'maven' # Aktiviert Maven-Abhängigkeits-Cachecache: 'maven'sorgt dafür, dass Maven-Abhängigkeiten zwischengespeichert werden, um die Build-Zeit zu verkürzen. - Build & Test:
In diesem Schritt wird der Maven-Befehl
mvn verifyausgeführt, um das Projekt zu bauen und die Tests durchzuführen. Die Flags-B(Batch-Mode) und-ntp(kein Transfer-Progress) optimieren die Ausgabe für CI-Umgebungen.
Github Actions
GitHub Actions sind wiederverwendbare Bausteine für CI/CD-Workflows.
Jede Action übernimmt eine bestimmte Aufgabe — etwa Code auschecken, Tests ausführen, Docker-Images bauen oder Releases erstellen.
Beispiel:
Typische / häufig genutzte Actions
| Zweck | Action | Kurzbeschreibung |
|---|---|---|
| Code aus Repo holen | actions/checkout@v4 |
Lädt das Repository in den Runner |
| Node.js Umgebung | actions/setup-node@v4 |
Installiert Node.js & npm |
| Java Umgebung | actions/setup-java@v4 |
Installiert JDK & Maven/Gradle |
| Python Umgebung | actions/setup-python@v5 |
Installiert Python |
| Docker Login | docker/login-action@v3 |
Meldet sich bei Docker Hub oder GHCR an |
| Docker Build | docker/build-push-action@v5 |
Baut und pusht Docker-Images |
| Multi-Arch Build | docker/setup-qemu-action@v3 |
Aktiviert QEMU für Cross-Builds |
| Multi-Platform | docker/setup-buildx-action@v3 |
Aktiviert Docker Buildx |
| Tests ausführen | actions/setup-node + npm test oder actions/setup-java + mvn test |
Testläufe |
| Benachrichtigungen | actions/github-script oder slackapi/slack-github-action |
Skripte oder Slack-Nachrichten senden |
| Secrets & Signing | sigstore/cosign-installer |
Container signieren |
| Releases | softprops/action-gh-release |
Automatisch GitHub Release erstellen |
Weitere Actions finden
https://github.com/marketplace?type=actions
Jede Action-Seite zeigt:
- Beschreibung
- Beispielcode
- Eingabeparameter (
with:) - Ausgaben (
id:/${{ steps.xyz.outputs.value }})
Vorbereitete Workflow-Vorlagen
Wählt man: Repository → Reiter Actions → “New workflow”
So schlägt GitHub vorgefertigte Vorlagen für Node, Java, Python, Docker etc. vor.
Diese können als Ausgangspunkt für eigene Workflows verwendet werden.
Hilfen im Netz
Es gibt zahlreiche Ressourcen und Communities, die Unterstützung bei der Arbeit mit GitHub CI/CD bieten:
- GitHub Docs: Die offizielle Dokumentation zu GitHub Actions bietet umfassende Anleitungen und Beispiele.
https://docs.github.com/en/actions - GitHub Community: In der GitHub Community können Sie Fragen stellen und von anderen Entwicklern lernen.
https://github.community/ - Blog: build-ci-cd-pipeline-github-actions-four-steps