LoginSignup
12
0

More than 3 years have passed since last update.

digdagの「echo>:」と「sh>: echo 」の違い

Posted at

概要

echo>:sh>: echoの挙動の違いについてです。
digdagのバージョンはv0.9.37です。

詳細

  • シークレットの変換
  • dockerコンテナでの実行

sh>: echoのみで可能です。

io.digdag.core.workflow.EchoOperatorFactoryio.digdag.core.workflow.ShOperatorFactoryの実装を見てもらえればすぐにわかると思います。
ShOperatorFactoryでそれぞれの処理を行なっている該当箇所は以下です。

●シークレット変換

String command = UserSecretTemplate.of(params.get("_command", String.class))
         .format(context.getSecrets());

●コンテナ実行

Process p = exec.start(workspace.getPath(), request, pb);

※execはCommandExecutorで、実装はDockerCommandExecutorです。

確認

では実際に動かして試してみましょう。

(1)シークレットの変換

secret.json
{ "secret_key": "abcde" }
sample.dig
+task1:
  echo>: ${secret:secret_key}

+task2:
  sh>: echo ${secret:secret_key}
digdag secrets --local --set @secret.json
digdag run sample.dig --session "2019-06-30 12:00:00"

実行結果

2019-07-01 12:12:11 +0900 [INFO] (0017@[0:default]+sample+task1): echo>: ${secret:secret_key}
${secret:secret_key}
2019-07-01 12:12:11 +0900 [INFO] (0017@[0:default]+sample+task2): sh>: echo ${secret:secret_key}
abcde

sh>: echoの場合だけ変換されていることが確認出来ます。

(2)dockerコンテナでの実行

sample2.dig
_export:
  docker:
    image: alpine:3.7

+task1:
  echo>: hoge

+task2:
  sh>: echo hoge

※ローカルにalpine:3.7のイメージが存在しない状態で実行

digdag run sample2.dig --session "2019-06-30 12:00:00"

実行結果

2019-07-01 12:12:11 +0900 [INFO] (0017@[0:default]+sample2+task1): echo>: hoge
hoge
2019-07-01 12:12:11 +0900 [INFO] (0017@[0:default]+sample2+task2): sh>: echo hoge
Unable to find image 'alpine:3.7' locally
3.7: Pulling from library/alpine
5d20c808ce19: Pulling fs layer
5d20c808ce19: Verifying Checksum
5d20c808ce19: Download complete
5d20c808ce19: Pull complete
Digest: sha256:8421d9a84432575381bfabd248f1eb56f3aa21d9d7cd2511583c68c9b7511d10
Status: Downloaded newer image for alpine:3.7
hoge

sh>: echoの場合だけイメージがダウンロードされているので、DockerCommandExecutorのstartメソッドでコンテナで実行する分岐に入っていることがわかります。

まとめ

ローカルでシークレットで設定した値の確認したい場合なんかはsh>: echoを使えば良さそうですね。

12
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
0