継続的インテグレーションの過去・現在・そして未来...

37
2015/09/26 Seasar Conference 2015 Tomonari NAKAMURA 継続的インテグレーションの過去・現在・そして未来 ~ヌーラボの事例と共に考える~ https://www.flickr.com/photos/24354425@N03/13148984463/

Upload: ikikko-nakamura

Post on 16-Apr-2017

11.540 views

Category:

Technology


1 download

TRANSCRIPT

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

2015/09/26 Seasar Conference 2015 Tomonari NAKAMURA

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

https://www.flickr.com/photos/24354425@N03/13148984463/

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

アジェンダ•自己紹介 •ヌーラボにおけるCIの歴史 •過去 •現在 •未来

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

自己紹介•名前:中村知成 ( @ikikko ) •所属 • •      ユーザ会 •推しメン:さっしー

月9にエキストラで 登場したみたい

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

in ヌーラボ

•プロジェクトマネージャ •アプリ寄りだけどインフラ面も

•Jenkinsやビルド環境の整備

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

アジェンダ•自己紹介 •ヌーラボにおけるCIの歴史 •過去 •現在 •未来

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

CIに関する年表

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

2009年

• cactusmanさんによるHudsonの紹介

http://www.slideshare.net/cactusman/hudsonoss

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

2010年•Hudson勉強会の発端

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

2010年

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

2011年

http://gihyo.jp/dev/clip/01/orangenews/vol61/0004

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

•いくどかの勉強会・ユーザカンファレンス2010~2015年

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

CIに関する年表

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

~ 2012年•CIサーバはあったけど、メンテが追いついていなかった

•ビルドに時間がかかる(1時間近く) • DBスキーマの変更などにより失敗する • テストがこけてても後回しにされて、まとめて修正されがち

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

2012年•チームに参画と同時に仕切り直し • テストがこけたら即座に対応 • 新しいサーバを調達して、ビルド時間短縮 • CI番長として、ビルドエラーが起きたら担当者にpushする役割

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

2013 ~ 2014年•徐々に適用範囲を拡大していく • ステージ・ベータ環境への継続的デリバリ • 必要なタイミングでスレーブを自動起動 • ansible / serverspecでインフラ部分もCI

詳しくは http://www.slideshare.net/

ikikko/nulabaws

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

2013 ~ 2014年•徐々に適用範囲を拡大していく • ChatOpsを導入して、オペレーションの経過や結果をより手軽に共有

詳しくは http://www.slideshare.net/ikikko/devopschat-ops

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

アジェンダ•自己紹介 •ヌーラボにおけるCIの歴史 •過去 •現在 •未来

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

現在取り組んでいること•プルリクエストベースCI •ビルド環境のコード化

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

プルリクエストベースCI•プルリクエストが追加されて、コードレビューがしやすくなった

•レビューと合わせて、CIでのビルド結果も判断材料に含める https://nulab-inc.com/ja/blog/backlog/

backlog-pull-request/

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

Jenkinsの設定~

プルリクエスト用の 特別なブランチを指定

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

プルリクエスト画面

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

ビルド環境のコード化1. プルリクエストベースCIの実践 2. ビルドに必要なスレーブ数増加 3. 各スレーブに対して毎回手動設定は大変

4. ビルド環境をコード化・自動化

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

ビルド環境のコード化

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

ビルド環境のコード化

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

•スレーブ起動時にインストールJenkins EC2 Pluginの設定

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

•Dockerコンテナ上でテスト実行各ジョブごとの設定

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

•Dockerfileの内容各ジョブごとの設定

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

アジェンダ•自己紹介 •ヌーラボにおけるCIの歴史 •過去 •現在 •未来

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

CI as a Serviceの普及•Jenkinsを自前運用していくコストが高い

•設定の複雑化に伴って生まれた、Jenkins職人の排除

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

運用コストが高い•Jenkinsでもある程度は対応可能 •EC2 Pluginなどを活用して、必要なときに手軽にスレーブ構築など

•それすらも辛ければ、全部外部サービスに頼るという選択肢も

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

設定の複雑化への対処•設定のコード化 •Workflow Plugin •DotCi ( GitHub連携のプラグイン )画面上から設定するのではなく、.travis.yml や circle.yml のように、コードとして設定を記述する

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

CIツールの振り返り

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

ヌーラボでは•今のところ全移行はコストが高そう •がっつりフローを組んでる •自作プラグインを作って運用している • Dockernizeを進めていれば、移行するときにも無駄にならないはず

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

一般的には•SaaSも選択肢にはなってきている •適材適所で使い分け •ヌーラボでも、GitHubで公開しているライブラリはTravisを利用

Travisと社内Jenkinsの連携例 https://nulab-inc.com/ja/blog/backlog/

api-v2-functional-test/

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

アジェンダ•自己紹介 •ヌーラボにおけるCIの歴史 •過去 •現在 •未来

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

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