mrtc0.log

tail -f mrtc0.log

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 ボタンができる。便利。

f:id:mrtc0:20160111221909p:plain

環境変数

今回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

するとデプロイ画面で環境変数を設定できるようになる。

f:id:mrtc0:20160111222748p:plain

まとめ

リポジトリ直下にapp.jsonを配置するだけで簡単にデプロイできるようになって便利。

参考