GitHub Actions-Referenzkarte – Standardstruktur und eine Liste der nützlichsten Aktionen
Ein kurzer Überblick über gängige GitHub Actions und deren Struktur.
GitHub Actions ist eine Automatisierungs- und CI/CD-Plattform innerhalb von GitHub, die verwendet wird, um Code basierend auf Ereignissen wie Pushes, Pull Requests oder Zeitplänen zu erstellen, zu testen und bereitzustellen.
Zusätzlich zu Standard-GitHub können Sie GitHub Actions auf einem selbst gehosteten Gitea-Server verwenden.

Actions erstrecken sich auf offizielle, Community- und Drittanbieter-Tools und unterstützen die Automatisierung von Builds und Tests bis hin zu Deployment, Release-Management, QA und Benachrichtigungen.
Diese Zusammenfassung behandelt die Struktur von GitHub Actions, eine kurze Beschreibung und die häufigsten Actions, die in Open-Source- und kommerziellen Workflows verwendet werden. Sie ist Teil von Entwickler-Tools: Der vollständige Leitfaden für moderne Entwicklungswerkzeuge.
Grundlegende Konfigurationsstruktur
GitHub Actions Workflows werden in YAML-Dateien definiert, die sich im Verzeichnis .github/workflows innerhalb des Repositories befinden.
name: Workflow Name
on:
push:
branches: [ main ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Node.js einrichten
uses: actions/setup-node@v3
with:
node-version: '18'
- name: Tests ausführen
run: npm test
- Der on-Block definiert die Auslöseereignisse.
- Jeder job wird auf einem eigenen Runner ausgeführt.
- steps können Shell-Befehle ausführen oder wiederverwendbare Actions aufrufen.
Kernkomponenten von Workflows
| Komponente | Beschreibung |
|---|---|
| Workflow | Automatisierter Prozess (YAML), der durch ein Ereignis ausgelöst wird |
| Ereignis | Aktivität, die den Workflow auslöst (push, pull_request, etc.) |
| Job | Reihe von Schritten, die auf einem Runner ausgeführt werden; kann sequenziell oder parallel laufen |
| Schritt | Jeder Befehl oder jede Action innerhalb eines Jobs |
| Runner | VM oder Container, auf dem Jobs ausgeführt werden |
| Action | Wiederverwendbare Erweiterung/Add-on, die eine Aufgabe kapselt |
Auslöseereignisse
- push
- pull_request
- schedule (unter Verwendung von Cron-Syntax)
- workflow_dispatch (manueller Auslöser, ermöglicht Eingabeparameter)
- release, issue, etc.
Beispiel:
on:
push:
branches: [ main ]
workflow_dispatch:
inputs:
environment:
description: 'Bereitstellungs-Umgebung'
required: true
default: 'production'
type: string
Nützliche integrierte Actions
| Action | Zweck | Häufige Parameter |
|---|---|---|
| actions/checkout | Repository-Code herausziehen | ref, token, submodules, persist-credentials |
| actions/setup-node | Node.js-Umgebung einrichten | node-version, cache, architecture, check-latest |
| actions/setup-python | Python einrichten | python-version, architecture |
| actions/cache | Abhängigkeiten zwischenspeichern | path, key, restore-keys |
| docker/build-push-action | Docker-Images erstellen & pushen | context, file, platforms, tags, push, build-args |
| actions/upload-artifact | Build-Artefakte hochladen | name, path, if-no-files-found |
| actions/download-artifact | Artefakte herunterladen | name, path |
| github/email-actions | E-Mail-Benachrichtigungen senden | to, subject, content, attachments |
| peter-evans/create-pull-request | PRs per Workflow erstellen | branch, title, body, labels, base |
| actions/github-script | Beliebiges JavaScript im Workflow ausführen | script, github-token |
Action-Parameter
Allgemeine Parameter für jeden Action-Aufruf:
- name: Some Action or Step
uses: owner/repo@ref
with:
param1: value
param2: value
env:
ENV_VAR: value
if: ${{ condition }}
run: command_to_run
shell: bash|pwsh|python|sh
continue-on-error: true|false
- with: Argumente, die an die Action übergeben werden (siehe Action-Dokumentation für alle Optionen)
- env: Umgebungsvariablen für den Schritt
- if: Bedingte Ausführung
- run: Shell-Befehle (falls keine Action verwendet wird)
- shell: Shell, die zum Ausführen des Schritts verwendet wird
- continue-on-error: Weitermachen, auch wenn der Schritt fehlschlägt
Definition benutzerdefinierter Action-Eingaben
In Ihrer Action-Metadatei (action.yml):
inputs:
example-input:
description: 'Ein Beispiel-Eingabewert'
required: false
default: 'standard-wert'
Wenn in einem Workflow verwendet:
- uses: my/action@v1
with:
example-input: 'benutzerdefinierter-wert'
Zugriff als Umgebungsvariable INPUT_EXAMPLE_INPUT, wenn die Action ausgeführt wird.
Beispiel: Workflow mit manuellen Parametern
name: Deploy
on:
workflow_dispatch:
inputs:
environment:
description: 'Bereitstellungs-Umgebung'
required: true
default: 'production'
type: string
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Code herausziehen
uses: actions/checkout@v4
- name: In Umgebung bereitstellen
run: echo "Bereitstellung in ${{ github.event.inputs.environment }}"
Action-Marktplatz
- Tausende von wiederverwendbaren Actions sind im GitHub Marketplace verfügbar.
- Kategorien umfassen: Cloud-Bereitstellungen, Benachrichtigungstools, Testframeworks, Code-Analyse und mehr.
- Entdecken Sie: actions/checkout, actions/setup-node, docker/build-push-action, actions/cache, actions/upload-artifact und viele andere.
Schnelle Tipps
- Platzieren Sie Workflow-Dateien in
.github/workflows. - Verwenden Sie workflow_dispatch mit inputs für manuelle und parametrisierte Durchläufe.
- Verwenden Sie die cache-Action, um die Installation von Abhängigkeiten zu beschleunigen.
- Verwenden Sie die Job-matrix, um mehrere Betriebssystem-/Laufzeitversionen zu testen.
- Verwenden Sie Secrets für sensible Daten, referenziert als
${{ secrets.SECRET_NAME }}.
Dieses Cheatsheet deckt die Grundlagen der Verwendung, Konfiguration und Erweiterung von GitHub Actions für Automatisierung, CI/CD und mehr ab. Für weitere Details und Updates konsultieren Sie immer die offizielle GitHub-Dokumentation und Action-Repositories.
Häufige GitHub Actions
Hier ist eine praktische Liste häufig genutzter GitHub Actions, die bei der Automatisierung von CI/CD, Tests, Builds, Bereitstellungen und Workflow-Aufgaben helfen:
Kern-Offizielle Actions
| Action | Zweck | Wichtige Beispiel-Parameter |
|---|---|---|
| actions/checkout | Zieht den Repository-Code heraus | ref, submodules |
| actions/setup-node | richtet Node.js-Umgebung ein | node-version, cache |
| actions/setup-python | richtet Python-Umgebung ein | python-version |
| actions/setup-java | richtet Java JDK ein | distribution, java-version |
| actions/cache | Zwischenspeichert Abhängigkeiten und Build-Ausgaben | path, key, restore-keys |
| actions/upload-artifact | Lädt Build-Artefakte hoch | name, path |
| actions/download-artifact | Lädt Artefakte aus dem Workflow herunter | name, path |
| actions/github-script | Führt JavaScript unter Verwendung des GitHub-Kontexts und der API aus | script |
| actions/create-release | Erstellt eine GitHub-Release | tag_name, release_name |
| actions/upload-release-asset | Lädt Assets für eine Release hoch | upload_url, asset_path |
| actions/labeler | Wendet automatisch Labels auf Issues/PRs an | repo-token, configuration-path |
Beliebte Community- und Drittanbieter-Actions
| Action | Zweck |
|---|---|
| docker/build-push-action | Erstellen und Pushen von Docker-Images |
| actions/setup-go | Go-Umgebung einrichten |
| super-linter/super-linter | Universelles automatisiertes Code-Linting |
| trufflesecurity/trufflehog | Scan nach Secrets und Credentials |
| peaceiris/actions-gh-pages | Statische Seiten auf GitHub Pages bereitstellen |
| JamesIves/github-pages-deploy-action | Projekte auf GitHub Pages bereitstellen |
| peter-evans/create-pull-request | Erstellt Pull Requests automatisch |
| softprops/action-gh-release | Erstellt und lädt GitHub Releases hoch |
| ad-m/github-push-action | Schiebt Änderungen zurück ins GitHub-Repository |
| actions/setup-dotnet | .NET SDK einrichten |
| azure/login | Authentifizierung bei Azure |
| google-github-actions/auth | Authentifizierung bei Google Cloud |
Testing, QA und Reporting Actions
| Action | Zweck |
|---|---|
| actions/setup-ruby | Ruby-Umgebung einrichten |
| codecov/codecov-action | Lädt Code-Coverage-Berichte an Codecov |
| coverallsapp/github-action | Lädt Coverage-Ergebnisse an Coveralls |
| dorny/test-reporter | Hängt Testergebnisse an GitHub Checks an |
| stefanzweifel/git-auto-commit-action | Commit und Push von Dateiänderungen automatisch |
Bereitstellungs- und Benachrichtigungs-Actions
| Action | Zweck |
|---|---|
| appleboy/scp-action | Dateien per SCP hochladen |
| SamKirkland/FTP-Deploy-Action | Dateien über FTP/FTPS bereitstellen |
| cypress-io/github-action | Cypress End-to-End-Tests ausführen |
| slackapi/slack-github-action | Nachrichten an Slack senden |
| dawidd6/action-send-mail | Sendet E-Mails während Workflow-Läufen |
Utility- und Workflow-Management-Actions
| Action | Zweck |
|---|---|
| peter-evans/repository-dispatch | Löst externe Repository-Workflows aus |
| fregante/setup-git-user | Legt Git-Benutzerdaten für Commits fest |
| andymckay/labeler | Labelt Issues und PRs basierend auf Pfaden |
| actions/configure-pages | Konfiguriert die Veröffentlichung auf GitHub Pages |
| EndBug/add-and-commit | Fügt Dateien hinzu und committet sie innerhalb eines Workflows |
| dangoslen/changelog-enforcer | Prüft, ob eine Changelog für PRs aktualisiert wurde |
Wie man mehr findet
Es gibt viele GitHub Actions, die Workflow-Automatisierung ermöglichen, wie automatisiertes Testen, Bereitstellung in der Produktion, Benachrichtigungen und Integrationen mit anderen Diensten. Der GitHub Marketplace listet tausende Actions in Kategorien wie Testing, Sicherheit, Bereitstellung, Benachrichtigungen, Code-Qualität und Integrationen auf. Kuratierte Listen wie “Awesome Actions” sind ebenfalls großartig für Inspiration und Entdeckung.
Nützliche Links
- https://docs.github.com/actions
- https://github.com/marketplace
- https://docs.github.com/en/actions/get-started/quickstart
- https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions
- GIT Cheatsheet
- Gitea - Installation und Test
- Backup und Wiederherstellung des Gitea-Servers
- Verwendung von Gitea Actions zur Bereitstellung einer Hugo-Website auf AWS S3
- Gitflow: Schritte, Alternativen, Vor- und Nachteile
- DevOps mit GitOps - Argo CD, Flux, Jenkins X, Weave GitOps und andere