2023/5/10 Dataform 定期実行周りの動作
Cloud Workflows で通知するやつを作って運用していた
2023/5 に GA して UI 組込でついた
Release Configuration が compile パラメータ
スケジュールなしにするとボタンを押してコンパイル結果作れる
https://gyazo.com/027e2019c941feef3a76ef8e51164786
? コンパイル失敗するとどうなる?
CLI で失敗するやつでも成功扱いになる......
Release Configuration では pull する、までかな?
Release Configuration がコンパイルに失敗する状態なら、Release の時間になってもなんのログも出ない
Workflow Configuration のほうでエラーが表示される
https://gyazo.com/ead00c1be01b7ae13893026d7dd8d2b6Release が走った時に失敗表示になるが
? pull すら失敗したらどうなる?
Workflow Configuration は Release Configuration を参照して compile して run かな?
動作確認のため cron を 1分後に設定して待つ... みたいな体験久々
? 最新の compile 結果が使われる?
そうっぽい
? コンパイル結果がない時は?
Release Configuration の cron 設定してないなら
最初に設定した段階でコンパイルされたものが使われ続けそう
ここの cron は pull → compile 相当かな?
? release configuration compile が 成功 → 失敗 の時どうなる?
最新が失敗しているから止まるのか、最新の成功している compile が実行されるのか
まだみてないけど多分止まる(コンパイルにコケる)
これを UI 以外で知るすべ無いかも? 困る
? 実態は Scheduler & Workflow?
そんなことなさそう、Dataform から設定してもリソースは出てこない
Scheduler の費用にカウントされないなら、bigquery を経由する無料 cron として使えそう
? 既に実行済みのコンパイル結果なら実行されない??
気のせい
Workflow Configuration の cron を1分先にして2回スルーされたから、3分先にしたらうまくいった
? API はある?
? 通知はどうする?
今の所しくみはない
ログには出るだろうし Logging → PubSub → Slack かなあ
Eventarc いければ使ってみたい
まだなさそ
RelaseConfig は何もログを出力しない??
監査ログの CreateReleaseConfig & UpdateReleaseConfig ぐらいは出すが...
定期実行はログ出る
code:invocation.json
{
"insertId": "1709ua6b24",
"jsonPayload": {
"workflowInvocationId": "1683679080-e27f5cba-03fa-4f91-ada9-8227a86f0ab2",
"workflowConfigId": "main",
"@type": "type.googleapis.com/google.cloud.dataform.logging.v1.WorkflowInvocationCompletionLogEntry",
"terminalState": "SUCCEEDED",
"releaseConfigId": "main"
},
"resource": {
"type": "dataform.googleapis.com/Repository",
"labels": {
"resource_container": "744005832574",
"location": "asia-east1",
"repository_id": "dataform-playground"
}
},
"timestamp": "2023-05-10T00:38:09.432108546Z",
"severity": "INFO",
"logName": "projects/pokutuna-playground/logs/dataform.googleapis.com%2Fworkflow_invocation_completion",
"receiveTimestamp": "2023-05-10T00:38:09.672106896Z"
}
コンパイルできるけど実行すると失敗する状態にしてみる
現実ではよくある
Workflow Configurations は成功、Workflow Execution Log には失敗が残る
code:invocation_failure.json
{
"insertId": "1709ua6b4h",
"jsonPayload": {
"terminalState": "FAILED",
"workflowInvocationId": "1683743400-fd0f462a-2726-4673-989a-3b0715d9db88",
"workflowConfigId": "run-failure",
"@type": "type.googleapis.com/google.cloud.dataform.logging.v1.WorkflowInvocationCompletionLogEntry",
"releaseConfigId": "run-failure"
},
"resource": {
"type": "dataform.googleapis.com/Repository",
"labels": {
"repository_id": "dataform-playground",
"location": "asia-east1",
"resource_container": "744005832574"
}
},
"timestamp": "2023-05-10T18:30:09.260723129Z",
"severity": "ERROR",
"logName": "projects/pokutuna-playground/logs/dataform.googleapis.com%2Fworkflow_invocation_completion",
"receiveTimestamp": "2023-05-10T18:30:10.261627117Z"
}
この UI 微妙すぎ
https://gyazo.com/91290538e6246272f6b11fa9498c0c5f
Asia/Tokyo でも Tokyoでも JSTでも +9 でも日本が出てこない
日本語入力にして 日本 と打つと国の選択モードになって 日本 が選べる
日本を選んでそして 1つしかない JST を選ぶ...