2015.03.27
Dockerで動くCI、drone.ioを試す
こんにちは、次世代システム研究室のN.O.です。前回はfuelphpの開発環境をDockerで構築しました。今回はテスト、リリースといったところをターゲットに進めていきたいと思います。
テストもリリースも全てDockerでと行きたいところですが、まずはお試しでオンラインの継続的インテグレーション(以下CI)サービスdrone.ioを利用してCI環境を整備したいと思います。
drone.ioとは
Continuous Integration · drone.io
drone.ioはオンラインのCIサービスです。以下の特徴があります。
- Dockerで構築されている
- ユーザのプロジェクトで必要となる環境もDockerで実行される
- オープンソース版がある。
Dockerが積極的に使用されていることから今回の取り組みにぴったりです。また、オープンソースで公開されていることからオンプレミスで実行することもできそうなので、良さそうだったらオープンソース版も試してみたいです。
今回は前回作成したfuelphpのサンプルを使用してdrone.ioのプロジェクトを作成したいと思います。
手順
サインアップ
オンラインのCIサービスではコードホスティングサービスのアカウントが必須となります。drone.ioも例外では無いのでGitHubやBitbucketのアカウントを取得しておきます。
Quickstart · drone.ioを参考にサインアップします。
プロジェクトを作る
今回はGitHubにソースコードを置きます。
レポジトリを選択します。
前回作成したfuelphpのサンプルを使いますので、プログラミング言語はPHPを選択します
ビルドのスクリプトを入力します。
プロジェクトの設定
Environment Variables
FUEL_ENV=test
Commands
mysql -u root -e 'create database fuel_test;' php composer.phar install php oil refine migrate:current php oil test
ビルド!
buildボタンを押すと手動で実行できますので、試しに押してみます。
この時はデータベース接続先の設定をしてないのでビルドに失敗してしまいました。
GitHubにpushしてみる
GitHubにpushすると自動的にBuildが走ります。
ソースコードにデーターベース接続先の修正を加えてpushします。
fuelphp_demo_app/fuel/app/config/test/db.php
<?php /** * The test database settings. These get merged with the global settings. * * This environment is primarily used by unit tests, to run on a controlled environment. */ return array( 'default' => array( 'connection' => array( 'dsn' => 'mysql:host=localhost;dbname=fuel_test', 'username' => 'root', ), ), );
fuelphp_demo_app/fuel/app/config/test/migrations.php
<?php return array( 'version' => array( 'app' => array( 'default' => array( 0 => '001_create_messages', ), ), 'module' => array( ), 'package' => array( ), ), 'folder' => 'migrations/', 'table' => 'migration', );
pushすると自動的にビルドが実行され、今度は成功しました。
push時の自動実行だとビルドの様子がわかりづらいので、手動でbuildボタンを押した様子がこちらになります。
ステータスバッチ
最後に
いかがでしたでしょうか?今回はCIのところまででリリースまでには至りませんでしたが、サービスとして提供されているdrone.ioは使ってみたところなかなかよさそうです。
今後はオープンソース版も試してみたいと思います。
次世代システム研究室では、グループ全体のインテグレーションを支援してくれるアーキテクトを募集しています。インフラ設計、構築経験者の方、次世代システム研究室にご興味を持って頂ける方がいらっしゃいましたら、ぜひ 募集職種一覧 からご応募をお願いします。
皆さんのご応募をお待ちしています。
グループ研究開発本部の最新情報をTwitterで配信中です。ぜひフォローください。
Follow @GMO_RD