GitHub Actions-Referenzkarte – Standardstruktur und eine Liste der nützlichsten Aktionen

Ein kurzer Überblick über gängige GitHub Actions und deren Struktur.

Inhaltsverzeichnis

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.

github actions flow

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.