0Pricing
DevOps Bootcamp · Lektion

Bedingte Ausführung und Job-Abhängigkeiten

Steuern Sie mit if-Bedingungen, dem Schlüsselwort needs, Ausdrücken und Statusprüfungsfunktionen, wann Schritte und Jobs in GitHub-Actions-Workflows ausgeführt werden.

Bedingte Ausführung und Job-Abhängigkeiten ist eine kostenlose DevOps Bootcamp-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des DevOps Bootcamp-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der DevOps Bootcamp-Kurs umfasst insgesamt 4 Lektionen.

Warum Bedingungen wichtig sind

Nicht jeder Schritt sollte bei jedem Lauf ausgeführt werden. Vielleicht soll ein Bereitstellungsschritt nur auf dem Branch main laufen oder ein Benachrichtigungsschritt nur dann, wenn ein Fehler aufgetreten ist.

Mit GitHub Actions können Sie jedem Schritt und jedem Job eine if-Bedingung hinzufügen und so steuern, ob er ausgeführt wird.

Der Schlüssel if

Fügen Sie einem Schritt einen Schlüssel if: hinzu. Der Schritt wird nur ausgeführt, wenn der Ausdruck zu true ausgewertet wird.

Ausdrücke innerhalb von if benötigen nicht den Wrapper ${{ }}, er ist jedoch zulässig.

steps:
  - name: Deploy
    if: github.ref == 'refs/heads/main'
    run: ./deploy.sh

Kontextobjekte

Bedingungen werden aus Kontextobjekten gelesen, die den Lauf beschreiben:

  • github — Ereignis, Ref, Akteur, SHA
  • env — Umgebungsvariablen
  • job und steps — Status vorheriger Arbeiten
  • runner — Betriebssystem und Architektur

Beispielsweise zeigt github.event_name, ob ein Push oder ein pull_request den Lauf ausgelöst hat.

Statusprüffunktionen

Standardmäßig wird ein Schritt übersprungen, wenn ein vorheriger Schritt fehlgeschlagen ist. Um dieses Verhalten zu überschreiben, verwenden Sie die Statusfunktionen:

  • success() — wahr, wenn kein vorheriger Schritt fehlgeschlagen ist (Standardverhalten)
  • failure() — wahr, wenn ein vorheriger Schritt fehlgeschlagen ist
  • always() — wird unabhängig vom Ergebnis ausgeführt
  • cancelled() — wahr, wenn der Lauf abgebrochen wurde
  - name: Notify on failure
    if: failure()
    run: echo 'Build failed, sending alert'

Bereinigung immer ausführen

Ein häufiges Muster ist ein Bereinigungsschritt, der auch dann ausgeführt werden muss, wenn frühere Schritte fehlgeschlagen sind. Verwenden Sie if: always().

Dadurch wird garantiert, dass temporäre Ressourcen, Container oder Testberichte unabhängig vom Ergebnis verarbeitet werden.

  - name: Upload logs
    if: always()
    uses: actions/upload-artifact@v4
    with:
      name: logs
      path: ./logs

Job-Abhängigkeiten mit needs

Mit dem Schlüsselwort needs wartet ein Job auf andere Jobs. Ohne dieses Schlüsselwort werden Jobs parallel ausgeführt.

Ein in needs aufgeführter Job muss erfolgreich beendet sein, bevor der abhängige Job startet.

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - run: npm test
  deploy:
    needs: test
    runs-on: ubuntu-latest
    steps:
      - run: ./deploy.sh

Mehrere Abhängigkeiten

Ein Job kann von mehreren Jobs abhängen, indem Sie eine Liste an needs übergeben. Er wartet auf alle diese Jobs.

So erstellen Sie Fan-in-Muster, bei denen ein abschließender Job erst ausgeführt wird, wenn alle parallelen Jobs erfolgreich waren.

  release:
    needs: [lint, test, build]
    runs-on: ubuntu-latest
    steps:
      - run: echo 'all checks passed'

