GitHub Actions Cheatsheet - Standardstruktur und eine Liste der nützlichsten Aktionen
Ein wenig über häufige GitHub Actions und deren Struktur.
GitHub Actions ist eine Automatisierungs- und CI/CD-Plattform innerhalb von GitHub, die verwendet wird, um Ihren Code basierend auf Ereignissen wie Pushes, Pull Requests oder nach einem Zeitplan zu erstellen, zu testen und zu deployen.
Zusätzlich zum Standard-GitHub können Sie GitHub Actions in einem selbstgehosteten Gitea-Server verwenden.
Diese Zusammenfassung behandelt die GitHub-Actions-Struktur, eine kurze Beschreibung und die häufigsten Aktionen, die in Open-Source- und kommerziellen Workflows verwendet werden. Aktionen umfassen offizielle, Community- und Drittanbieter-Tools und unterstützen die Automatisierung von Builds und Tests bis hin zum Deployment, Release-Management, QA und Benachrichtigungen.
Grundlegende Konfigurationsstruktur
GitHub Actions Workflows werden in YAML-Dateien definiert, die sich im Verzeichnis .github/workflows
innerhalb des Repositorys 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 spezifiziert Auslöseereignisse.
- Jeder job wird auf seinem eigenen Runner ausgeführt.
- steps können Shell-Befehle ausführen oder wiederverwendbare Aktionen 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 | Serie von Schritten, die auf einem Runner ausgeführt werden, können sequenziell oder parallel ausgeführt werden |
Schritt | Jeder Befehl oder Aktion in einem Job |
Runner | VM oder Container, in dem Jobs ausgeführt werden |
Aktion | Wiederverwendbare Erweiterung/Zusatz, die eine Aufgabe kapselt |
Auslöseereignisse
- push
- pull_request
- schedule (unter Verwendung der Cron-Syntax)
- workflow_dispatch (manueller Auslöser, ermöglicht Eingabeparameter)
- release, issue, etc.
Beispiel:
on:
push:
branches: [ main ]
workflow_dispatch:
inputs:
environment:
description: 'Bereitstellungsumgebung'
required: true
default: 'production'
type: string
Nützliche integrierte Aktionen
Aktion | Zweck | Häufige Parameter |
---|---|---|
actions/checkout | Repository-Code auschecken | 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-Artifacts hochladen | name, path, if-no-files-found |
actions/download-artifact | Artifacts herunterladen | name, path |
github/email-actions | E-Mail-Benachrichtigungen senden | to, subject, content, attachments |
peter-evans/create-pull-request | PRs über Workflow erstellen | branch, title, body, labels, base |
actions/github-script | Beliebigen JavaScript in Ihrem Workflow ausführen | script, github-token |
Aktion-Parameter
Allgemeine Parameter für jeden Aktionaufruf:
- name: Eine Aktion oder ein Schritt
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 Aktion übergeben werden (siehe Dokumentation der Aktion für alle Optionen)
- env: Umgebungsvariablen für den Schritt
- if: bedingte Ausführung
- run: Shell-Befehle (wenn keine Aktion verwendet wird)
- shell: Shell, die zum Ausführen des Schritts verwendet wird
- continue-on-error: Fortfahren, auch wenn der Schritt fehlschlägt
Definieren von benutzerdefinierten Aktionseingaben
In Ihren Aktionsmetadaten (action.yml):
inputs:
example-input:
description: 'Eine Beispiel-Eingabe'
required: false
default: 'default-value'
Wenn in einem Workflow verwendet:
- uses: my/action@v1
with:
example-input: 'custom-value'
Wird als Umgebungsvariable INPUT_EXAMPLE_INPUT
abgerufen, wenn die Aktion ausgeführt wird.
Beispiel: Workflow mit manuellen Parametern
name: Bereitstellen
on:
workflow_dispatch:
inputs:
environment:
description: 'Bereitstellungsumgebung'
required: true
default: 'production'
type: string
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Code auschecken
uses: actions/checkout@v4
- name: In Umgebung bereitstellen
run: echo "Bereitstellen in ${{ github.event.inputs.environment }}"
Aktion Marketplace
- Tausende wiederverwendbare Aktionen sind im GitHub Marketplace verfügbar.
- Kategorien umfassen: Cloud-Bereitstellungen, Benachrichtigungstools, Test-Frameworks, Code-Analysen und mehr.
- Erkunden 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 Ausführungen.
- Verwenden Sie die cache-Aktion, um die Installation von Abhängigkeiten zu beschleunigen.
- Verwenden Sie die Job-matrix, um mehrere OS/Laufzeitversionen zu testen.
- Verwenden Sie Geheimnisse für sensible Daten, die als
${{ secrets.SECRET_NAME }}
referenziert werden.
Dieses Cheat-Sheet behandelt die Grundlagen der Verwendung, Konfiguration und Erweiterung von GitHub Actions für Automatisierung, CI/CD und mehr. Für weitere Details und Updates sollten Sie immer die offizielle GitHub-Dokumentation und die Aktions-Repositorys prüfen.
Häufig verwendete GitHub Actions
Hier ist eine praktische Liste von häufig verwendeten GitHub Actions, die bei der Automatisierung von CI/CD, Tests, Builds, Bereitstellungen und Workflow-Aufgaben helfen:
Offizielle Kern-Actions
Aktion | Zweck | Wichtige Beispielparameter |
---|---|---|
actions/checkout | Checkt Repository-Code aus | ref, submodules |
actions/setup-node | Einrichtung der Node.js-Umgebung | node-version, cache |
actions/setup-python | Einrichtung der Python-Umgebung | python-version |
actions/setup-java | Einrichtung von Java JDK | distribution, java-version |
actions/cache | Caching von Abhängigkeiten und Build-Ergebnissen | path, key, restore-keys |
actions/upload-artifact | Hochladen von Build-Artifakten | name, path |
actions/download-artifact | Herunterladen von Artifakten aus dem Workflow | name, path |
actions/github-script | Ausführen von JavaScript mit GitHub-Kontext und API | script |
actions/create-release | Erstellen eines GitHub-Releases | tag_name, release_name |
actions/upload-release-asset | Hochladen von Assets zu einem Release | upload_url, asset_path |
actions/labeler | Automatisches Anwenden von Labels auf Issues/PRs | repo-token, configuration-path |
Beliebte Community- und Drittanbieter-Actions
Aktion | Zweck |
---|---|
docker/build-push-action | Docker-Images bauen und hochladen |
actions/setup-go | Einrichtung der Go-Umgebung |
super-linter/super-linter | Universelles automatisiertes Code-Linting |
trufflesecurity/trufflehog | Scannen auf Geheimnisse und Anmeldedaten |
peaceiris/actions-gh-pages | Bereitstellung statischer Seiten für GitHub Pages |
JamesIves/github-pages-deploy-action | Projekte für GitHub Pages bereitstellen |
peter-evans/create-pull-request | Pull-Requests automatisch erstellen |
softprops/action-gh-release | GitHub-Releases erstellen und hochladen |
ad-m/github-push-action | Änderungen zurück zum GitHub-Repository pushen |
actions/setup-dotnet | Einrichtung von .NET SDK |
azure/login | Authentifizierung bei Azure |
google-github-actions/auth | Authentifizierung bei Google Cloud |
Test-, QA- und Berichts-Actions
Aktion | Zweck |
---|---|
actions/setup-ruby | Einrichtung der Ruby-Umgebung |
codecov/codecov-action | Hochladen von Code-Abdeckungsberichten an Codecov |
coverallsapp/github-action | Hochladen von Abdeckungs-Ergebnissen an Coveralls |
dorny/test-reporter | Anhängen von Testergebnissen an GitHub Checks |
stefanzweifel/git-auto-commit-action | Automatisches Committen und Pushen von Dateiänderungen |
Bereitstellungs- und Benachrichtigungs-Actions
Aktion | Zweck |
---|---|
appleboy/scp-action | Hochladen von Dateien mit SCP |
SamKirkland/FTP-Deploy-Action | Bereitstellen von Dateien über FTP/FTPS |
cypress-io/github-action | Ausführen von Cypress End-to-End-Tests |
slackapi/slack-github-action | Senden von Nachrichten an Slack |
dawidd6/action-send-mail | Senden von E-Mails während Workflow-Läufen |
Utility- und Workflow-Management-Actions
Aktion | Zweck |
---|---|
peter-evans/repository-dispatch | Auslösen externer Repository-Workflows |
fregante/setup-git-user | Festlegen von Git-Benutzeranmeldedaten für Commits |
andymckay/labeler | Labeln von Issues und PRs basierend auf Pfaden |
actions/configure-pages | Konfigurieren der Veröffentlichung auf GitHub Pages |
EndBug/add-and-commit | Hinzufügen & Committen von Dateien innerhalb eines Workflows |
dangoslen/changelog-enforcer | Überprüfen, ob ein Changelog für PRs aktualisiert wurde |
Wie man mehr findet
Es gibt viele GitHub Actions, die Workflow-Automatisierung ermöglichen, wie z.B. automatisierte Tests, Bereitstellung in die Produktion, Benachrichtigungen und Integrationen mit anderen Diensten. Der GitHub Marketplace listet Tausende von Actions in Kategorien wie Tests, Sicherheit, Bereitstellung, Benachrichtigungen, Code-Qualität und Integrationen auf. Kuratierte Listen wie “Awesome Actions” sind auch eine großartige Inspirationsquelle und zum Entdecken.
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 - Installieren und Testen
- Backup und Wiederherstellen des Gitea-Servers
- Verwendung von Gitea Actions zum Bereitstellen einer Hugo-Website auf AWS S3
- Gitflow: Schritte, Alternativen, Vor- und Nachteile
- DevOps mit GitOps - Argo CD, Flux, Jenkins X, Weave GitOps und andere