drone.ioでjekyllのビルドテストを実行する
github pages でjekyllを使っていて何かエラーがあると、以下のようなメールが届く。
The page build failed with the following error:
page build failed
でも、Gmailはそんなに頻繁に見てないし、携帯に通知が来た方がいいなと思ったんで、drone.ioでjekyllのビルドを実行して、結果をアラートするようにした。
drone.io
Continuous Integration · drone.io
Travis CI みたいなサービス。プライベートのプロジェクトでなければ無料で無制限(ビルド数、プロジェクト数)に使える。登録はGitHubアカウントとかに対応してるので、簡単に使い始められる。
github pages に使っているリポジトリもオープンなので、drone.io のプロジェクトも始めやすい。
プロジェクトを作る
画面キャプチャしてみた。
setup-drone.io-project :: Copy
Jenkinsなどと比べると設定がすっきりしてる印象。プロジェクトを作成する途中で言語を選択するので、不要な設定項目が現れないからかな。機能が物足りないと感じることはあるかもしれないが。
build スクリプト
プロジェクトに設定したbuild スクリプトは以下のようにした。ビルドするだけなので、DBや環境変数の設定もいらない。
bundle install --binstubs
bin/jekyll build --safe --trace
jekyll で build サブコマンドを実行してエラーがあったら、実行ステータスが0以外になるようなので、そのままテスト結果として使う。trace オプションを使えばエラー時のトレースも出る。
GitHub と drone.io を連携する
ビルドスクリプトを設定したので、自動的にテストが実行されるように設定する必要がある。
drone.io は GitHub の webhook に対応しているので、コミットをトリガーにテストが走るようにする。
Integrating with Github · drone.io
↑この手順に従って設定すると良いみたいなんだけど、ちょっと記述が古いのか、WebHook のURLが見当たらない…。
とりあえず良くわかんないまま、GitHubのService Hooksのページに行くと、すでにURLが設定されていた。GitHubアカウントでdrone.ioのログインをしてるからかもしれない。
GitHub上でTestHookして、drone.io側でビルドが始まることを確認できたらOK。これで、コミットのタイミングで自動的にビルドが走るようになった。
drone.io はS3にデプロイしたりもできるようなので、上手く使えば他のサイトもJekyllで運用できるかも知れない。
このサイトのプロジェクトURL
https://drone.io/github.com/kawaken/kawaken.github.io