Softwareentwicklung ist längst mehr als nur das Schreiben von Code. Effiziente Prozesse, schnelle Tests und automatisierte Deployments sind essenziell, um wettbewerbsfähig zu bleiben. Genau hier setzt GitHub Actions an. Als integrierte CI/CD-Lösung innerhalb von GitHub ermöglicht es Entwicklern, Workflows direkt in ihren Repositories zu definieren und nahtlos mit anderen GitHub-Features zu verknüpfen. Egal ob einfache Tests oder komplexe Multi-Stage-Deployments – mit GitHub Actions lässt sich (fast) alles automatisieren.
GitHub Actions: Automatisierung auf höchstem Niveau
Inhaltsverzeichnis:
GitHub - ein Überblick
GitHub ist die weltweit führende Plattform für kollaborative Entwicklung und automatisierte Workflows. Basierend auf Git bietet es Entwicklern nicht nur ein sicheres Zuhause für ihren Code, sondern auch eine breite Palette an Tools zur Optimierung von Entwicklungsprozessen. Neben Repositories, Pull Requests und Branching-Strategien ist GitHub Actions mittlerweile eines der mächtigsten Features der Plattform.
Was GitHub besonders auszeichnet, ist seine Community. Millionen von Open-Source-Projekten werden hier verwaltet, und durch Features wie Discussions, Issues und Sponsorships bietet GitHub weit mehr als nur ein Code-Repository. Der Erwerb durch Microsoft im Jahr 2018 hat der Plattform zusätzliche Ressourcen und tiefere Integrationen mit Azure und anderen DevOps-Tools beschert – ohne dabei die Open-Source-DNA zu verlieren.
Was ist GitHub Actions?
GitHub Actions ist ein integriertes CI/CD-System, das Workflows direkt im Repository ausführt. Workflows bestehen aus einzelnen Jobs, die wiederum aus einer Abfolge von Actions bestehen. Diese Actions können alles Mögliche tun: Code kompilieren, Tests ausführen, Container bauen oder Anwendungen bereitstellen. Das Beste daran: Die Workflows sind als einfache YAML-Dateien im Repository gespeichert, direkt in .github/workflows/.
Das Ganze funktioniert eventbasiert. GitHub Actions kann auf verschiedene Events reagieren, z. B.:
- push oder pull_request – Codeänderungen triggern eine Pipeline
- schedule – wiederkehrende Aufgaben, z. B. tägliche Tests
- workflow_dispatch – manuelles Ausführen einer Action
- repository_dispatch – externe Webhooks als Trigger
Vorteile von GitHub Actions
- Nahtlose Integration: Vollständig in GitHub integriert, keine zusätzliche Konfiguration erforderlich (begrenz in private Repos).
- Großer Marketplace: Tausende vorgefertigte Actions für alle möglichen Szenarien.
- Self-Hosted Runner: Möglichkeit, eigene Maschinen für Builds zu nutzen.
- Matrix-Builds: Parallele Ausführung für verschiedene Betriebssysteme und Konfigurationen.
GitHub Actions Beispiel: Maven Test
Wer mit Java und Maven arbeitet, kennt das Problem: Tests sollten automatisch laufen, bevor Änderungen ins Hauptrepository gelangen. Eine einfache GitHub Action für Maven-Tests sieht so aus:
name: Maven Tests
on: [push, pull_request]
jobs:
test:
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v4
- name: Set up JDK 17
uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'temurin'
- name: Build and test with Maven
run: mvn test
Diese Action läuft auf einem Ubuntu-Runner und durchläuft folgende Schritte:
- Code auschecken
- Java-Umgebung setzen
- Tests mit Maven ausführen
Sobald ein neuer Commit gepusht wird, startet der Workflow und stellt sicher, dass keine fehlerhaften Änderungen ins Repository gelangen.
GitHub Actions Marketplace
Der GitHub Actions Marketplace ist eine zentrale Anlaufstelle für fertige Actions. Hier gibt es alles – von einfachen Deployment-Skripten bis hin zu komplexen Integrationen mit Cloud-Providern oder Security-Tools. Entwickler können eigene Actions veröffentlichen und mit der Community teilen.
Beliebte Actions aus dem Marketplace:
- actions/setup-node – Node.js-Umgebung für CI/CD-Pipelines
- docker/build-push-action – Docker-Images direkt in die Cloud pushen
- sonarsource/sonarcloud-scan – Automatische Code-Qualitätsanalyse
- hashicorp/setup-terraform – Terraform-Infrastruktur automatisiert bereitstellen
Der Vorteil: Man muss nicht jedes Rad neu erfinden. Oft reicht eine fertige Action, um repetitive Aufgaben zu automatisieren. Man kann auch eigene reusable workflows definieren, falls man doch mal was spezielleres immer und immer wieder braucht.
GitHub Runners
GitHub Actions benötigt eine Umgebung, um Workflows auszuführen. Standardmäßig nutzt GitHub gehostete Runner, die automatisch bereitgestellt werden. Diese gibt es für verschiedene Betriebssysteme:
- Ubuntu (z. B. ubuntu-latest)
- Windows (z. B. windows-latest)
- macOS (z. B. macos-latest)
Jeder dieser Runner ist eine virtuelle Maschine mit vorinstallierter Software, die sich nach jedem Job zurücksetzt. Der Vorteil: Die Infrastruktur wird von GitHub verwaltet, und man muss sich nicht um Wartung oder Updates kümmern.
Nachteile gibt es allerdings auch:
- Begrenzte Ressourcen: Gerade für rechenintensive Tasks können die VMs zu langsam sein, oder man bezahlt extra. Für Runner mit viel Leistung muss man schon etwas tiefer in die Tasche greifen.
- Timeouts: Nach 6 Stunden wird ein Job automatisch beendet.
- Kosten: Private Repositories haben begrenzte Laufzeiten für kostenlose Builds.
Wer maximale Kontrolle und Leistung braucht, setzt auf Self-Hosted Runners.
Self-Hosted Runners
Self-Hosted Runners sind Maschinen, die Entwickler selbst verwalten. Sie können auf Bare-Metal-Servern, in VMs oder sogar auf kleinen Geräten wie einem Intel NUC laufen. Vorteil: Mehr Leistung, keine Timeouts und vollständige Kontrolle über die Umgebung. Insbesondere wenn man eigene zu testende Geräte anschließen muss, wird ein self-hosted Runner unentbehrlich.
Die Einrichtung von self-hosted Runnern ist denkbar einfach. Es muss nur ein kleiner Dienst installiert werden, den man aus den eigenen Repository Settings herunterladen kann. Done.
Wichtige Aspekte beim Einsatz von Self-Hosted Runners
- Sicherheit: Der Runner führt beliebigen Code aus – am besten in einer isolierten Umgebung.
- Skalierung: In Kubernetes oder mit Docker können mehrere Runner parallel laufen.
- Wartung: Anders als GitHub-Runner müssen Self-Hosted Runners selbst aktualisiert werden.
Viele Unternehmen setzen auf eine Kombination aus gehosteten und Self-Hosted Runners. Standard-Builds laufen in der Cloud, während aufwendige Tests oder GPU-intensive Workloads auf dedizierter Hardware ausgeführt werden. Genau so machen wir es auch. Wir haben eine Pipeline in der ein ressourcenhungriger Kubernetes Cluster aufgesetzt werden muss. Das würde der GitHub Runner nicht mehr schaffen. Wir brauchen das für unsere End-2-End-Tests und vollständige Systemtests. Ohne unseren self-hosted Runner wären wir sowohl an Ressourcengrenzen bei CPU und Memory gestoßen, als auch an die kostenlosen Stunden für die Action Ausführungen. Wenn man sowieso andere Hardware oder Cloud Maschinen hat, warum dann nicht lieber die nutzen? Zum Ausprobieren reicht hier aber sogar ein Raspberry Pi. Viel Spaß beim Basteln Ihrer eigenen KI-Agenten oder Witzemaschine.
Fazit zu GitHub Actions
GitHub Actions ist heute eines der leistungsfähigsten CI/CD-Tools und ein Muss für moderne Softwareprojekte. Von einfachen Tests bis hin zu komplexen Deployments bietet die Plattform alles, was für eine effiziente Entwicklung benötigt wird. Während GitHubs gehostete Runner für viele Szenarien ausreichen, ermöglichen Self-Hosted Runners maximale Flexibilität und Leistung. Ob auf einem Intel NUC oder in der Cloud – wer GitHub Actions richtig einsetzt, kann Workflows enorm beschleunigen und effizienter arbeiten.
Veröffentlicht am 05.März 2025
Aktualisiert am 05.März 2025

DevOps Engineer
Matthias Eggert ist ein erfahrener DevOps-Engineer mit starkem Fokus auf Testautomatisierung und Qualitätssicherung. Nach vielen Jahren in der Automobilbranche, wo er sicherheitskritische Systeme wie Bremssysteme und Batteriemanagementlösungen betreute, bringt er sein Wissen nun bei Qytera ein. Sein Schwerpunkt liegt auf modernen Testing-Strategien, CI/CD-Pipelines und Cloud-Technologien. Als Jenkins- und AWS-zertifizierter Experte kombiniert er sein tiefes Verständnis für DevOps mit innovativen Testansätzen, um robuste und effiziente Softwarelösungen zu gewährleisten.