SlideShare a Scribd company logo
2015/09/26 Seasar Conference 2015
Tomonari NAKAMURA
継続的インテグレーションの過去・現在・そして未来
∼ヌーラボの事例と共に考える∼
https://www.flickr.com/photos/24354425@N03/13148984463/
アジェンダ
•自己紹介
•ヌーラボにおけるCIの歴史
•過去
•現在
•未来
自己紹介
•名前:中村知成 ( @ikikko )
•所属
•
•      ユーザ会
•推しメン:さっしー
月9にエキストラで
登場したみたい
継続的インテグレーションの過去・現在・そして未来 〜ヌーラボの事例と共に考える〜
in ヌーラボ
•プロジェクトマネージャ
•アプリ寄りだけどインフラ面も
•Jenkinsやビルド環境の整備
アジェンダ
•自己紹介
•ヌーラボにおけるCIの歴史
•過去
•現在
•未来
CIに関する年表
2009年
• cactusmanさんによるHudsonの紹介
http://www.slideshare.net/cactusman/hudsonoss
2010年
•Hudson勉強会の発端
2010年
2011年
http://gihyo.jp/dev/clip/01/orangenews/vol61/0004
•いくどかの勉強会・ユーザカンファレンス
2010 2015年
CIに関する年表
2012年
•CIサーバはあったけど、メンテが
追いついていなかった
•ビルドに時間がかかる(1時間近く)
• DBスキーマの変更などにより失敗する
• テストがこけてても後回しにされて、ま
とめて修正されがち
2012年
•チームに参画と同時に仕切り直し
• テストがこけたら即座に対応
• 新しいサーバを調達して、ビルド時間短縮
• CI番長として、ビルドエラーが起きたら担当
者にpushする役割
2013 2014年
•徐々に適用範囲を拡大していく
• ステージ・ベータ環境への継続的デリバリ
• 必要なタイミングでスレーブを自動起動
• ansible / serverspecでインフラ部分もCI
詳しくは
http://www.slideshare.net/
ikikko/nulabaws
2013 2014年
•徐々に適用範囲を拡大していく
• ChatOpsを導入して、オペレーションの経
過や結果をより手軽に共有
詳しくは
http://www.slideshare.net/
ikikko/devopschat-ops
アジェンダ
•自己紹介
•ヌーラボにおけるCIの歴史
•過去
•現在
•未来
現在取り組んでいること
•プルリクエストベースCI
•ビルド環境のコード化
プルリクエストベースCI
•プルリクエストが追加
されて、コードレビュー
がしやすくなった
•レビューと合わせて、
CIでのビルド結果も判
断材料に含める https://nulab-inc.com/ja/blog/backlog/
backlog-pull-request/
Jenkinsの設定∼
プルリクエスト用の
特別なブランチを指定
プルリクエスト画面
ビルド環境のコード化
1. プルリクエストベースCIの実践
2. ビルドに必要なスレーブ数増加
3. 各スレーブに対して毎回手動設
定は大変
4. ビルド環境をコード化・自動化
ビルド環境のコード化
ビルド環境のコード化
•スレーブ起動時にインストール
Jenkins EC2 Pluginの設定
•Dockerコンテナ上でテスト実行
各ジョブごとの設定
•Dockerfileの内容
各ジョブごとの設定
アジェンダ
•自己紹介
•ヌーラボにおけるCIの歴史
•過去
•現在
•未来
CI as a Serviceの普及
•Jenkinsを自前運用していくコスト
が高い
•設定の複雑化に伴って生まれた、
Jenkins職人の排除
運用コストが高い
•Jenkinsでもある程度は対応可能
•EC2 Pluginなどを活用して、必要なと
きに手軽にスレーブ構築など
•それすらも辛ければ、全部外部サー
ビスに頼るという選択肢も
設定の複雑化への対処
•設定のコード化
•Workflow Plugin
•DotCi ( GitHub連携のプラグイン )
画面上から設定するのではなく、.travis.yml や
circle.yml のように、コードとして設定を記述する
CIツールの振り返り
ヌーラボでは
•今のところ全移行はコストが高そう
•がっつりフローを組んでる
•自作プラグインを作って運用している
• Dockernizeを進めていれば、移行す
るときにも無駄にならないはず
一般的には
•SaaSも選択肢にはなってきている
•適材適所で使い分け
•ヌーラボでも、GitHubで公開している
ライブラリはTravisを利用
Travisと社内Jenkinsの連携例
https://nulab-inc.com/ja/blog/backlog/
api-v2-functional-test/
アジェンダ
•自己紹介
•ヌーラボにおけるCIの歴史
•過去
•現在
•未来
ご清聴ありがとうございました

More Related Content

継続的インテグレーションの過去・現在・そして未来 〜ヌーラボの事例と共に考える〜