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

Post on 16-Apr-2017

11540 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

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の歴史 •過去 •現在 •未来

ご清聴ありがとうございました

top related