以前以下のような記事を書きました。
www.capybara-engineer.com
最近digdagの新しいバージョンv0.10.0でdigdag serverに認証を設定する記事を書いたのですが、その環境でPowershellを実行したところ何故かうまく実行できなかったので、今回はそれを調査してみました。
www.capybara-engineer.com
【実施環境】
Cloud:AWS
OS:Windows Server 2019
IIS:Version 10.0.17763.1
digdag:0.10.0
PSVersion:5.1.17763.1007
※前回同様ある程度は過去使用した設定を流用しています
結論
v0.10.0でpowershellは実行できる
ただし、個別で改修・ビルドすることが必要
digdag serverで実行できるかは未確認
実施作業
workflow実行(1回目)
まずはv0.10.0のdigdagを使って起動されたserverに対して、過去の記事で使用した以下のworkflowファイルをアップロードして、実行できるか試してみます。
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}
アップロードしました。RUNボタンから実行します。
エラーで失敗しました。
ログを見ると以下のように出力されていました。
2021-04-14 12:10:14.630 +0000 [ERROR] (0075@[0:test]+sample+date) io.digdag.core.agent.OperatorManager: Task failed with unexpected error: Command failed with code -196608 java.lang.RuntimeException: Command failed with code -196608 at io.digdag.standards.operator.ShOperatorFactory$ShOperator.runCode(ShOperatorFactory.java:121) at io.digdag.standards.operator.ShOperatorFactory$ShOperator.runTask(ShOperatorFactory.java:88) at io.digdag.util.BaseOperator.run(BaseOperator.java:35) at io.digdag.core.agent.OperatorManager.callExecutor(OperatorManager.java:365) at io.digdag.server.metrics.DigdagTimedMethodInterceptor.invokeMain(DigdagTimedMethodInterceptor.java:58) at io.digdag.server.metrics.DigdagTimedMethodInterceptor.invoke(DigdagTimedMethodInterceptor.java:31) at io.digdag.core.agent.OperatorManager.runWithWorkspace(OperatorManager.java:298) at io.digdag.server.metrics.DigdagTimedMethodInterceptor.invokeMain(DigdagTimedMethodInterceptor.java:58) at io.digdag.server.metrics.DigdagTimedMethodInterceptor.invoke(DigdagTimedMethodInterceptor.java:31) at io.digdag.core.agent.OperatorManager.lambda$runWithHeartbeat$2(OperatorManager.java:151) at io.digdag.core.agent.ExtractArchiveWorkspaceManager.withExtractedArchive(ExtractArchiveWorkspaceManager.java:77) at io.digdag.core.agent.OperatorManager.runWithHeartbeat(OperatorManager.java:149) at io.digdag.server.metrics.DigdagTimedMethodInterceptor.invokeMain(DigdagTimedMethodInterceptor.java:58) at io.digdag.server.metrics.DigdagTimedMethodInterceptor.invoke(DigdagTimedMethodInterceptor.java:31) at io.digdag.core.agent.OperatorManager.run(OperatorManager.java:132) at io.digdag.server.metrics.DigdagTimedMethodInterceptor.invokeMain(DigdagTimedMethodInterceptor.java:58) at io.digdag.server.metrics.DigdagTimedMethodInterceptor.invoke(DigdagTimedMethodInterceptor.java:31) at io.digdag.core.agent.MultiThreadAgent.lambda$null$0(MultiThreadAgent.java:132) at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) at java.util.concurrent.FutureTask.run(Unknown Source) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source)
わかりにくいので他のログを調べてみると以下のような出力がされていました。
文字コードの関係で文字化けしていますが、パッと見る限りpowershellの-Command関係でエラーが出ているようです。
2021-04-14 12:10:12.937 +0000 [INFO] (0075@[0:test]+sample+date) io.digdag.core.agent.OperatorManager: sh>: Get-Date -Format G -Command p[^[Š'-' w肳ꂜB-Command ̂̑̈�gpł܂ PowerShell[.exe] [-PSConsoleFile <t@C> | -Version <o[W>] [-NoLogo] [-NoExit] [-Sta] [-Mta] [-NoProfile] [-NonInteractive] [-InputFormat {Text | XML}] [-OutputFormat {Text | XML}] [-WindowStyle <X^C>] [-EncodedCommand <Base64 GR[h̃R}h>] [-ConfigurationName < [-File <t@C pX> <� [-ExecutionPolicy < s|V[>] [-Command { - | <XNvg ubN> [-args <�z | <<R}h p[^[>] } ] PowerShell[.exe] -Help | -? | /?
原因調査1
powershellの-Commandを使用しているようなので、helpコマンドで説明を見てみます。
-Command PowerShell のコマンド プロンプトに入力された場合と同様に、指定されたコマ ンド (および任意のパラメーター) を実行します。NoExit が指定されていない場 合は、そのまま終了します。Command の値には、"-"、文字列、またはスクリプト ブロックを指定できます。 Command の値が "-" の場合、コマンド テキストは標準入力から読み込まれます。 Command の値がスクリプト ブロックの場合は、スクリプト ブロックを中かっこ ({}) で囲む必要があります。スクリプト ブロックを指定できるのは、Windows PowerShell で PowerShell.exe を実行している場合だけです。スクリプト ブロ ックの結果は、ライブ オブジェクトではなく逆シリアル化 XML オブジェクトと して親シェルに返されます。 Command の値が文字列の場合、Command はコマンド内で最後のパラメーターである 必要があります。コマンドの後に入力された文字は、コマンド引数として解釈さ れるためです。 Windows PowerShell コマンドを実行する文字列を記述するには、次の形式を使用します。 "& {<コマンド>}" 引用符によりこれが文字列であることを示し、呼び出し演算子 (&) によりコマ ンドが実行されます。 -Help, -?, /? このメッセージを表示します。Windows PowerShell で PowerShell.exe のコマン ドを入力する場合、コマンド パラメーターの前にスラッシュ (/) ではなくハイ フン (-) を入力してください。Cmd.exe では、ハイフンまたはスラッシュのいずれかを使用できます。 例 PowerShell -PSConsoleFile SqlSnapIn.Psc1 PowerShell -version 2.0 -NoLogo -InputFormat text -OutputFormat XML PowerShell -ConfigurationName AdminRoles PowerShell -Command {Get-EventLog -LogName security} PowerShell -Command "& {Get-EventLog -LogName security}" # -EncodedCommand パラメーターを使用する場合: $command = 'dir "c:\program files" ' $bytes = [System.Text.Encoding]::Unicode.GetBytes($command) $encodedCommand = [Convert]::ToBase64String($bytes) powershell.exe -encodedCommand $encodedCommand
この中で注目するべきはこの部分
Command の値が "-" の場合、コマンド テキストは標準入力から読み込まれます。
workflowファイルのPowershellの設定を見ると以下のようにハイフンとPowershellのEXEファイルを指定しており、恐らくですが[Powershell.exe -Command - (sh>で指定したコマンド)]という風にコマンドが作成されているのではないでしょうか。
shell: ["powershell.exe", "-"]
試しに上記の構成でコマンドを作成してコマンドプロンプトで実行してみます。
>Powershell.exe -Command - Get-Date -Format G -Command パラメーターで '-' が指定されました。-Command のその他の引数は使用できません。 PowerShell[.exe] [-PSConsoleFile <ファイル> | -Version <バージョン>] [-NoLogo] [-NoExit] [-Sta] [-Mta] [-NoProfile] [-NonInteractive] [-InputFormat {Text | XML}] [-OutputFormat {Text | XML}] [-WindowStyle <スタイル>] [-EncodedCommand <Base64 エンコードのコマンド>] [-ConfigurationName <文字列>] [-File <ファイル パス> <引数>] [-ExecutionPolicy <実行ポリシー>] [-Command { - | <スクリプト ブロック> [-args <引数の配列>] | <文字列> [<コマンド パラメーター>] } ] PowerShell[.exe] -Help | -? | /?
以下のエラーが発生し、見る限り文字化けしていたエラー出力と同じようです。
workflow実行(2回目)
workflowの設定でハイフンをPowershellに設定したことでエラーとなっているようなので、ハイフンを削除して再度実行してみます。
ハイフンを削除したworkflowファイルをアップロードして実行します。
途中コマンドプロンプトが立ち上がりましたが、実行としては正常終了しています。
ログを見てみると、一見うまくいっているように思えますが、echoしている処理は正常に動作してstartから始まるメッセージが表示されていますが、shで実行されたGet-Dataコマンドは実行されていないのか、何も表示されていません。
原因調査2
今度はサーバーのログから追ってみます。
サーバーのログは起動時にpropertiesファイルで以下のように設定されているので、まずはそのログを見てみます。
log-server.type=local log-server.local.path=C:/opt/digdag/tasklog log-server.local.split_size=10240
以下がその出力されたタスクログですが、これではほとんど情報がないので、どこまで処理が進んでどこでエラーが発生したのかが追えません。
2021-04-14 13:42:55.615 +0000 [DEBUG] (0075@[0:test]+sample+date) io.digdag.core.agent.OperatorManager: evaluated config: {"project_id":1,"session_id":54,"session_time":"2021-04-14T13:42:54+00:00","attempt_id":54,"task_name":"+sample+date","last_executed_session_time":"","session_uuid":"f98cd477-778b-40af-9f4e-ca0c48772150","timezone":"UTC"} 2021-04-14 13:42:55.624 +0000 [INFO] (0075@[0:test]+sample+date) io.digdag.core.agent.OperatorManager: sh>: Get-Date -Format G 2021-04-14 13:42:55.666 +0000 [DEBUG] (0075@[0:test]+sample+date) io.digdag.standards.command.EcsCommandExecutor: Fall back to DockerCommandExecutor: Parameter 'agent.command_executor.ecs.name' is required but not set -Command パラメーターで '-' が指定されました。-Command のその他の引数は使用できません。 PowerShell[.exe] [-PSConsoleFile <ファイル> | -Version <バージョン>] [-NoLogo] [-NoExit] [-Sta] [-Mta] [-NoProfile] [-NonInteractive] [-InputFormat {Text | XML}] [-OutputFormat {Text | XML}] [-WindowStyle <スタイル>] [-EncodedCommand <Base64 エンコードのコマンド>] [-ConfigurationName <文字列>] [-File <ファイル パス> <引数>] [-ExecutionPolicy <実行ポリシー>] [-Command { - | <スクリプト ブロック> [-args <引数の配列>] | <文字列> [<コマンド パラメーター>] } ] PowerShell[.exe] -Help | -? | /?
そこで試しにサーバーの起動時に-l debugをつけて実行し、エラー時にコンソールに出力されたログを確認してみます。
> digdag server -c .\server\server.properties -l debug > .\serverlog\server.log
サーバーログならもう少し詳細なログが見れるかと思いましたが、出力された内容はタスクログを特に変わりませんでした。
2021-04-15 00:22:41 +0000 [DEBUG] (workflow-executor-0) io.digdag.core.workflow.WorkflowExecutor: Queuing task of attempt_id=55: id=233 +sample+date 2021-04-15 00:22:41 +0000 [DEBUG] (0075@[0:test]+sample+date) io.digdag.core.agent.OperatorManager: evaluated config: {"project_id":1,"session_id":55,"session_time":"2021-04-15T00:22:41+00:00","attempt_id":55,"task_name":"+sample+date","last_executed_session_time":"","session_uuid":"2470c9d2-434e-42b1-8495-d41fd7cda733","timezone":"UTC"} 2021-04-15 00:22:41 +0000 [INFO] (0075@[0:test]+sample+date) io.digdag.core.agent.OperatorManager: sh>: Get-Date -Format G 2021-04-15 00:22:41 +0000 [DEBUG] (0075@[0:test]+sample+date) io.digdag.standards.command.EcsCommandExecutor: Fall back to DockerCommandExecutor: Parameter 'agent.command_executor.ecs.name' is required but not set -Command パラメーターで '-' が指定されました。-Command のその他の引数は使用できません。 PowerShell[.exe] [-PSConsoleFile <ファイル> | -Version <バージョン>] [-NoLogo] [-NoExit] [-Sta] [-Mta] [-NoProfile] [-NonInteractive] [-InputFormat {Text | XML}] [-OutputFormat {Text | XML}] [-WindowStyle <スタイル>] [-EncodedCommand <Base64 エンコードのコマンド>] [-ConfigurationName <文字列>] [-File <ファイル パス> <引数>] [-ExecutionPolicy <実行ポリシー>] [-Command { - | <スクリプト ブロック> [-args <引数の配列>] | <文字列> [<コマンド パラメーター>] } ] PowerShell[.exe] -Help | -? | /?
原因調査3
次は実際のロジックから追ってみます。
エラーログを見る限り、以下の処理でエラーが発生しているようです。
digdag/ShOperatorFactory.java at master · treasure-data/digdag · GitHub
その中で気になるのはここの部分です。
digdag/ShOperatorFactory.java at 42ea7cb71270957ea6424c2df88dd7c65d248789 · treasure-data/digdag · GitHub
ここでは一時ディレクトリ配下にrunner.shを作成し、スクリプトの中身を書き込んでいるようです。
そのrunner.shは以下の処理でパスをコマンドライン変数に設定され、最終的にはProcessBuilderのstart()で実行されているようでした。
digdag/ShOperatorFactory.java at 42ea7cb71270957ea6424c2df88dd7c65d248789 · treasure-data/digdag · GitHub
流石にGitHubから追うのは限界だったため、git cloneして動かしながら設定されるパラメータを確認してみました。
その中で実際に渡されたリクエストパラメータが以下になります。
2021-04-15 14:23:15 +0000 [INFO] (0020@[0:default]+sample+task): commandRequest: CommandRequest{workingDirectory=, environments={task_name=+sample+task, timezone=UTC, session_date=2020-10-28, _type=sh, session_id=1, session_date_compact=20201028, session_time=2020-10-28T00:00:00+00:00, last_executed_session_unixtime=, session_tz_offset=+0000, last_executed_session_date_compact=, last_executed_session_tz_offset=+0000, sh={"shell":["powershell.exe"]}, last_executed_session_time=, project_id=1, shell=["powershell.exe"], attempt_id=1, _command=C:\opt\embulk\test.ps1, session_unixtime=1603843200, last_executed_session_local_time=, session_uuid=3a57b059-22cc-4e1d-885a-21cf1b77ff7b, session_local_time=2020-10-28 00:00:00, last_executed_session_date=}, commandLine=[powershell.exe, .digdag\tmp\digdag-sh-3-9923564380058935100\runner.sh], ioDirectory=.digdag\tmp\digdag-sh-3-9923564380058935100}
ProcessBuilderにはリクエストのcommandLineに設定されている内容がパラメータとして渡されているようなので、実行されているコマンドは以下でした。
※検証の中でハイフンなしPowershellを指定して実行しています
commandLine=[powershell.exe, .digdag\tmp\digdag-sh-3-9923564380058935100\runner.sh]
これを見る限りdigdag workflowで指定した実行したいスクリプトの部分がrunner.shに書き込まれているため、Windowsで動かしたい場合は正常に動かないようになっているようです。
また、workflowでハイフンを設定した場合は以下のようにcommandLineに設定されるため、同じく正常に動きませんでした。
commandLine=[powershell.exe, -, .digdag\tmp\digdag-sh-2-15881680611311792268\runner.sh],
Windowsで実行する方法
じゃあ新しいバージョンのdigdagをWindowsのPowershellで動かす方法がないのかといわれると、一応手間はかかりますが、ないことはないです。
というのも、今回Widdowsで動かないのはrunner.shがbash前提で書かれているからなので、powershell.exeが指定された場合はrunner.batという名前になるように処理を修正することで動かすことが可能です。
digdag/ShOperatorFactory.java at 42ea7cb71270957ea6424c2df88dd7c65d248789 · treasure-data/digdag · GitHub
実際に自分のPCで改修・ビルドして実行した結果がこちらです。
> digdag-0.10.0_bat run .\sample.dig -a Java HotSpot(TM) 64-Bit Server VM warning: Option AggressiveOpts was deprecated in version 11.0 and will likely be removed in a future release. 2021-04-16 04:42:08 +0000: Digdag v0.10.0 WARNING: An illegal reflective access operation has occurred WARNING: Illegal reflective access by com.google.inject.internal.cglib.core.$ReflectUtils$1 (file:/C:/bin/digdag-0.10.0_bat.bat) to method java.lang.ClassLoader.defineClass(java.lang.String,byte[],int,int,java.security.ProtectionDomain) WARNING: Please consider reporting this to the maintainers of com.google.inject.internal.cglib.core.$ReflectUtils$1 WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations WARNING: All illegal access operations will be denied in a future release 2021-04-16 04:42:10 +0000 [WARN] (main): Reusing the last session time 2020-10-28T00:00:00+00:00. 2021-04-16 04:42:10 +0000 [INFO] (main): Using session C:\work\digdag\sample\.digdag\status\20201028T000000+0000. 2021-04-16 04:42:10 +0000 [INFO] (main): Starting a new session project id=1 workflow name=sample session_time=2020-10-28T00:00:00+00:00 2021-04-16 04:42:10 +0000 [INFO] (0020@[0:default]+sample+task): sh>: C:\opt\embulk\test.ps1 2021-04-16 04:42:10 +0000 [INFO] (0020@[0:default]+sample+task): shell: [powershell.exe] 2021-04-16 04:42:10 +0000 [INFO] (0020@[0:default]+sample+task): cmdline: com.google.common.collect.ImmutableList$Builder@7ea72d3f 2021-04-16 04:42:10 +0000 [INFO] (0020@[0:default]+sample+task): shScript: C:\opt\embulk\test.ps1 2021-04-16 04:42:10 +0000 [INFO] (0020@[0:default]+sample+task): commandContext: CommandContext{localProjectPath=C:\work\digdag\sample, taskRequest=TaskRequest{siteId=0, projectId=1, projectName=default, workflowName=sample, workflowDefinitionId=4, revision=2021-04-16T04:42:10.423937800Z, taskId=2, attemptId=1, sessionId=1, taskName=+sample+task, lockId=s1, timeZone=UTC, sessionUuid=d300fd2a-0046-4167-b91d-fac24706582d, sessionTime=2020-10-28T00:00:00Z, createdAt=2021-04-16T04:42:10.847966900Z, isCancelRequested=false, localConfig={"sh>":"C:\\opt\\embulk\\test.ps1"}, config={"sh":{"shell":["powershell.exe"]},"timezone":"UTC","session_uuid":"d300fd2a-0046-4167-b91d-fac24706582d","session_time":"2020-10-28T00:00:00+00:00","session_id":1,"session_date":"2020-10-28","session_date_compact":"20201028","session_local_time":"2020-10-28 00:00:00","session_tz_offset":"+0000","session_unixtime":1603843200,"last_executed_session_time":"","last_executed_session_date":"","last_executed_session_date_compact":"","last_executed_session_local_time":"","last_executed_session_tz_offset":"+0000","last_executed_session_unixtime":"","project_id":1,"attempt_id":1,"task_name":"+sample+task","sh>":"C:\\opt\\embulk\\test.ps1","_type":"sh","_command":"C:\\opt\\embulk\\test.ps1","shell":["powershell.exe"]}, lastStateParams={}}} 2021-04-16 04:42:11 +0000 [INFO] (0020@[0:default]+sample+task): commandRequest: CommandRequest{workingDirectory=, environments={task_name=+sample+task, timezone=UTC, session_date=2020-10-28, _type=sh, session_id=1, session_date_compact=20201028, session_time=2020-10-28T00:00:00+00:00, last_executed_session_unixtime=, session_tz_offset=+0000, last_executed_session_date_compact=, last_executed_session_tz_offset=+0000, sh={"shell":["powershell.exe"]}, last_executed_session_time=, project_id=1, shell=["powershell.exe"], attempt_id=1, _command=C:\opt\embulk\test.ps1, session_unixtime=1603843200, last_executed_session_local_time=, session_uuid=d300fd2a-0046-4167-b91d-fac24706582d, session_local_time=2020-10-28 00:00:00, last_executed_session_date=}, commandLine=[powershell.exe, .digdag\tmp\digdag-sh-2-2203504326677734601\runner.bat], ioDirectory=.digdag\tmp\digdag-sh-2-2203504326677734601} C:\work\digdag\sample>C:\opt\embulk\test.ps1 test 2021-04-16 04:42:13 +0000 [INFO] (0020@[0:default]+sample+setup): echo>: start 2020-10-28T00:00:00+00:00 start 2020-10-28T00:00:00+00:00 2021-04-16 04:42:14 +0000 [INFO] (0020@[0:default]+sample+disp_current_date): echo>: 2020-10-28 00:00:00 +00:00 2020-10-28 00:00:00 +00:00 2021-04-16 04:42:14 +0000 [INFO] (0020@[0:default]+sample+repeat): for_each>: {order=[first, second, third], animal=[dog, cat]} 2021-04-16 04:42:14 +0000 [INFO] (0020@[0:default]+sample+repeat^sub+for-0=order=0=first&1=animal=0=dog): echo>: first dog first dog 2021-04-16 04:42:14 +0000 [INFO] (0025@[0:default]+sample+repeat^sub+for-0=order=2=third&1=animal=1=cat): echo>: third cat 2021-04-16 04:42:14 +0000 [INFO] (0022@[0:default]+sample+repeat^sub+for-0=order=1=second&1=animal=0=dog): echo>: second dog third cat 2021-04-16 04:42:14 +0000 [INFO] (0024@[0:default]+sample+repeat^sub+for-0=order=2=third&1=animal=0=dog): echo>: third dog second dog third dog 2021-04-16 04:42:14 +0000 [INFO] (0021@[0:default]+sample+repeat^sub+for-0=order=0=first&1=animal=1=cat): echo>: first cat first cat 2021-04-16 04:42:14 +0000 [INFO] (0023@[0:default]+sample+repeat^sub+for-0=order=1=second&1=animal=1=cat): echo>: second cat second cat 2021-04-16 04:42:14 +0000 [INFO] (0023@[0:default]+sample+teardown): echo>: finish 2020-10-28T00:00:00+00:00 finish 2020-10-28T00:00:00+00:00 Success. Task state is saved at C:\work\digdag\sample\.digdag\status\20201028T000000+0000 directory. * Use --session <daily | hourly | "yyyy-MM-dd[ HH:mm:ss]"> to not reuse the last session time. * Use --rerun, --start +NAME, or --goal +NAME argument to rerun skipped tasks.
commandLineパラメータを見るとファイル名がrunner.batになっており、処理がエラーになっていないことが確認できました。
commandLine=[powershell.exe, .digdag\tmp\digdag-sh-2-2203504326677734601\runner.bat]
自分でビルドしたdigdagをサーバーで実行するところまでは確認できていないのですが、コマンドラインから実行するのであればこれで問題ないと思います。
2021/4/16追記
twitterでrunner.shはps1に書き換えても大丈夫かご質問いただいたので試してみました。
結果としてはPowershell使用するのであれば、runner.shはps1に拡張子を変更しても問題ありません。
実際に実行したログを貼っておきます。
> digdag-0.10.0_ps1 run sample.dig -a Java HotSpot(TM) 64-Bit Server VM warning: Option AggressiveOpts was deprecated in version 11.0 and will likely be removed in a future release. 2021-04-16 07:02:53 +0000: Digdag v0.10.0 WARNING: An illegal reflective access operation has occurred WARNING: Illegal reflective access by com.google.inject.internal.cglib.core.$ReflectUtils$1 (file:/C:/bin/digdag-0.10.0_ps1.bat) to method java.lang.ClassLoader.defineClass(java.lang.String,byte[],int,int,java.security.ProtectionDomain) WARNING: Please consider reporting this to the maintainers of com.google.inject.internal.cglib.core.$ReflectUtils$1 WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations WARNING: All illegal access operations will be denied in a future release 2021-04-16 07:03:01 +0000 [WARN] (main): Reusing the last session time 2020-10-28T00:00:00+00:00. 2021-04-16 07:03:01 +0000 [INFO] (main): Using session C:\work\digdag\sample\.digdag\status\20201028T000000+0000. 2021-04-16 07:03:01 +0000 [INFO] (main): Starting a new session project id=1 workflow name=sample session_time=2020-10-28T00:00:00+00:00 2021-04-16 07:03:07 +0000 [INFO] (0020@[0:default]+sample+task): sh>: C:\opt\embulk\test.ps1 2021-04-16 07:03:07 +0000 [INFO] (0020@[0:default]+sample+task): shell: [powershell.exe] 2021-04-16 07:03:07 +0000 [INFO] (0020@[0:default]+sample+task): cmdline: com.google.common.collect.ImmutableList$Builder@44f182a4 2021-04-16 07:03:07 +0000 [INFO] (0020@[0:default]+sample+task): shScript: C:\opt\embulk\test.ps1 2021-04-16 07:03:07 +0000 [INFO] (0020@[0:default]+sample+task): commandContext: CommandContext{localProjectPath=C:\work\digdag\sample, taskRequest=TaskRequest{siteId=0, projectId=1, projectName=default, workflowName=sample, workflowDefinitionId=4, revision=2021-04-16T07:03:01.523818400Z, taskId=2, attemptId=1, sessionId=1, taskName=+sample+task, lockId=s1, timeZone=UTC, sessionUuid=e73879ed-965e-4654-b39b-2dc30cfaa0d1, sessionTime=2020-10-28T00:00:00Z, createdAt=2021-04-16T07:03:07.329184800Z, isCancelRequested=false, localConfig={"sh>":"C:\\opt\\embulk\\test.ps1"}, config={"sh":{"shell":["powershell.exe"]},"timezone":"UTC","session_uuid":"e73879ed-965e-4654-b39b-2dc30cfaa0d1","session_time":"2020-10-28T00:00:00+00:00","session_id":1,"session_date":"2020-10-28","session_date_compact":"20201028","session_local_time":"2020-10-28 00:00:00","session_tz_offset":"+0000","session_unixtime":1603843200,"last_executed_session_time":"","last_executed_session_date":"","last_executed_session_date_compact":"","last_executed_session_local_time":"","last_executed_session_tz_offset":"+0000","last_executed_session_unixtime":"","project_id":1,"attempt_id":1,"task_name":"+sample+task","sh>":"C:\\opt\\embulk\\test.ps1","_type":"sh","_command":"C:\\opt\\embulk\\test.ps1","shell":["powershell.exe"]}, lastStateParams={}}} 2021-04-16 07:03:07 +0000 [INFO] (0020@[0:default]+sample+task): commandRequest: CommandRequest{workingDirectory=, environments={task_name=+sample+task, timezone=UTC, session_date=2020-10-28, _type=sh, session_id=1, session_date_compact=20201028, session_time=2020-10-28T00:00:00+00:00, last_executed_session_unixtime=, session_tz_offset=+0000, last_executed_session_date_compact=, last_executed_session_tz_offset=+0000, sh={"shell":["powershell.exe"]}, last_executed_session_time=, project_id=1, shell=["powershell.exe"], attempt_id=1, _command=C:\opt\embulk\test.ps1, session_unixtime=1603843200, last_executed_session_local_time=, session_uuid=e73879ed-965e-4654-b39b-2dc30cfaa0d1, session_local_time=2020-10-28 00:00:00, last_executed_session_date=}, commandLine=[powershell.exe, .digdag\tmp\digdag-sh-2-5275376036508499872\runner.ps1], ioDirectory=.digdag\tmp\digdag-sh-2-5275376036508499872} test 2021-04-16 07:03:17 +0000 [INFO] (0020@[0:default]+sample+setup): echo>: start 2020-10-28T00:00:00+00:00 start 2020-10-28T00:00:00+00:00 2021-04-16 07:03:17 +0000 [INFO] (0020@[0:default]+sample+disp_current_date): echo>: 2020-10-28 00:00:00 +00:00 2020-10-28 00:00:00 +00:00 2021-04-16 07:03:18 +0000 [INFO] (0020@[0:default]+sample+repeat): for_each>: {order=[first, second, third], animal=[dog, cat]} 2021-04-16 07:03:18 +0000 [INFO] (0020@[0:default]+sample+repeat^sub+for-0=order=0=first&1=animal=0=dog): echo>: first dog first dog 2021-04-16 07:03:18 +0000 [INFO] (0025@[0:default]+sample+repeat^sub+for-0=order=2=third&1=animal=1=cat): echo>: third cat third cat 2021-04-16 07:03:18 +0000 [INFO] (0024@[0:default]+sample+repeat^sub+for-0=order=2=third&1=animal=0=dog): echo>: third dog third dog 2021-04-16 07:03:18 +0000 [INFO] (0023@[0:default]+sample+repeat^sub+for-0=order=1=second&1=animal=1=cat): echo>: second cat second cat 2021-04-16 07:03:18 +0000 [INFO] (0022@[0:default]+sample+repeat^sub+for-0=order=1=second&1=animal=0=dog): echo>: second dog second dog 2021-04-16 07:03:19 +0000 [INFO] (0021@[0:default]+sample+repeat^sub+for-0=order=0=first&1=animal=1=cat): echo>: first cat first cat 2021-04-16 07:03:19 +0000 [INFO] (0021@[0:default]+sample+teardown): echo>: finish 2020-10-28T00:00:00+00:00 finish 2020-10-28T00:00:00+00:00 Success. Task state is saved at C:\work\digdag\sample\.digdag\status\20201028T000000+0000 directory. * Use --session <daily | hourly | "yyyy-MM-dd[ HH:mm:ss]"> to not reuse the last session time. * Use --rerun, --start +NAME, or --goal +NAME argument to rerun skipped tasks.
runner.ps1になっていることが確認できます。
commandLine=[powershell.exe, .digdag\tmp\digdag-sh-2-5275376036508499872\runner.ps1]