Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

2,343 views

Published on

LLDecade 講演資料です。

Published in: Technology
  • Be the first to comment

ルビコンペレストロイカ〜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/

×