Die folgende Referenz dokumentiert alle verfügbaren Events, die
GitHub Actions Workflows auslösen können. Die Tabellen sind nach
Kategorien gegliedert und enthalten neben den Activity Types auch die
wichtigsten Filter-Optionen sowie das Verhalten von
GITHUB_SHA und GITHUB_REF.
Diese Events reagieren auf Änderungen am Repository-Inhalt, an Branches und Tags.
| Event | Activity Types | Filter | GITHUB_SHA |
GITHUB_REF |
|---|---|---|---|---|
push |
– | branches, branches-ignore,
tags, tags-ignore, paths,
paths-ignore |
Tip-Commit des Push | Aktualisierte Ref |
create |
– | – | Letzter Commit auf erstelltem Branch/Tag | Erstellter Branch/Tag |
delete |
– | – | Letzter Commit auf Default-Branch | Default-Branch |
fork |
– | – | Letzter Commit auf Default-Branch | Default-Branch |
gollum |
– | – | Letzter Commit auf Default-Branch | Default-Branch |
public |
– | – | Letzter Commit auf Default-Branch | Default-Branch |
branch_protection_rule |
created, edited, deleted |
– | Letzter Commit auf Default-Branch | Default-Branch |
Das gollum-Event verdankt seinen Namen der gleichnamigen
Ruby-Bibliothek, auf der GitHub Wikis basieren. Es feuert bei jeder
Änderung an Wiki-Seiten – ein nützlicher Hook für
Dokumentations-Workflows, der in der Praxis aber selten genutzt
wird.
Das public-Event tritt ein, wenn ein privates Repository
öffentlich geschaltet wird. Der umgekehrte Fall (public → private) löst
kein Event aus.
Pull Requests bilden einen eigenen Event-Komplex mit mehreren spezialisierten Events für verschiedene Aspekte des PR-Lifecycles.
| Event | Activity Types | Filter | GITHUB_SHA |
GITHUB_REF |
|---|---|---|---|---|
pull_request |
opened, edited, closed,
reopened, synchronize,
converted_to_draft, ready_for_review,
locked, unlocked, enqueued,
dequeued, assigned, unassigned,
labeled, unlabeled, milestoned,
demilestoned, review_requested,
review_request_removed, auto_merge_enabled,
auto_merge_disabled |
branches, branches-ignore,
paths, paths-ignore |
Merge-Commit auf GITHUB_REF |
refs/pull/PR_NUMBER/merge |
pull_request_target |
wie pull_request |
branches, branches-ignore,
paths, paths-ignore |
Letzter Commit auf Default-Branch | Default-Branch |
pull_request_review |
submitted, edited,
dismissed |
– | Merge-Commit auf GITHUB_REF |
refs/pull/PR_NUMBER/merge |
pull_request_review_comment |
created, edited, deleted |
– | Merge-Commit auf GITHUB_REF |
refs/pull/PR_NUMBER/merge |
merge_group |
checks_requested |
– | SHA der Merge Group | Ref der Merge Group |
Der Unterschied zwischen pull_request und
pull_request_target ist sicherheitskritisch:
Default Activity Types:
Sowohl pull_request als auch
pull_request_target triggern standardmäßig nur bei
opened, synchronize und reopened.
Für andere Activity Types ist explizite Angabe via types
erforderlich.
Events für Issues und Discussions folgen einem ähnlichen Muster mit Activity Types für den gesamten Lifecycle.
| Event | Activity Types | Filter | GITHUB_SHA |
GITHUB_REF |
|---|---|---|---|---|
issues |
opened, edited, deleted,
transferred, pinned, unpinned,
closed, reopened, assigned,
unassigned, labeled, unlabeled,
locked, unlocked, milestoned,
demilestoned, typed, untyped |
– | Letzter Commit auf Default-Branch | Default-Branch |
issue_comment |
created, edited, deleted |
– | Letzter Commit auf Default-Branch | Default-Branch |
discussion |
created, edited, deleted,
transferred, pinned, unpinned,
labeled, unlabeled, locked,
unlocked, category_changed,
answered, unanswered |
– | Letzter Commit auf Default-Branch | Default-Branch |
discussion_comment |
created, edited, deleted |
– | Letzter Commit auf Default-Branch | Default-Branch |
Das issue_comment-Event feuert sowohl für Issue- als
auch für PR-Kommentare. Die Unterscheidung erfolgt zur Laufzeit:
on:
issue_comment:
types: [created]
jobs:
pr-comment:
if: github.event.issue.pull_request
runs-on: ubuntu-latest
steps:
- run: echo "Kommentar auf PR"
issue-comment:
if: ${{ !github.event.issue.pull_request }}
runs-on: ubuntu-latest
steps:
- run: echo "Kommentar auf Issue"Diese Events betreffen die Projekt-Management-Funktionen von GitHub.
| Event | Activity Types | Filter | GITHUB_SHA |
GITHUB_REF |
|---|---|---|---|---|
label |
created, edited, deleted |
– | Letzter Commit auf Default-Branch | Default-Branch |
milestone |
created, closed, opened,
edited, deleted |
– | Letzter Commit auf Default-Branch | Default-Branch |
project |
created, closed, reopened,
edited, deleted |
– | Letzter Commit auf Default-Branch | Default-Branch |
project_card |
created, moved, converted,
edited, deleted |
– | Letzter Commit auf Default-Branch | Default-Branch |
project_column |
created, moved, edited,
deleted |
– | Letzter Commit auf Default-Branch | Default-Branch |
Diese Events beziehen sich auf die Classic Projects. Die neueren GitHub Projects (Projects v2) haben einen anderen Event-Mechanismus, der über GraphQL-Webhooks funktioniert und nicht direkt in Actions Workflows als Trigger verfügbar ist.
| Event | Activity Types | Filter | GITHUB_SHA |
GITHUB_REF |
|---|---|---|---|---|
release |
published, unpublished,
created, edited, deleted,
prereleased, released |
– | Letzter Commit im getaggten Release | refs/tags/<tag_name> |
registry_package |
published, updated |
– | Commit des publizierten Packages | Branch/Tag des Packages |
Bei Releases ist die Unterscheidung der Activity Types wichtig:
| Activity Type | Trigger-Zeitpunkt |
|---|---|
created |
Release-Objekt erstellt (auch Drafts) |
published |
Release veröffentlicht (inkl. Pre-Releases) |
released |
Nur stable Releases (keine Pre-Releases) |
prereleased |
Nur Pre-Releases aus veröffentlichten Releases |
Draft-Releases triggern created, edited und
deleted nicht. Für Draft-basierte
Workflows empfiehlt sich die Kombination aus published und
Logik im Workflow.
Diese Events ermöglichen die Reaktion auf CI/CD-Statusinformationen.
| Event | Activity Types | Filter | GITHUB_SHA |
GITHUB_REF |
|---|---|---|---|---|
check_run |
created, rerequested,
completed, requested_action |
– | Letzter Commit auf Default-Branch | Default-Branch |
check_suite |
completed |
– | Letzter Commit auf Default-Branch | Default-Branch |
status |
– | – | Letzter Commit auf Default-Branch | Default-Branch |
deployment |
– | – | Zu deployender Commit | Branch/Tag des Deployments |
deployment_status |
– | – | Zu deployender Commit | Branch/Tag des Deployments |
page_build |
– | – | Letzter Commit auf Default-Branch | Default-Branch |
Check Runs und Check Suites haben eine Rekursions-Sperre: Events werden nicht ausgelöst, wenn die Check Suite von GitHub Actions selbst erstellt wurde oder wenn der HEAD SHA mit GitHub Actions assoziiert ist.
Das status-Event reagiert auf Commit-Status-Änderungen
(die älteren Status-Checks, nicht die neueren Check Runs):
on:
status
jobs:
on-failure:
if: github.event.state == 'failure'
runs-on: ubuntu-latest
steps:
- run: echo "Commit-Status ist failure"| Event | Untertypen | Filter | GITHUB_SHA |
GITHUB_REF |
|---|---|---|---|---|
schedule |
– | – | Letzter Commit auf Default-Branch | Default-Branch |
Die Cron-Syntax folgt dem POSIX-Standard mit fünf Feldern:
┌───────────── Minute (0-59)
│ ┌───────────── Stunde (0-23)
│ │ ┌───────────── Tag des Monats (1-31)
│ │ │ ┌───────────── Monat (1-12 oder JAN-DEC)
│ │ │ │ ┌───────────── Wochentag (0-6 oder SUN-SAT)
│ │ │ │ │
* * * * *
| Operator | Bedeutung | Beispiel |
|---|---|---|
* |
Beliebiger Wert | 15 * * * * = jede Stunde um :15 |
, |
Aufzählung | 0 9,17 * * * = 09:00 und 17:00 |
- |
Bereich | 0 9-17 * * * = jede Stunde 09:00–17:00 |
/ |
Schrittweite | */15 * * * * = alle 15 Minuten |
Wichtige Einschränkungen:
@daily, @weekly) wird
nicht unterstützt| Event | Untertypen | Filter | GITHUB_SHA |
GITHUB_REF |
|---|---|---|---|---|
workflow_dispatch |
– | inputs |
Letzter Commit auf GITHUB_REF |
Branch/Tag des Dispatch |
repository_dispatch |
Custom (event_type) |
– | Letzter Commit auf Default-Branch | Default-Branch |
workflow_dispatch Input-Typen:
| Typ | Beschreibung | UI-Element |
|---|---|---|
string |
Freitext | Textfeld |
boolean |
true/false | Checkbox |
choice |
Auswahl aus Liste | Dropdown |
environment |
Deployment-Environment | Environment-Dropdown |
on:
workflow_dispatch:
inputs:
target:
description: 'Deployment-Ziel'
required: true
type: choice
options:
- staging
- production
dry_run:
description: 'Nur simulieren'
type: boolean
default: truerepository_dispatch ermöglicht externe Trigger via API:
curl -X POST \
-H "Authorization: token $GITHUB_TOKEN" \
-H "Accept: application/vnd.github.v3+json" \
https://api.github.com/repos/OWNER/REPO/dispatches \
-d '{"event_type":"deploy","client_payload":{"env":"prod"}}'| Event | Activity Types | Filter | GITHUB_SHA |
GITHUB_REF |
|---|---|---|---|---|
workflow_run |
requested, completed,
in_progress |
workflows, branches,
branches-ignore |
Letzter Commit auf Default-Branch | Default-Branch |
workflow_call |
– | inputs, secrets |
Wie Caller-Workflow | Wie Caller-Workflow |
workflow_run ermöglicht die Verkettung von Workflows,
allerdings mit Limit:
Maximal 3 Ebenen Verkettung sind möglich. Ab der 4. Ebene werden Workflows nicht mehr getriggert.
workflow_run mit Conditional:
on:
workflow_run:
workflows: [CI]
types: [completed]
jobs:
deploy:
if: github.event.workflow_run.conclusion == 'success'
runs-on: ubuntu-latest
steps:
- run: echo "CI war erfolgreich, starte Deploy"| Event | Activity Types | Filter | GITHUB_SHA |
GITHUB_REF |
|---|---|---|---|---|
watch |
started |
– | Letzter Commit auf Default-Branch | Default-Branch |
image_version |
– | names, versions |
Letzter Commit auf Default-Branch | Default-Branch |
Das watch-Event reagiert auf Stars (nicht zu verwechseln
mit dem GitHub-Feature “Watch” für Notifications). Der einzig
unterstützte Activity Type started entspricht dem Setzen
eines Stars.
Das image_version-Event ist spezialisiert auf
Container-Images und unterstützt Glob-Patterns:
on:
image_version:
names:
- "my-app"
- "my-service"
versions:
- "1.*"
- "2.*"Die folgende Tabelle zeigt alle Activity Types gruppiert nach semantischer Bedeutung:
| Kategorie | Activity Types | Events |
|---|---|---|
| Lifecycle | opened, closed, reopened,
deleted |
pull_request, issues,
discussion, milestone |
| Content | created, edited |
Fast alle Events |
| Status | completed, submitted,
dismissed |
check_run, check_suite,
pull_request_review |
| Assignment | assigned, unassigned |
pull_request, issues |
| Labels | labeled, unlabeled |
pull_request, issues,
discussion |
| Review | review_requested,
review_request_removed |
pull_request |
| Draft | converted_to_draft, ready_for_review |
pull_request |
| Lock | locked, unlocked |
pull_request, issues,
discussion |
| Queue | enqueued, dequeued |
pull_request |
| Merge | auto_merge_enabled,
auto_merge_disabled |
pull_request |
| Publish | published, unpublished,
prereleased, released |
release, registry_package |
Nicht alle Events stellen die gleichen Informationen im
github.event-Kontext bereit:
| Event-Gruppe | github.event.action |
Payload-Größe | Besonderheiten |
|---|---|---|---|
push |
– | Groß (Commits, Files) | Kein action-Feld |
pull_request* |
Activity Type | Mittel | pull_request-Objekt enthalten |
issues, discussion |
Activity Type | Klein | Objekt-spezifisch |
workflow_* |
Activity Type | Variabel | workflow_run: Vorheriger Workflow-Kontext |
schedule |
– | Minimal | Nur Basis-Kontext |
*_dispatch |
Custom | Variabel | client_payload bei
repository_dispatch |
| Einschränkung | Betroffene Events | Wert |
|---|---|---|
| Workflow-File muss auf Default-Branch existieren | schedule, branch_protection_rule,
check_run, check_suite,
discussion*, fork, gollum,
label, milestone, page_build,
public, registry_package, status,
watch, workflow_run |
– |
| Maximale Verkettungstiefe | workflow_run |
3 Ebenen |
| Minimales Cron-Intervall | schedule |
5 Minuten |
| Inaktivitäts-Timeout (Public Repos) | schedule |
60 Tage |
| Batch-Limit Tags | create, delete |
3 Tags gleichzeitig |
workflow_dispatch Inputs |
workflow_dispatch |
Max. 25 Properties, 65.535 Zeichen |
repository_dispatch Payload |
repository_dispatch |
Max. 10 Top-Level Properties, 65.535 Zeichen |
PRs von Forks haben ein eingeschränktes Sicherheitsmodell:
| Aspekt | pull_request |
pull_request_target |
|---|---|---|
| Secrets verfügbar | Nein (nur GITHUB_TOKEN read-only) |
Ja |
GITHUB_TOKEN Permissions |
Read-only | Read/Write |
| Checkout-Kontext | PR HEAD | Base Branch |
| First-Time Contributor | Approval erforderlich | Approval erforderlich |
| Workflow-Ausführung | Auf Fork | Auf Base Repo |