drone.ioでjekyllのビルドテストを実行する

2013-09-02  /  CI/CDCMS自動化

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