継続的インテグレーションの過去・現在・そして未来...
TRANSCRIPT
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の歴史 •過去 •現在 •未来
ご清聴ありがとうございました