ルビコンペレストロイカ〜RubyOnRailsにおけるCI改革〜

1,363 views
1,280 views

Published on

LLDecade 講演資料です。

Published in: Technology
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,363
On SlideShare
0
From Embeds
0
Number of Embeds
9
Actions
Shares
0
Downloads
7
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

ルビコンペレストロイカ〜RubyOnRailsにおけるCI改革〜

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

×