Mastodonの自動アップデート

Mastodonのインスタンスを管理する上での負担の一つはアップデートなわけだけど、これを自動化した話。

Travis CIでCron Jobを動かすことにしたんだけど、ローカルではうまくいくのに、Travisのgitコマンドでは上手くいかないのでハマった。

Travisでは多分だけどcloneしたリポジトリの変更を許さない感じになっていて、upstreamをmeargeしたものがコミットできなかったのではないかなと。できなかったというより、変更はありませんみたいなこと言われるのでmergeしたものをデプロイ出来なかった。

これはスクリプトを書いて更にcloneした後、upstreamをmergeしてtokenを使ってpushし、それをHeroku Deployする感じで解決した。

ただし、この仕組、デプロイを2回やらないといけないことになるのだけど、1回目はcronで実行され、そこでupstreamがpushされるので2回目が回ってupstreamが取り込まれたものがDeployされる仕組み。1日に2回デプロイするのは無駄なので、この辺をなんとかしたいと思いつつ、良い方法が思い浮かばないので放置。

TravisのHerokuはどういった形でデプロイされているのだろうか、もしgit push https://$ENCRYPTED_API_KEY@heroku.com/$APP_NAME.git masterみたいな感じだったらスクリプトで条件つければいけそうな気がするのだけど、調べるのも面倒くさいので放置。