Dieser Appendix beschreibt den GitHub Actions Context als zentrale
Datenstruktur eines Workflow-Runs sowie die Expression-Syntax
(${{ ... }}), mit der diese Daten im Workflow ausgewertet
werden. Er dient als technische Referenz für Conditional Logic,
Parametrisierung und dynamische Workflows.
GitHub Actions stellt während eines Workflow-Runs mehrere globale Context-Objekte bereit. Diese sind hierarchisch aufgebaut, read-only und während des gesamten Runs konsistent verfügbar.
| Context | Beschreibung | Typischer Inhalt |
|---|---|---|
github |
Event- und Repository-Metadaten | Event-Payload, Ref, SHA |
env |
Environment-Variablen | Workflow-, Job-, Step-Ebene |
job |
Job-spezifische Informationen | Status, Container |
steps |
Step-Outputs und Outcomes | steps.<id>.outputs.* |
runner |
Runner-Informationen | OS, Arch, Pfade |
secrets |
Secrets | Repo-, Org-, Environment-Secrets |
matrix |
Aktuelle Matrix-Werte | os, node, … |
strategy |
Matrix-Definition | include / exclude |
needs |
Outputs abhängiger Jobs | Job-Orchestrierung |
inputs |
Manuelle / Reusable Inputs | workflow_dispatch, workflow_call |
| Feld | Bedeutung |
|---|---|
github.event_name |
Name des auslösenden Events |
github.event.action |
Activity Type (falls vorhanden) |
github.event |
Vollständiges Event-Payload (JSON) |
github.ref |
Vollständige Ref (refs/heads/main) |
github.ref_name |
Kurzform (main, v1.0) |
github.sha |
Commit SHA |
github.actor |
Auslösender User |
github.repository |
owner/repo |
github.repository_owner |
Owner |
github.workflow |
Name des Workflows |
github.job |
Aktuelle Job-ID |
github.run_id |
Eindeutige Run-ID |
github.run_number |
Laufende Nummer |
github.workspace |
Checkout-Verzeichnis |
Beispiel:
- run: echo "Run ${{ github.run_number }} auf ${{ github.ref }}"Pull Request:
${{ github.event.pull_request.number }}
${{ github.event.pull_request.title }}
${{ github.event.pull_request.user.login }}Issue:
${{ github.event.issue.number }}
${{ github.event.issue.labels.*.name }}workflow_run:
${{ github.event.workflow_run.conclusion }}
${{ github.event.workflow_run.head_branch }}repository_dispatch:
${{ github.event.client_payload.env }}Expressions werden mit ${{ ... }} ausgewertet. Sie
können an nahezu allen Stellen im Workflow verwendet werden.
Verwendung:
ifenvwithruns-onconcurrencymatrixoutputsBeispiel:
if: ${{ github.ref == 'refs/heads/main' }}| Typ | Operatoren | ||
|---|---|---|---|
| Vergleich | ==, !=, <,
>, <=, >= |
||
| Logik | &&, | |, ! |
||
| Strings | contains(), startsWith(),
endsWith() |
||
| Collections | join(), fromJson() |
Beispiel:
if: contains(github.ref, 'release/')| Funktion | Beschreibung |
|---|---|
success() |
Alle vorherigen Steps erfolgreich |
failure() |
Mindestens ein Step fehlgeschlagen |
cancelled() |
Workflow wurde abgebrochen |
always() |
Immer true |
hashFiles() |
Hash über Files |
toJson() |
Objekt → JSON |
fromJson() |
JSON → Objekt |
Beispiel:
if: failure() || cancelled()Zugriff auf Outputs und Status vorheriger Steps.
| Feld | Bedeutung |
|---|---|
steps.<id>.outputs.<name> |
Step-Output |
steps.<id>.outcome |
success, failure,
skipped |
steps.<id>.conclusion |
Finaler Status |
Beispiel:
if: steps.build.outcome == 'success'| Feld | Bedeutung |
|---|---|
needs.<job>.outputs.* |
Outputs abhängiger Jobs |
needs.<job>.result |
success, failure,
skipped |
Beispiel:
if: needs.test.result == 'success'| Feld | Bedeutung |
|---|---|
matrix.<name> |
Aktueller Matrix-Wert |
Beispiel:
runs-on: ${{ matrix.os }}Secrets sind nur in Jobs und Steps verfügbar.
Beispiel:
env:
API_TOKEN: ${{ secrets.API_TOKEN }}Hinweis:
if-Expressions auswertbarBranch-spezifische Logik:
if: github.ref_name == 'main'PR vs Push unterscheiden:
if: github.event_name == 'pull_request'Label-gesteuertes Verhalten:
if: contains(github.event.pull_request.labels.*.name, 'deploy')| Einschränkung | Beschreibung |
|---|---|
| Read-only | Context-Objekte nicht direkt änderbar |
| Kein Persistenzmodell | Gilt nur für aktuellen Run |
| Payload-Größe | Event-Payload begrenzt |
| secrets in if | Nicht erlaubt |