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.shKontextobjekte
Bedingungen werden aus Kontextobjekten gelesen, die den Lauf beschreiben:
github— Ereignis, Ref, Akteur, SHAenv— Umgebungsvariablenjobundsteps— Status vorheriger Arbeitenrunner— 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 istalways()— wird unabhängig vom Ergebnis ausgeführtcancelled()— 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: ./logsJob-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.shMehrere 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.shJob-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_OUTPUTBedingungen 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.
ifsteuert die Ausführung von Schritten und Jobs anhand von Ausdrücken- Statusfunktionen wie
failure()undalways()überschreiben das Überspringen nach einem Fehler needserstellt Reihenfolgen und Fan-in-Muster- Job-
outputsliefern 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
- Matrix-Builds für mehrere Umgebungen
- Abhängigkeiten für mehr Geschwindigkeit cachen
- Wiederverwendbare Workflows und Actions
- Bedingte Ausführung und Job-Abhängigkeiten