Skip to main content

Steuern der Auftragsausführung mithilfe von Bedingungen

Verhindere, dass ein Auftrag ausgeführt wird, wenn deine Bedingungen nicht erfüllt sind.

Hinweis: GitHub-gehostete Runner werden auf GitHub Enterprise Server derzeit nicht unterstützt. Weitere Informationen zur geplanten zukünftigen Unterstützung findest Du in der GitHub public roadmap.

Übersicht

Hinweis: Der Status eines übersprungenen Auftrags wird als „Erfolgreich“ gemeldet. Die Zusammenführung eines Pull Requests wird dadurch nicht verhindert, selbst wenn es sich um eine erforderliche Überprüfung handelt.

Mit der Bedingung jobs.<job_id>.if kannst du dafür sorgen, dass ein Schritt nur ausgeführt wird, wenn eine Bedingung erfüllt ist. Du kannst eine Bedingung mit jedem unterstützten Kontext und Ausdruck erstellen. Weitere Informationen dazu, welche Kontexte in diesem Schlüssel unterstützt werden, findest du unter Zugreifen auf kontextbezogene Informationen zu Workflowausführungen.

Hinweis: Die jobs.<job_id>.if Bedingung wird ausgewertet, bevor jobs.<job_id>.strategy.matrix sie angewendet wird.

Wenn du Ausdrücke in einer if-Bedingung verwendest, kannst du optional die ${{ }}-Ausdruckssyntax weglassen, da GitHub Actions die if-Bedingung automatisch als Ausdruck wertet. Diese Ausnahme gilt jedoch nicht überall.

Du musst immer die Syntax des ${{ }}-Ausdrucks verwenden oder mit '', "" oder () abbrechen, wenn der Ausdruck mit ! beginnt, da ! die reservierte Schreibweise im YAML-Format ist. Zum Beispiel:

if: ${{ ! startsWith(github.ref, 'refs/tags/') }}

Weitere Informationen findest du unter Auswerten von Ausdrücken in Workflows und Aktionen.

Beispiel: Ausführen eines Auftrags nur für bestimmte Repositorys

In diesem Beispiel wird if verwendet, um zu steuern, wann der Auftrag production-deploy ausgeführt werden kann. Er wird nur ausgeführt, wenn das Repository octo-repo-prod heißt und sich innerhalb der Organisation octo-org befindet. Andernfalls wird der Auftrag als übersprungen markiert.

YAML
name: example-workflow
on: [push]
jobs:
  production-deploy:
    if: github.repository == 'octo-org/octo-repo-prod'
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: '14'
      - run: npm install -g bats

Bei einem übersprungenen Auftrag sollte „Diese Überprüfung wurde übersprungen“ angezeigt werden.

Hinweis: In einigen Teilen des Workflows kannst du keine Umgebungsvariablen verwenden. Stattdessen kannst du Kontexte verwenden, um auf den Wert einer Umgebungsvariablen zuzugreifen. Weitere Informationen findest du unter Speichern von Informationen in Variablen.