GiganticMinecraft / SeichiAssist-ExternalLib

ギガンティック☆整地鯖のSeichiAssist外部の構成要素(外部プラグインなど)に関する情報を集約、issue管理する為のリポジトリ
0 stars 2 forks source link

自動デプロイ化 #131

Open KisaragiEffective opened 1 year ago

KisaragiEffective commented 1 year ago

現状、本番サーバーへのコンフィグのデプロイはあたたかみのある手動コピーペーストで行う方法と手動でサーバーからGitHubに向かってoutgoing requestを発射する方法がある。前者は、多段SSHとユーザー切り替えを挟む必要があり、ダルい。後者はoutgoing requestが規制される動きがあるのと、PRがマージされてから反映までのラグができてしまう。

理想的にはPRがmasterブランチへマージされたとき、自動でデプロイされること、及び必要ならば各種プラグインのreloadコマンドを発行することが好ましいと考える。

kory33 commented 1 year ago

これ情報量があまりにも少ないんですけど、なんの話ですか?

KisaragiEffective commented 1 year ago

updated

kory33 commented 1 year ago

完全に理解しました

これまさにseichi_infra の方でやってる話なんで、やるならこのプロジェクトを進めたいですね (ちょっと最近忙しくて手が出せてないんですが…)。seichi_infra で提案しているアプローチは、Docker イメージに config を全部固めて、ArgoCD に StatefulSet の定義を乗せることで大体何とかなるんじゃねってやつです。

ちなみにプラグインリロードは全然やりたくなくて (onEnable() / onDisable() が二度呼ばれるとバグるプラグインがあっても全然不思議ではないし、プラグインによっては明示的に /reload 禁止してるはず)、やるなら一斉再起動ですね(もしくは 4:00 再起動のタイミングで config / plugin 設定を入れ替えるなど)。

seichi_infra で実施しようとしているアプローチで未解決な問題として「どう再起動タイミングを同期し、デフォルトですべての再起動を 4:00 に集めるか」みたいなのは依然としてあるんですが、それを実現するツールはまぁさすがにあるでしょうという見立てでいます。例えば、 GitHub 上のバージョン定義を single source of truth として、マージタイミングによってデプロイを制御するってのは一つの手ではあると思いますが、ArgoCD 上でもうちょっと確度が高いデプロイ制御ができるんじゃないかなと見ています。