今Digdagを使用している環境がWindowsなので、digdagでPowerShellを実行したいという場合もあるかと思います。
デフォルトではPowerShellで実行されているように設定されていないため、以下の記事を参考に設定してみます。
使用するworkflowファイルは以下の記事で使用したサンプルを流用します。
www.capybara-engineer.com
実施作業
workflowファイル修正・実行
まずはPowerShell設定せずに実行してみます。
元のworkflowファイルは以下の内容になっています。
timezone: UTC +setup: echo>: start ${session_time} +disp_current_date: echo>: ${moment(session_time).utc().format('YYYY-MM-DD HH:mm:ss Z')} +repeat: for_each>: order: [first, second, third] animal: [dog, cat] _do: echo>: ${order} ${animal} _parallel: true +teardown: echo>: finish ${session_time}
これに以下のPowerShellのコマンドを実行する処理を追加します。
+date: sh>: Get-Date -Format G
修正したworkflowファイルをdigdagサーバにアップロードします。
# digdag push [digdagサーバ上のプロジェクト名] --project [ファイルが格納されているディレクトリ名]
修正したworkflowがサーバにアップロードされました。
これで実行してみます。
エラーで失敗しました。
workflowファイル修正(2回目)・実行
次はPowerShellで実行されるように設定してアップロードします。
timezone: UTC _export: sh: shell: ["powershell.exe", "-"] +date: sh>: Get-Date -Format G +setup: echo>: start ${session_time} +disp_current_date: echo>: ${moment(session_time).utc().format('YYYY-MM-DD HH:mm:ss Z')} +repeat: for_each>: order: [first, second, third] animal: [dog, cat] _do: echo>: ${order} ${animal} _parallel: true +teardown: echo>: finish ${session_time}
アップロードを確認して、実行してみます。
今度は成功しました。
digdagのログを見ても正常に実行されていることが確認できました。
感想及び所感
以下のドキュメントにある通り、デフォルトではShellコマンドとして実行されるため、Windows PowerShellで実行する場合はsh変数を再定義して、PowerShell.exeで実行されるように変更する必要があります。
docs.digdag.io
WindowsでDigdagを使用する場合は、コマンドをラップして実行する、といったことがあると思うので、覚えていて損はないと思います。