ルビコンペレストロイカ〜rubyonrailsにおけるci改革〜
Post on 26-Jun-2015
986 Views
Preview:
DESCRIPTION
TRANSCRIPT
〜RubyOnRailsにおけるCI改善〜
RubyOnRails CI Perestroika
高倉利明 / @TrinityT
はじめに_自己紹介
● 高倉利明 / id:TrinityT● 株式会社アピリッツ(旧社名KBMJ)で
RubyOnRailsでWebアプリ、
ブラウザゲーム開発してます。
● 社内CIサーバ管理者
→今日はノウハウを紹介
はじめに_今日の内容
1. 社内CI環境の概要と工夫点
2. RubyOnRailsでのCI設定例紹介
3. ビルド結果通知の工夫点
4. まとめ
社内CI環境の概要と工夫点
構成図
ソース管理サーバCIサーバ
開発者
テスト結果
構成
CIツール Jenkins
ソース管理 Git、Subversion
ビルド、テスト Rspec、RUnit、Maven2..etc
CI環境においての工夫3点
● ライブラリバージョン管理
● 新規プロジェクト追加の高速化
● テスト実行DB I/O高速化
工夫1_ライブラリバージョン管理
Ruby関連ライブラリは進化が激しいので、
社内に異なるバージョンの案件が多数存在
● Jenkinsサーバ上にRVM(RubyVersionManager)
で主要バージョンのRubyを設定してある● ライブラリはBundler or gemset(依存管理ツー
ル)で管理
→どんな構成(Ruby20XX)でもすぐにCI対応可能
工夫2_新規プロジェクト追加の高速化
● 社内Gitリポジトリアクセス用のJenkins専用公開鍵を配置
● テスト環境用のDBユーザ/パスワードは共通● Jenkins設定項目を標準化したひな形を作って
おきコピー
→10分程度で新規プロジェクトのCI追加可能!
工夫3_テスト実行DB I/O高速化
しょぼいサーバのためテスト遅い。。。→MySQLのデータディレクトリをオンメモリ(tmpfs)に配置
→0円でテスト処理時間向上!
※弊社環境ではテスト実行時間20%減ぐらい CPU強化やSSD化などのほうが効率良さげ
RubyOnRailsでの
CI設定例紹介
テストカバレッジ取得
RcovやSimpleCovでカバレッジを取得。
テスト追加の指針としている。
テスト結果詳細取得
詳細テスト結果が表示されるように、CI::Reporter(JUnit互換出力ツール)で詳細表示
テーブル&カラムコメント追加
ActiveRecordコネクタを拡張して、
Migrationでコメントを追加している。
#テーブル作成時
create_table :hoges, :comment => "テーブルコメント" do |t| t.string :code, :comment => "fugafuga"end
#カラム追加時
add_column :hoges, :value, :integer, :comment => "カラムコメント"
テーブル定義書自動生成
常に最新のテーブル定義書をテーブル&カラムコメントをもとに自動生成
ビルド結果通知設定
なぜメール通知だけじゃ駄目?
● メールだと無視される可能性が高い→迷惑メール扱いする人も・・・
● CIを知らない人は堅苦しく感じるらしい→遊び心が重要
IRCでの通知
社内IRCサーバのチャンネルに通知
通知ランプ
※三○兎で1000円ぐらい
JenkinsPersonaPlugin
ドラクエ
JenkinsPersonaPlugin
コマンドー
JenkinsPersonaPlugin
ガンダムUC
まとめ
まとめ
● 予め環境を最適化しておくことで新規案件にすぐにCIを適用可能
● 自動的に様々な情報を取ることでクオリティを上げる指針に
● ビルド失敗の早期対処は最重要。通知の工夫して遊び心を!!
CIツール導入して一番良かったこと
テストコード書かないメンバーが激減!
ご清聴ありがとう
ございました!
高倉利明 / @TrinityT
サイト:http://d.hatena.ne.jp/TrinityT/
top related