ドリコムjenkins勉強会資料
DESCRIPTION
ドリコム社内で行ったJenkins勉強会の資料です。TRANSCRIPT
Copyright Drecom Co., Ltd. All Rights Reserved.
ドリコムJenkins勉強会
2013/04/17 @sue445
Copyright Drecom Co., Ltd. All Rights Reserved.
自己紹介
@sue445● drecomで社内ツールとか作ってます
● TDDBC(TDDのワークショップ)でよくTAをやってます
● 自称:サザエヴァンジェリスト● 他称:歩くJenkins● コミュニティ
○ 渋谷.rb○ 新宿.rb○ TDD BootCamp○ appengine ja night
Copyright Drecom Co., Ltd. All Rights Reserved.
【宣伝】あずにゃんペロペロ〜
http://azusaar.appspot.com/
Copyright Drecom Co., Ltd. All Rights Reserved.
2011: Mashup Awards 7 授賞式
http://mashupawards.tumblr.com/post/15436635038/12-11-ma7-4-3
Copyright Drecom Co., Ltd. All Rights Reserved.
Note
ドリコムでは意識の高い人達がアプリ単位でJenkinsを乱立させてるので、これはあくまで社内ぼっちPJでの運用例です。
Copyright Drecom Co., Ltd. All Rights Reserved.
Agenda
1. What is Jenkins?2. Run Jenkins3. "Ruby on Rails" on Jenkins
(Tips and Plugins)
Copyright Drecom Co., Ltd. All Rights Reserved.
What is Jenkins?
● CI(Continuous Integration = 継続的インテグレーション)ツールの1つ
● gitやsvnのリポジトリにコミットされた時に自動的にサーバ上でテストを実行して結果をメールやチャットなどで表示する
● cronの擬人化● JenkinsはJavaで作られています(重要)
http://jenkins-ci.org/
Copyright Drecom Co., Ltd. All Rights Reserved.
イメージ図
push pull
ResultUser
Repository
Jenkins
Copyright Drecom Co., Ltd. All Rights Reserved.
Run Jenkins (Simple Pattern)
jenkins.warをダウンロードして
java -jar jenkins.war
Copyright Drecom Co., Ltd. All Rights Reserved.
Run Jenkins (Recommendation)
Server Instance
FrontServer AppServer
jenkins.war
参考URL: http://sue445.hatenablog.com/entry/2013/01/16/232443
Copyright Drecom Co., Ltd. All Rights Reserved.
Other CI Services
● cloudbees (http://www.cloudbees.com/)○ Jenkinsの中の人が作ってるクラウドサービス○ Jenkinsのアップデートも勝手にやってくれる○ 制限はあるけど無料で使える
■ 無料枠だけだとバンドルされてるpluginしか使えないのが痛い
● Travis.ci (http://travis-ci.org/)○ 無料で使える○ Jenkinsに比べたら自由度は低いけどgithubとの連携は
楽■ public repositoryに公開してるならこれ使うのが一番
いいと思う○ drecomだとactiverecord-turntableや
android_market_apiで利用
Copyright Drecom Co., Ltd. All Rights Reserved.
"Ruby on Rails" on Jenkins
● 去年出版されたので比較的情報が新しい
● Rails, Android, Perlの章で構成
● Jenkins+Railsの組み合わせで体系的に書いてあるのはこの本くらいしかないと思う
Copyright Drecom Co., Ltd. All Rights Reserved.
Ruby 1.9と2.0を同時にビルドする
既存のジョブをコピーしてrvmで2.0.0を利用
Copyright Drecom Co., Ltd. All Rights Reserved.
1.9.3のタブ
Copyright Drecom Co., Ltd. All Rights Reserved.
2.0.0のタブ
Copyright Drecom Co., Ltd. All Rights Reserved.
メリット/デメリット
メリット● 常に1.9系と2.0系でビルドしていればいつでも
2.0に移行できる○ 白金台のC社には負けてられない!
デメリット● 同じジョブをコピーしてるので設定を変えたい時
はその分書きなおす必要がある
Copyright Drecom Co., Ltd. All Rights Reserved.
Caution!
データベース名を変えずに複数同時にテストするとDBロックで落ちることがあるw
対策(やった)● 1つずつビルドを走らせる(アクティブなアプリが少なけばあ
り)a. ジョブの同時実行数を1つにする(今の運用)b. 1.9のビルドが成功した後に2.0の方をビルド
対策(考えただけで実践はしてない)● rubyのバージョンから動的にデータベース名を作る● 別サーバでSlaveとして動かす
Copyright Drecom Co., Ltd. All Rights Reserved.
When. Travis.ci
ymlに追記するだけでOK
Copyright Drecom Co., Ltd. All Rights Reserved.
iPadをXFD化
JSONでAPIが提供されてるのでjsでサクッと作れる
https://github.com/sue445/jenkins_xfd
Copyright Drecom Co., Ltd. All Rights Reserved.
Custom Job Icon Plugin
ホスティング先によってアイコンを使い分け
Copyright Drecom Co., Ltd. All Rights Reserved.
個人Jenkins
apple-touch-icon.pngを使うとよさげ
Copyright Drecom Co., Ltd. All Rights Reserved.
Slow Testのプロット
http://sue445.hatenablog.com/entry/2013/03/17/015836
total timeworst top
Copyright Drecom Co., Ltd. All Rights Reserved.
embeddable-build-status plugin
READMEとかにビルドステータスを表示
Copyright Drecom Co., Ltd. All Rights Reserved.
Ruby metrics plugin
Copyright Drecom Co., Ltd. All Rights Reserved.
DRY Plugin DRY = Don't Repeat Yourself(重複排除の原則)
Copyright Drecom Co., Ltd. All Rights Reserved.
Beer Plugin
Copyright Drecom Co., Ltd. All Rights Reserved.
Jenkinsを1から入れた感想
● JenkinsはpluginやAPIが豊富なのでいろいろ集計できて楽しい
● アプリを作り始める時からJenkinsでビルドしておくことでコードの成長を視覚化できる
● ローカルでテストを動かすよりサーバでテストを動かした方が早く終わる
● デプロイ前にJenkins先生にチェックしてもらうことで安心感が生まれる
○ テストがダメなら本番でもダメ!● サーバにJenkinsを立てることでミドル周りの知識がだいぶついた
○ nginx, tomcat, IP制限, EC2やVPS契約etc
Copyright Drecom Co., Ltd. All Rights Reserved.
まとめ
● サクッとためしたいならtravis.ciかCouldbees● いろいろやりたくなったら自分でJenkinsを入れてみる