ドリコムjenkins勉強会資料

28
Copyright Drecom Co., Ltd. All Rights Reserved. ドリコムJenkins勉強会 2013/04/17 @sue445

Upload: go-sueyoshi-aka-sue445

Post on 31-May-2015

6.406 views

Category:

Documents


9 download

DESCRIPTION

ドリコム社内で行ったJenkins勉強会の資料です。

TRANSCRIPT

Page 1: ドリコムJenkins勉強会資料

Copyright Drecom Co., Ltd. All Rights Reserved.

ドリコムJenkins勉強会

2013/04/17 @sue445

Page 2: ドリコムJenkins勉強会資料

Copyright Drecom Co., Ltd. All Rights Reserved.

自己紹介

@sue445● drecomで社内ツールとか作ってます

● TDDBC(TDDのワークショップ)でよくTAをやってます

● 自称:サザエヴァンジェリスト● 他称:歩くJenkins● コミュニティ

○ 渋谷.rb○ 新宿.rb○ TDD BootCamp○ appengine ja night

Page 3: ドリコムJenkins勉強会資料

Copyright Drecom Co., Ltd. All Rights Reserved.

【宣伝】あずにゃんペロペロ〜

http://azusaar.appspot.com/

Page 4: ドリコムJenkins勉強会資料

Copyright Drecom Co., Ltd. All Rights Reserved.

2011: Mashup Awards 7 授賞式

http://mashupawards.tumblr.com/post/15436635038/12-11-ma7-4-3

Page 5: ドリコムJenkins勉強会資料

Copyright Drecom Co., Ltd. All Rights Reserved.

Note

ドリコムでは意識の高い人達がアプリ単位でJenkinsを乱立させてるので、これはあくまで社内ぼっちPJでの運用例です。

Page 6: ドリコムJenkins勉強会資料

Copyright Drecom Co., Ltd. All Rights Reserved.

Agenda

1. What is Jenkins?2. Run Jenkins3. "Ruby on Rails" on Jenkins

(Tips and Plugins)

Page 7: ドリコムJenkins勉強会資料

Copyright Drecom Co., Ltd. All Rights Reserved.

What is Jenkins?

● CI(Continuous Integration = 継続的インテグレーション)ツールの1つ

● gitやsvnのリポジトリにコミットされた時に自動的にサーバ上でテストを実行して結果をメールやチャットなどで表示する

● cronの擬人化● JenkinsはJavaで作られています(重要)

http://jenkins-ci.org/

Page 8: ドリコムJenkins勉強会資料

Copyright Drecom Co., Ltd. All Rights Reserved.

イメージ図

push pull

ResultUser

Repository

Jenkins

Page 9: ドリコムJenkins勉強会資料

Copyright Drecom Co., Ltd. All Rights Reserved.

Run Jenkins (Simple Pattern)

jenkins.warをダウンロードして

java -jar jenkins.war

Page 10: ドリコムJenkins勉強会資料

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

Page 11: ドリコムJenkins勉強会資料

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で利用

Page 12: ドリコムJenkins勉強会資料

Copyright Drecom Co., Ltd. All Rights Reserved.

"Ruby on Rails" on Jenkins

● 去年出版されたので比較的情報が新しい

● Rails, Android, Perlの章で構成

● Jenkins+Railsの組み合わせで体系的に書いてあるのはこの本くらいしかないと思う

Page 13: ドリコムJenkins勉強会資料

Copyright Drecom Co., Ltd. All Rights Reserved.

Ruby 1.9と2.0を同時にビルドする

既存のジョブをコピーしてrvmで2.0.0を利用

Page 14: ドリコムJenkins勉強会資料

Copyright Drecom Co., Ltd. All Rights Reserved.

1.9.3のタブ

Page 15: ドリコムJenkins勉強会資料

Copyright Drecom Co., Ltd. All Rights Reserved.

2.0.0のタブ

Page 16: ドリコムJenkins勉強会資料

Copyright Drecom Co., Ltd. All Rights Reserved.

メリット/デメリット

メリット● 常に1.9系と2.0系でビルドしていればいつでも

2.0に移行できる○ 白金台のC社には負けてられない!

デメリット● 同じジョブをコピーしてるので設定を変えたい時

はその分書きなおす必要がある

Page 17: ドリコムJenkins勉強会資料

Copyright Drecom Co., Ltd. All Rights Reserved.

Caution!

データベース名を変えずに複数同時にテストするとDBロックで落ちることがあるw

対策(やった)● 1つずつビルドを走らせる(アクティブなアプリが少なけばあ

り)a. ジョブの同時実行数を1つにする(今の運用)b. 1.9のビルドが成功した後に2.0の方をビルド

対策(考えただけで実践はしてない)● rubyのバージョンから動的にデータベース名を作る● 別サーバでSlaveとして動かす

Page 18: ドリコムJenkins勉強会資料

Copyright Drecom Co., Ltd. All Rights Reserved.

When. Travis.ci

ymlに追記するだけでOK

Page 19: ドリコムJenkins勉強会資料

Copyright Drecom Co., Ltd. All Rights Reserved.

iPadをXFD化

JSONでAPIが提供されてるのでjsでサクッと作れる

https://github.com/sue445/jenkins_xfd

Page 20: ドリコムJenkins勉強会資料

Copyright Drecom Co., Ltd. All Rights Reserved.

Custom Job Icon Plugin

ホスティング先によってアイコンを使い分け

Page 21: ドリコムJenkins勉強会資料

Copyright Drecom Co., Ltd. All Rights Reserved.

個人Jenkins

apple-touch-icon.pngを使うとよさげ

Page 22: ドリコムJenkins勉強会資料

Copyright Drecom Co., Ltd. All Rights Reserved.

Slow Testのプロット

http://sue445.hatenablog.com/entry/2013/03/17/015836

total timeworst top

Page 23: ドリコムJenkins勉強会資料

Copyright Drecom Co., Ltd. All Rights Reserved.

embeddable-build-status plugin

READMEとかにビルドステータスを表示

Page 24: ドリコムJenkins勉強会資料

Copyright Drecom Co., Ltd. All Rights Reserved.

Ruby metrics plugin

Page 25: ドリコムJenkins勉強会資料

Copyright Drecom Co., Ltd. All Rights Reserved.

DRY Plugin DRY = Don't Repeat Yourself(重複排除の原則)

Page 26: ドリコムJenkins勉強会資料

Copyright Drecom Co., Ltd. All Rights Reserved.

Beer Plugin

Page 27: ドリコムJenkins勉強会資料

Copyright Drecom Co., Ltd. All Rights Reserved.

Jenkinsを1から入れた感想

● JenkinsはpluginやAPIが豊富なのでいろいろ集計できて楽しい

● アプリを作り始める時からJenkinsでビルドしておくことでコードの成長を視覚化できる

● ローカルでテストを動かすよりサーバでテストを動かした方が早く終わる

● デプロイ前にJenkins先生にチェックしてもらうことで安心感が生まれる

○ テストがダメなら本番でもダメ!● サーバにJenkinsを立てることでミドル周りの知識がだいぶついた

○ nginx, tomcat, IP制限, EC2やVPS契約etc

Page 28: ドリコムJenkins勉強会資料

Copyright Drecom Co., Ltd. All Rights Reserved.

まとめ

● サクッとためしたいならtravis.ciかCouldbees● いろいろやりたくなったら自分でJenkinsを入れてみる