Escolher a shell uma vez, ou por passo
Um workflow declara a sua shell e todos os passos a herdam. Sem declaração, o Dagu prefere PowerShell, depois pwsh, depois cmd.exe, por isso um workflow escrito numa máquina comporta-se de forma previsível noutra.
- A shell aceita uma string ou um array; a forma de array evita problemas de aspas com argumentos como -NoProfile
- Um passo captura a sua saída numa variável nomeada que passos seguintes e pré-condições conseguem ler
- As pré-condições condicionam um passo a esse valor, por isso o reinício só acontece se o serviço estiver mesmo parado
# 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