Bedingte Jobs

Der Schlüssel if funktioniert auch für Jobs, nicht nur für Schritte. Eine Bedingung auf Job-Ebene entscheidet, ob der gesamte Job ausgeführt wird.

Hier wird der Deploy-Job nur bei Pushes auf main ausgeführt, hängt aber weiterhin von den Tests ab.

  deploy:
    needs: test
    if: github.ref == 'refs/heads/main'
    runs-on: ubuntu-latest
    steps:
      - run: ./deploy.sh

Job-Ausgaben verwenden

Jobs können Daten über outputs an nachgelagerte Jobs übergeben. Ein abhängiger Job liest sie über den needs-Kontext.

Dadurch kann eine Bedingung von einem zuvor berechneten Wert abhängen, beispielsweise davon, ob sich eine Version geändert hat.

  check:
    runs-on: ubuntu-latest
    outputs:
      changed: ${{ steps.diff.outputs.changed }}
    steps:
      - id: diff
        run: echo 'changed=true' >> $GITHUB_OUTPUT

Bedingungen kombinieren

Sie können Ausdrücke mit && (und), || (oder) und ! (nicht) kombinieren.

Dieses Beispiel wird nur bei einem erfolgreichen Push auf main ausgeführt, der nicht aus einem Fork stammt.

    if: success() && github.ref == 'refs/heads/main' && github.event_name == 'push'

if: always() mit needs

Achtung: Ein Job mit needs wird übersprungen, wenn eine Abhängigkeit fehlschlägt. Damit ein abschließender Bericht-Job unabhängig vom Ergebnis ausgeführt wird, kombinieren Sie needs mit if: always().

Darin können Sie needs.<job>.result untersuchen, um zu entscheiden, was gemeldet werden soll.

  report:
    needs: [test, build]
    if: always()
    runs-on: ubuntu-latest
    steps:
      - run: echo ${{ needs.test.result }}

Kurzer Test

Testen Sie Ihr Verständnis der bedingten Ausführung.

Zusammenfassung

Sie haben gelernt, den Ablauf eines Workflows mit Bedingungen und Abhängigkeiten zu steuern.

  • if steuert die Ausführung von Schritten und Jobs anhand von Ausdrücken
  • Statusfunktionen wie failure() und always() überschreiben das Überspringen nach einem Fehler
  • needs erstellt Reihenfolgen und Fan-in-Muster
  • Job-outputs liefern Werte für spätere Bedingungen

Mit diesen grundlegenden Bausteinen können Sie präzise und effiziente Pipelines erstellen.

Häufig gestellte Fragen

Ist die Lektion „Bedingte Ausführung und Job-Abhängigkeiten“ kostenlos?

Ja — der vollständige Text von „Bedingte Ausführung und Job-Abhängigkeiten“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des DevOps Bootcamp-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der DevOps Bootcamp-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Bedingte Ausführung und Job-Abhängigkeiten“?

Steuern Sie mit if-Bedingungen, dem Schlüsselwort needs, Ausdrücken und Statusprüfungsfunktionen, wann Schritte und Jobs in GitHub-Actions-Workflows ausgeführt werden. Du übst DevOps Bootcamp mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um DevOps Bootcamp zu starten?

Keine Vorkenntnisse erforderlich. DevOps Bootcamp auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.

Wie lange dauert die Lektion „Bedingte Ausführung und Job-Abhängigkeiten“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser DevOps Bootcamp-Lektion Code schreiben und ausführen?

Ja. Jede DevOps Bootcamp-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Matrix-Builds für mehrere Umgebungen
  2. Abhängigkeiten für mehr Geschwindigkeit cachen
  3. Wiederverwendbare Workflows und Actions
  4. Bedingte Ausführung und Job-Abhängigkeiten
← Zurück zu DevOps Bootcamp