Die Shell einmal wählen, bei Bedarf je Schritt
Ein Workflow deklariert seine Shell und alle Schritte erben sie. Ohne Angabe bevorzugt Dagu PowerShell, dann pwsh, dann cmd.exe, sodass ein auf einer Maschine geschriebener Workflow sich auf einer anderen vorhersagbar verhält.
- Die Shell akzeptiert einen String oder ein Array; die Array-Form vermeidet Quoting-Probleme bei Argumenten wie -NoProfile
- Ein Schritt fängt seine Ausgabe in einer benannten Variable auf, die spätere Schritte und Vorbedingungen lesen können
- Vorbedingungen steuern einen Schritt über diesen Wert, sodass ein Neustart nur erfolgt, wenn der Dienst wirklich gestoppt ist
# service-health.yaml
schedule: "*/15 * * * *"
max_active_runs: 1
shell: powershell -NoProfile
steps:
- id: check_service
run: |
(Get-Service -Name 'MyAppSvc').Status
output: SVC_STATUS
- id: restart_if_stopped
run: Restart-Service -Name 'MyAppSvc'
depends: check_service
preconditions:
- condition: "${SVC_STATUS}"
expected: "Stopped"
retry_policy:
limit: 2
interval_sec: 30
mail_on:
failure: true