中身の薄い『やってみた』シリーズですが、ご容赦を。
前回、BuildHiveについて書きましたが、Bitbucketのリポジトリには対応していなかったので、何か良いサービスは無いか探していたところ、職場でdrone.ioの話題があがったので、早速アクセスしてみました。
drone.ioとは?
- クラウドのCIサービスです。
- OSSのソースは無料、プライベートのリポジトリも50ビルドまでは無料のトライアルが使えます。
- ビジネス向け、エタープライズ向けもあるようです。
- https://github.com/drone/drone にdorone.ioのオープンソース版が公開されています。
- Docker上で起動するようです:) (今回こちらには触れません)
アカウントを作ります
GitHub/Google/Bitbucketのいずれかと認証を連携して、ログインを行います。
drone.ioの専用アカウントを作成するのでもOKです。
ビルドプロジェクトを作ります
基本は、GitHub/Google/Bitbucketのいずれかのリポジトリを選択する形になります。
- 自分がウォッチしているリポジトリも選べます。(リポジトリオーナーでなくても大丈夫!)
- Bitbucketを利用できるのは有り難いので、この記事ではBitbucketを例にします。
- リポジトリを選ぶと、次に、言語を選択する画面が出てきます。
- コードから自動判別するわけではなく、基本は自分で選択。
- rubyのソースであっても、pythonのテンプレートが選べたりします。
pythonの場合のひな形
pip install -r requirements.txt --use-mirrors
nosetests
Javaの場合のひな形
mvn install -q -DskipTests=true
mvn test
rubyの場合のひな形
bundle install
bundle exec rake
実のところ、テキストエリアが1つだけで、そこにShellスクリプトを書いて行くだけですので、うっかり言語を間違えたとしても、あとから修正できます。
また、言語のバージョンも結構細かく指定できます。
ビルドしてみます
上記の通り、設定は至ってシンプルです。
ビルドは手動もしくはリポジトリのコミットがフックとなって自動で実行されます。
ビルドのログもJenkinsと同じように確認できます。
ビルドが通ったら、代表的なっクラウドサービス上にデプロイができます。
ちなみに、大変シンプルなので、Jenkinsとはこんな違いがあります。
- Jenkinsのようなオプションやカスタムワークスペースはありません。
- パイプラインのような、ビルドプロジェクト間の関連づけはできません。
- 成果物の保存はできますが、ファイル数が多いと成果物をして認識される数に限りがあるため、zipなどにまとめて成果物とするほうが良さそうです。
また、ビルドについての制限もいくつかありますので、挙げておきます。
- 15分以上のビルドはできません。
- 成果物は5ファイルまで。それ以上はダウンロードできないので、zipなどでまとめる必要あり。
- また、10MBを超えてはダメ。
- ビルド通知は5名まで。
バッジが利用できます
ビルドのステータスアイコン/バッジが提供されていますので、リポジトリのWikiやREADMEに貼りつけることができます。
動かしてみての感想
Dev@Cloud, BuildHiveしか使ってみたことが無いのですが、気がついた点を記載しておきます。
- Dev@Cloud / BuildHive
- こちら2つはビルドボタンを押してからビルドが始まるまでに、少し待たないといけないことがあります。
- これは、綺麗な環境をマシンごと立ち上げたり、実行可能なノードが割当たるまでの待ちに当たります。
一方…。
- drone.ioの場合は、ノード待ち、ということは意識せず、すぐにビルドが始まります。
- Dockerコンテナを利用してビルド環境をすぐに提供できるようになっています。
- ブラウザテストも出来る模様!
- これはそのうち試してレポしてみます。
OpenSource版のdroneが出ています
さて、drone.io のブログで、Drone and Docker, Open Source CI というタイトルで、オープンソース版が公開されたという記事が出ました。
droneは仮想マシンからDockerの仕組みを利用して、ビルドの環境を提供しています。
まだ公開されたばかりで、これから機能が追加されて行くようですが、凄いですね!