シェルは一度決める。必要ならステップごとに変える
ワークフローがシェルを宣言すると、全ステップがそれを引き継ぎます。指定しない場合は PowerShell、pwsh、cmd.exe の順に選ばれるため、あるマシンで書いたワークフローが別のマシンでも予測どおりに動きます。
- シェルは文字列でも配列でも書けます。-NoProfile のような引数のクォート問題は配列形式で避けられます
- ステップは出力を名前付き変数に取り込み、後続のステップや実行条件から読めます
- preconditions がその値でステップを制御するので、サービスが実際に停止しているときだけ再起動します
# 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