ども、この記事はまったく完走できそうな気がしないHeroku Advent Calendar 2014の一発目です。(^^;
いや~、どうなるんでしょうね、これ。5、6日なら頑張ろうかなという気もするけど、20日は無理っすよ。。。
中旬はSFハッカソンとかもあるし、終盤までバトンが繋がったらそこから先はちょっとがんばります。(かもしれません。)
さて、そんなこんなの一発目のネタですが、GitHub Syncです。
本当は別のネタも考えてたんですが、数日前にA氏のつぶやいていたこの新機能がなかなか興味深かったのでとりあげてみます。
★ GitHub Syncとは
その名の通りHerokuとGitHubを同期させる機能です。
HerokuがGitHubのOAuthクライアントとなってGitHubに対してあれやこれやの操作を行います。
★ 下準備
GitHub Syncはまだlabsのベータ機能なので、使用するためにはまず以下のコマンドをたたく必要があります。
heroku labs:enable github-sync
User Featureなのでアカウントで一度有効化すればすべてのアプリケーションで使用できるようになります。
★ Dashboard
GitHub Syncを有効にするとHeroku DashboardのCodeタブに以下のような設定画面が表示されるようになります。
画面を見るとできることはほとんど一目瞭然なんですが、設定したGitHubリポジトリに対して以下の操作が行えます。
1、 任意のブランチからの手動デブロイ
この画面から任意のGitHubリポジトリ上の任意のブランチを選択してデプロイすることができます。
といっても、これは全くメインのFeatureではないので多分使うことはないです。(^^;
2、自動デプロイ
指定のブランチに対してpushやmergeが行われた際に自動的にデプロイを行うように設定できます。
ちなみにHerokuへのgit pushのフックとは異なり、ここでのフックは非同期です。
git push自体は何も設定していない場合と同様にすぐに終了し、その後に非同期でデプロイが実行されます。Scalaアプリで試したところデプロイには10分程度かかりました。(Scalaのコンパイルが遅いせいですけど。。。)
デプロイの成否はDashboardのActivityタブで見ることができます。
OAuthでリポジトリにアクセスしているのでPrivateリポジトリも問題ないはずです。
3、PullRequest時に毎回新規アプリを作成
これ、試してみたところ実はまだ動いてないようなのですが。。。
PullRequestを作るたびに自動で新しいHerokuアプリケーションを作成して、そこにPullReuqestの内容をデプロイするというかなりとんでもない機能です。(^^;
作成するアプリケーションはapp.jsonを参照するので、そこに使用するAddonや環境変数の情報を書いておけばそれらも自動的に設定されます。
ただ、DB等を使用する場合を考えた場合、この場合のapp.jsonの設定では「親アプリの設定値を引き継ぐ」ということができないと実質的には使えない気がします。
app.jsonにはgeneratorという書式があるので、それを拡張すれば割と簡単にできるとは思うのですが。。。。
まぁ当面成り行きを見守りたいと思います。
4、リリースの差分をGitHub上のDiff画面で見られる
これはひょっとしたら前からできてたのかもしれませんが。。。
Activityページの各リリースの行に前回リリースとのDiffを表示するGitHub画面へのリンクが追加されます。(PullRequestでおなじみのコミットAとコミットBを比較するあの画面です。)
はっきり言って便利です。GitHubでコード管理しているプロジェクトであれば、全部自動で設定して欲しいと思うくらいのレベル(^^;
まだ出たばかりのベータ昨日なのでPullRequest Syncが動いてないなど、怪しい部分もありますが、こういうのは時間の問題で直ると思うのであんまり気にしなくて良いです。
labsだからと躊躇せずにHerokuとGitHubを使っている人は全員使った方が良いと思います。
□□□□
Advent Calendar、初日からバトンが途切れるのもあれなので、明日も小西が連投します。