2016-01-07(木) [長年日記]
■ tDiary (のmasterブランチが) Herokuに直接デプロイ可能になった
もう1年近くまえ、tDiaryをHerokuボタンでデプロイ可能にしたんだけど、あれはそれ用に特殊な設定をしたherokuブランチのことだった。これはこれで良かったんだけど、通常プルリクエストはmasterブランチに対してなされるので、それをHeroku上でテストしようとするとなかなか面倒だった。
で、@machuがその「特殊な設定」をあらかじめやってくれるtDiaryのbuildpackを書いてくれ、おかげでmasterブランチでそのままデプロイ可能になった。すごい!!
これで、tdiary-coreにプルリクエストが来ると:
- (自動的に)Travis-CIでテストが走って、
- (自動的に)Herokuに専用のtDiaryがデプロイされ、
- 問題なければプルリクエストをmergeすることで(自動的に)Heroku上の開発用tDiaryが最新化される
という流れができるようになった。この流れを可視化するようにHeroku上にPipelineも整備した(下図)。なんかモダンじゃね? なんといっても手元にテスト環境がなくても開発できるぞ。感動や。
で、今後新しいtDiaryインスタンスをHeroku上に作る場合はtDiary.orgやGitHub上のリポジトリにあるHerokuボタンをポチっとして必要事項を入力するだけでよくなったんだけど、以前herokuブランチで作成した日記をこの仕組みに乗せないといけない。
まずはHeroku上のtDiaryを運用するで有効になったsystem_updateプラグインでtDiaryを最新化する。実はこれで利用するブランチがherokuブランチからmasterブランチに切り替わっている。このままだと必要なBuildpackが有効になっていなくてエラーになるので、以下のコマンドでこれを切り替える(コマンドからじゃないとできないっぽいのが残念):
heroku buildpacks:set https://github.com/tdiary/heroku-buildpack-tdiary.git -a 【対象のApp名】
(herokuコマンドはgemから入れることができる。ex. 「gem install heroku」)
続いてHerokuのdashboardで当該Appを開き、「Manual deploy」からmasterブランチをデプロイする。これで動くはず。
あとは「Automatic deploys」の対象ブランチをherokuからmasterに変えておけば、以後はmasterブランチを対象にsystem_updateプラグインが動くはずである。手元のテスト用Appはこれで移行できている。