Ereignisse erkunden

Abgeschlossen

GitHub-Aktionen-Workflows werden durch Ereignisse ausgelöst – bestimmte Aktivitäten, die in Ihrem Repository oder in einem Zeitplan auftreten. Ereignisse werden durch die on Klausel in Ihrer Workflowdefinition definiert und bestimmen, wann ihre Automatisierung ausgeführt wird.

Geplante Ereignisse

Planen Sie Workflows für die Ausführung zu bestimmten Zeiten mithilfe der Cron-Syntax. Das eignet sich perfekt für Wartungsaufgaben, regelmäßige Berichte oder nächtliche Builds.

on:
  schedule:
    # Runs every weekday at 8 AM UTC
    - cron: "0 8 * * 1-5"
    # Runs every Sunday at midnight UTC
    - cron: "0 0 * * 0"

Aufschlüsselung der Cron-Syntax:

  • Minute (0-59) | Stunde (0-23) | Tag (1-31) | Monat (1-12) | Wochentag (0-6, Sonntag=0)
  • Verwenden Sie Monatsnamen: JAN-DEC und Tagesnamen: SUN-SAT
  • Verwenden Sie * für „any“ (setzen Sie cron-Zeichenfolgen in YAML in Anführungszeichen)

Beispiele:

  • '0 9-17 * * 1-5' - Jede Stunde von 9:00 bis 17:00 Uhr, Monday-Friday
  • '30 2 * * *' - Täglich um 2:30 Uhr
  • '0 0 1 * *' - Erster Tag jeden Monats um Mitternacht

Code-Repositoryereignisse

Die am häufigsten verwendeten Trigger reagieren auf Codeänderungen in Ihrem Repository:

Grundlegende Push- und Pullanforderungsereignisse

on:
  # Single event
  push

  # Multiple events
  pull_request

# Or as a list
on: [push, pull_request]

Gefilterte Ereignisse mit Verzweigungen und Pfaden

on:
  push:
    branches: [main, develop]
    paths: ["src/**", "!docs/**"]
  pull_request:
    branches: [main]
    types: [opened, synchronize, reopened]

Allgemeine Repositoryereignisse

Event Auslöser Anwendungsfall
push Code auf den Branch gepusht CI/CD, automatisierte Tests
pull_request PR geöffnet/aktualisiert Automatisierung der Codeüberprüfung
release Veröffentlichte Version Für Produktion bereitstellen
create Branch/Tag erstellt Initialisieren von Umgebungen
delete Branch/Tag gelöscht Bereinigen von Ressourcen

Manuelle Ereignisse

Manuelles Auslösen von Workflows über die Registerkarte "GitHub-Aktionen" mithilfe von workflow_dispatch:

on:
  workflow_dispatch:
    inputs:
      environment:
        description: "Deployment environment"
        required: true
        default: "staging"
        type: choice
        options:
          - staging
          - production
      version:
        description: "Version to deploy"
        required: true
        type: string

Hinweis

Die Workflowdatei muss in der Standardverzweigung vorhanden sein, damit sie in der UI für manuelles Auslösen angezeigt wird.

Webhook-Ereignisse

GitHub bietet viele Webhook-Ereignisse für Repositoryaktivitäten:

on:
  # Wiki page created or updated
  gollum

  # Issues opened, closed, or edited
  issues:
    types: [opened, edited, closed]

  # New release published
  release:
    types: [published]

Externe Ereignisse

Verwenden Sie repository_dispatch, um Workflows von externen Systemen über die GitHub REST-API auszulösen.

on:
  repository_dispatch:
    types: [deploy-staging, run-tests]

Externes Auslösen:

curl -X POST \
  -H "Authorization: token YOUR_TOKEN" \
  -H "Accept: application/vnd.github.v3+json" \
  https://api.github.com/repos/OWNER/REPO/dispatches \
  -d '{"event_type":"deploy-staging","client_payload":{"environment":"staging"}}'

Bewährte Methoden für Ereignisse

  • Seien Sie spezifisch: Verwenden von Verzweigungs- und Pfadfiltern, um unnötige Ausführungsläufe zu vermeiden
  • Kombinieren verwandter Ereignisse: Gruppieren ähnlicher Trigger in einem Workflow
  • Verwenden Sie geeignete Ereignistypen: Wählen Sie den spezifischesten Ereignistyp für Ihre Anforderungen aus.
  • Erst manuell testen: Verwenden Sie workflow_dispatch während der Entwicklung
  • Überwachen der Verwendung: Überprüfen von Workflowläufen zur Optimierung der Ereigniskonfiguration

Eine vollständige Ereignisdokumentation finden Sie unter Ereignisse, die Workflows auslösen.