Heroku Buttonを試す
Chatworkの期限切れタスクを毎朝通知するためにHerokuアプリを書いた。
AkkaどころかScalaも全然知らなかったし、Herokuも使ったことなかったけどとりあえず最低限動いてる。
mrt-k/akka-cwnotifier · GitHub
で、Heroku Buttonってのがあるらしい。
README.mdなどのドキュメントに設置すると、クリック1つでHerokuにデプロイできるらしい。すごい。
Creating a 'Deploy to Heroku' Button | Heroku Dev Center
設置するまでのメモを残しておく。
app.jsonを書く
リポジトリにapp.jsonが必要。
app.jsonの形式は app.json Schema | Heroku Dev Center に書いてある。
必須項目はないらしいけど、 name
description
logo
ぐらいは書いたほうがいいらしい。
{ "name": "akka-cwnotifier", "description": "The notice task of Chatwork", "repository": "https://github.com/mrt-k/akka-cwnotifier", "logo": "https://pbs.twimg.com/profile_images/673806204599054337/ANb_c1Yj.png", "keywords": ["scala", "akka", "chatwork"] }
logoはないので私のTwitterアイコンにした。
README.mdにHeroku Buttonを設置する
[![Deploy](https://www.herokucdn.com/deploy/button.png)](https://heroku.com/deploy?template=https://github.com/mrt-k/akka-cwnotifier)
また、GitHubのREADME.mdに設置するのであれば以下のようにtemplate=を指定しなくてもRefererから勝手にリポジトリ特定してやってくれるらしい。
[![Deploy](https://www.herokucdn.com/deploy/button.png)](https://heroku.com/deploy)
これだけで以下のように Deploy to Heroku ボタンができる。便利。
環境変数
今回Heroku Buttonを試したアプリにはChatworkのAPIキーなどを環境変数として設定する必要がある。
これもapp.jsonで設定する。
{ "name": "akka-cwnotifier", "description": "The notice task of Chatwork", "repository": "https://github.com/mrt-k/akka-cwnotifier", "logo": "https://pbs.twimg.com/profile_images/673806204599054337/ANb_c1Yj.png", "keywords": ["scala", "akka", "chatwork"], "env": { "API_KEY": { "description": "Chatwork API KEY" }, "ROOM_ID": { "description": "Destination room" } } }
descriptionに説明を書ける。
他にも "generator": "secret"
でランダムな文字列を自動生成できたり、 value
で初期値を設定できる。
デフォルトで全て必須扱いとなるが、 "required" : false
で任意扱いにできる。
app.json Schema | Heroku Dev Center
するとデプロイ画面で環境変数を設定できるようになる。
まとめ
リポジトリ直下にapp.jsonを配置するだけで簡単にデプロイできるようになって便利。