[2019-01-19-1] で Heroku の Hobby Dyno ($7/mo) を使い始めたので、Heroku CI も導入してみました。

やり方はこのとおり簡単です。

  1. pipeline を作成し、app と紐付ける
  2. Heroku CI を有効にし、GitHub とも連携する
  3. app.json を作成する

1. pipeline を作成し、App と紐付ける

Heroku Dev Center > Pipelines を参考にして作るだけです。

2. Heroku CI を有効にし、GitHub とも連携する

pipeline 右上の Enable CI ボタンをクリックすると有効になります。

Enable CI

3. app.json を作成する

今回は hadolint で Dockerfile を、shellcheck でシェルスクリプトの lint をするだけのテストを書きました。

このような素朴な設定で動きます。

test-setup と test のコンテキストは同じで、例えば test-setup で作ったファイルは test でも使えます。あと、App の環境変数も参照できますし、テスト用の環境変数を app.json に追加することも出来ます。

デフォルトでは Performance-M Dyno が使われます。Parallel Test も出来るらしいです。

詳しくは Heroku Dev Center > Heroku CI をどうぞ。

CI の結果

このように、pipeline の Tests タブで一覧が見られます。

Heroku CI Overview

注意事項

https://devcenter.heroku.com/articles/heroku-ci#docker-deploys

Currently, it is not possible to use Heroku CI to test container builds.

まだ Docker には対応していません。

このブログは Docker on Heroku で動いていますが、テストではリポジトリの中身は展開されているので困りませんでした。場合によっては困るのかな?

現在の問題点

ずばり料金ですね。

1 pipeline あたり $10/month 課金されるほかに、テストの実行にも Dyno の料金がかかるようです。

今回は 5 日ほど使って、50 回テストを実行してこの料金でした。$10/month は日割になっていますね。

Heroku CI Usage

このブログの CI には割高なので、CircleCI あたりに乗り換える予定です。

CircleCI は 1 コンテナまで無料で使えるので、積極的に使う理由にはならない気がします。強いて言えば、利用サービスが増えないことと、複雑なことが出来ないことが Heroku CI のメリットかも。