Jenkinsカンファレンス - CookpadのJenkins活用事例
結論から言うと...CIに対する文化や規律が重要.
実際にはJenkinsを導入するだけでなく、CIに対する意識向上が重要
- バグがでたらすぐ直す。バグがある間のコミットはもはや無意味。
- 失敗の通知には5W1Hを含むと当事者意識が湧く。
- ビルドがこわれたおじさんでいい。呼びかけることが重要。それが文化になる。文化は組織の根底に流れるもの。ローマは一日にして成らず。
最終目的はCIの先にあるユーザーにいち早く触ってもらうことである。
- クオリティを安定させ堅牢性をあげ、デリバリーの属人化をなくし、最終的に誰でもデプロイできる状態に持っていくためのツール.
- リリースサイクルを短くしよう。
クックパッドにおけるJenkinsの活用
speaker : 高井さん
サービス概要
- 5000万人
- 180万レシピ
主な開発言語
ruby 2.0 + rails4.1 + amazon web service
もちろんモバイルはnative
Jenkinsの使い方
ふつうにつかってる
ふつうとは...
やるべきことをやっているという意味。今回紹介するのはその、"やるべきこと"
Jenkinsではなくおむきんすというのをつかってる.(どうでもいい)
- AWS上にmaster
- スレーブが6node 夜間は2node
おもな構成
- puppet / Itamae (ここはよく聞いてなかった.)
- ラベルでnodeを振り分けている。rubyの環境などによって依存関係が違ったりするので、環境に応じたnodeにジョブが振られる.
- クラウドとオンプレミス環境
なぜ, CIしているか
- 毎日の料理を楽しみにする.
- THE LEAN STARTUP PROCESS のサイクルを早く回すため.
CIの価値
- 意図しない変更を予防できる
- 再現可能で自動化されている
- リソースや情報を集約できる この3つが重要.
1. 意図しない変更を予防できる
- ターンアラウンドを短くする
- 分散化
- remote_spec
- rrrspec triple rspec.
- すぐに失敗を伝える
2. 再現可能で自動化されている
- CIは基本的にデリバリーをゴールとしている
- CIはいつでもデリバリー可能にしておく。それが継続的デリバリー.
- Jenkinsでやってること
- test
- asset
- deploy シンボリックリンクを書き換えてデプロイ.
- hubot
3. リソースや情報を集約できる
- デプロイスクリプト
- カバレッチ
- モニタリング
- CIを見ればプロジェクトの状況がわかる.(デプロイ履歴, Assetの最終更新, 誰がデプロイした?, テストのカバレッチ状況.8)
- growthforecastでテストの似たリング
後で調べる単語
- ci-slave-docker
- micro services 小さいエンドポイントでサービスを提供する
- growthforecast