このエントリーをはてなブックマークに追加

drone.ioで継続的インテグレーション

継続的インテグレーション(CI)といえば、github +Travis CIが有名ですが、Travis CIはgithubしか使えません。

ということで、bitbucket他が使えて自由度が高くてしかも安い、というDrone.ioをご紹介します。

特長

簡単に言うと、drone.ioは以下の特長があります。

  1. github, bitbucket, Google Codeと連携可能
  2. build scriptで柔軟なbuild
  3. 環境変数を設定できるため、AWS_SECRET_KEYなども設定可能
  4. Dart, go, Groovyなども含む多彩な言語に対応
  5. Herokuやdotcloudにdeployまで対応。sshも使えちゃう
  6. publicなら完全無料。privateリポジトリも$5から

では、もう少し深く解説していきます。

github, bitbucket, Google Codeと連携可能

前述のとおり、Travis CIはgithubとしか連携していませんが、drone.ioはbitbucketとGoogle Codeにも対応しています。

特にbitbucketはprivateリポジトリが作りたい放題ですし、mercurialとgitの両方に対応していますので、おすすめです。

設定も、

  1. 対象となるサービスを選ぶ
  2. リポジトリを選ぶ
  3. 言語を選ぶ
  4. build scriptを書く

で完了の簡単さ。

build scriptで柔軟なbuild

drone.ioはbuildの仕方を build scriptで設定します。このスクリプトはプロジェクトの管理画面から設定します。管理者以外にはみえません。

はっきり言ってわりと何でもできちゃいますし、後述の環境変数設定と組み合わせるとより応用が広がります。

ただ、これはコミュニティ的にはマイナス面もあって、build scriptが外から見えないため、「どうやって書けばいいか」という知見を共有できないんですね。

これはbuild scriptを公開リポジトリに置くことで回避は出来ますけど、わざわざそうするメリットもないわけで…悩ましいところです。

環境変数を設定できるため、AWS_SECRET_KEYなども設定可能

Travis CIでは.travis.ymlというファイルを置くことでbuildの設定をできます。これはつまり、publicリポジトリだと設定が世界に大公開となる、ということです。

drone.ioは環境変数を管理画面から設定出来ます。これは管理者(とdrone.ioの人)以外は見ることが出来ません。

環境変数にパスワードやAWS_SECRET_KEYなどを書いておいて、build scriptはリポジトリに置いて実行する、ということが簡単にできます。

Travis CIでもEncryption keysという機能があるので同じことはできますが、いちいち暗号化するのはめんどくさいですね。

Dart, go, Groovyなども含む多彩な言語に対応

C, C++, Dart, Go, Hsakell, Groovy, Java, Node.js, PHP, Python, Ruby,Scalaと、多彩な言語をカバーしています。

というか、drone.io自体がgo言語でできていたりします。

Erlangがないのがとても残念ですが…

なお、DBとしては、MySQL, PostgreSQL, MongoDB, Redis, Memcacheが使えます。

Herokuやdotcloudにdeployまで対応。sshも使えちゃう

deploymentを設定しておくと、buildの最後に実行してくれて、deployができちゃいます。Heroku、dotcloud、appenginは事前に設定があるので、keyを登録してリポジトリを指定するだけで、勝手にdeployまでやってくれます。

また、sshという設定も出来ます。こいつはremote pathとremote commandを設定出きるので、はっきり言ってなんでもできちゃいます。

ドキュメントにはこういうdeploy scriptが例としてあげられています。

#stop nginx
/usr/bin/nginx -s stop

# remove existing app
rm -rf /www/myapp

# copy your app to the deployment directory
mkdir /www/myapp
cp -pr /home/ubuntu/temp/* /www/myapp

# start nginx back up
/usr/bin/nginx -s start

sshの設定は、authorized_keys にkeyを追加するだけです。

publicなら完全無料。privateリポジトリも$5から

publicリポジトリを使うのであれば、完全無料です。以前はbuild回数に制限があったようですが、今はないようです。

privateリポジトリを使いたいのであれば、この金額です。

  • starter ($5/月) -- 1 リポジトリ
  • small ($25) -- 5 リポジトリ
  • medium ($50) -- 10 リポジトリ
  • large ($100) -- 20 リポジトリ

Travis CIはPrivateリポジトリは使えないみたいですね。

Circle CIというのがあるようですが、1リポジトリで$19とdrone.ioより高いです。

警告

注意! 2013年6月現在、 starter planが廃止され、smallからになってます。残念。

まとめ

ということで、すさまじく自由度が高いdrone.ioです。

みなさん、drone.ioを使うといいですよ!そして、お金を払って存続させましょう!