Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

概要

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を使えば良さそうですね。

microad
データとテクノロジーをかけ合わせたマーケティングプラットフォームを提供する会社です。
https://www.microad.co.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした