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を使うといいですよ!そして、お金を払って存続させましょ う!

Comments

comments powered by Disqus