Deno Deploy を git integration に戻した

Deno Deploy を git integration に戻した

前回 GitHub Actionsに移行したが、その後おかしな挙動が続いたのでgit integrationに戻した。

起きた問題

previewとの2重起動疑惑

GitHub Actions移行後もcronがpreview modeで動いているような挙動があった。ドキュメントには「Deno cronはpreview modeで実行されない」と書かれているが、実態が怪しい。

Deno KVに is_preview フラグを持たせて実験したところ、やはりpreviewっぽい環境で動作していることが示唆された。

プレビューモードで起動しているように見えるログ
プレビューモードで起動しているように見えるログ

新機能がpreviewでしか動いていない

追加した新しいcronが動作しない問題が発生。--prod フラグをつけてデプロイしたはずなのに、productionのインスタンスに反映されていない可能性が浮上した(未調査)。

試しにgit integrationに戻したところ、新機能分のcronが未実行状態に戻るという挙動があった。これはつまり、GitHub Actions期間中はpreviewのインスタンスで動いており、production側は実は古いままだったのでは、という仮説につながる。

cli経由でのdeploy後のcronの状態
cli経由でのdeploy後のcronの状態
git integrationに戻したらcronの実行完了状態が戻った
git integrationに戻したらcronの実行完了状態が戻った

結論

Deno Deployの内部挙動はブラックボックスが多く、これ以上の調査が困難と判断してgit integrationに戻した。

--prod フラグをつけていても、実際にproductionとして動作しているかはDeno Deploy側の挙動に依存する。cronの実行状況など直接確認できる手段が限られており、問題の切り分けに時間がかかりすぎると判断した。

教訓

bot運用でDeno Deployを使うなら、preview deploymentを完全に無効化できるかを事前に確認しておくべきだった。git integrationでpreviewを切れない制約がある以上、そもそも今回の構成との相性が悪かったのかもしれない。