Ruby on rails on hudsonの活用事例

4,847 views

Published on

Hudson勉強会で発表した内容です

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

No Downloads
Views
Total views
4,847
On SlideShare
0
From Embeds
0
Number of Embeds
755
Actions
Shares
0
Downloads
32
Comments
0
Likes
5
Embeds 0
No embeds

No notes for slide

Ruby on rails on hudsonの活用事例

  1. 1. Ruby on Rails on Hudson の活用事例 Toshio Maki (@Kirika_K2 / id:Kirika)
  2. 2. 自己紹介 • 名前 – 牧 俊男( Toshio Maki ) – Twitter @Kirika_K2 / はてな  id:Kirika • 所属 – ちょっと大きな SI 企業の研究開発っぽいとこ ろ • 社内 Ruby 開発環境の整備担当 • Ruby 産業を国内に普及させるための取り組み • 最近の活動 – RubyWorld Conference 2010 発表
  3. 3. Hudson との出会い • 小規模の勉強会の中でリファクタリングをテー マにしたときに使用 • @ikikko が Hudson を使ったビルド環境を構築 • それ以来自分の仕事にも Hudson を取り込む
  4. 4. ここに立つことになった経緯 • RubyWorld Conference 2010 で Hudson を活用 したネタを発表
  5. 5. ここに立つことになった経緯 • 発表した内容を簡単に勉強会で紹介
  6. 6. ここに立つことになった経緯 • 気がついたら ikikko の RT に巻き込まれてた。
  7. 7. ここに立つことになった経緯 • 軽いノリで発表を OK 。 自主規制
  8. 8. ここに立つことになった経緯 • 気がつけば ATND 250 人以上 • RubyWorld Conference は 100 人程度
  9. 9. ここに立つことになった経緯 • どうしてこうなった的な
  10. 10. フィードバック希望です • 何か思うことがあれば、懇親会の場でも Twitter でもいいのでフィードバックを頂 ければと思います。
  11. 11. アジェンダ • Ruby on Rails on Hudson のメリット • 活用事例 – 全体概要 – Hudson の設定 • まとめ
  12. 12. Ruby on Rails on Hudson
  13. 13. RoR に Hudson を適用することのメ リット (1/4) • デイリービルドによる日々の成果物チェ ック – Ruby / Rails は実行環境差で動いたり動かなかったり 。 – 社内では用意したクリーンな環境で正しく動くこと をテストする。
  14. 14. RoR に Hudson を適用することのメ リット (2/4) • テスト時間の省力化 – 毎日 rake test を実行してくれると、個別に rake test しなくても良くなるので省力化でき る。
  15. 15. RoR に Hudson を適用することのメ リット (3/4) • テストコードを書くモチベーションが上 がる
  16. 16. RoR に Hudson を適用することのメ リット (4/4) • パッケージの自動生成と Capistrano の代 用 – Hudson で Rails アプリを RPM に変換 – RPM のインストールでデプロイ
  17. 17. 活用事例
  18. 18. 基本コンセプト • 同じ環境が作れる • その上で動作確認がいつでもできる • なるべくデプロイにおける人手の介入を減らす
  19. 19. 全体図 ② ③ ④ ⑤ ① ⑤ ①  ⑤ ①Kickstart による配信(初回のみ) ② ソースコードのコミット ③ ソースコードの取得 ④ 成果物のアップロード ⑤yum update (毎日実行) ①  ⑤
  20. 20. Hudson の設定
  21. 21. 稼働状況 約 10 のプロジェクトが 1 台の Hudson サーバで稼働。 HDD が 60GB しかなく、既に限界
  22. 22. メインで利用しているプラグイ ン • Version Number Plug-in – 環境変数に日付やビルド番号を含めたバージョン番号を入れてくれる • Rake Plugin – ビルドタスクに rake タスクを使用することができる • Ruby metrics Plugin – Rcov, Rails Stats などを表示 • Subversion Plugin • Hudson SCP publisher plugin – SCP 経由で成果物を特定サーバにアップロード
  23. 23. 汎用的に利用している設定
  24. 24. 古いビルドの破棄 • スタートアップのプロジェクトではグラフの遷 移が気になるので 10 程度を指定 – 一番大きいプロジェクトはビルド履歴の保存は2 – 1回のビルドに 3.4GB 使用するため
  25. 25. 権限設定 • プロジェクト単位の権限設定 • PM っぽい人に configure 権限を与えて運用 – まだ Hudson の仕組みが社内に浸透していないので、 設定を書き換えて使っている人はそんなに居ない
  26. 26. ソースコード管理システム • Subversion を選択 – 社内インフラとして Subversion リポジトリが提供さ れているため、そのアドレスを記入
  27. 27. ビルドトリガ • 毎朝 5 時に定期実行 • 全部のプロジェクトをまとめてビルドするので、人の居なさそうな 時間を指定
  28. 28. ビルド環境 • Create a formatted version number をチェック – Version Number Plugin を入れることで利用可能 • 環境変数 version にビルド年月日とビルド番号 を書き出す設定にする
  29. 29. Version Number Plugin 使用例
  30. 30. ビルド • ビルドタスクは以下の3ステップでビル ド 1. db:migrate の実行 2. rcov の実行 3. テスト→ RPM パッケージの自動生成
  31. 31. db:migrate の実行 • Rake db:migrate を実行してデータベースの表設計を最 新にする • Rake Plugin の機能で Rake を実行させる
  32. 32. rcov の実行 • rcov を実行して、カバレッジデータの収集をし ます • Hudson 標準のシェルの実行機能を使います
  33. 33. RPM パッケージの生成 • 独自の rake タスクを実行( rails 内  lib/task に格納) • テスト後、成果物を RPM にパッケージング – RPM 内でやってくれること • 特定ディレクトリへのインストール • rake db:migrate の自動実行 • Apache の VirtualHost の自動設定 • Ruby ・ Rails ・ Passenger が構築済みの状態でインス トールされるので、 RPM をインストールすると即実行 可能状態になる
  34. 34. ビルド後の処理 • 成果物を保存
  35. 35. Publish Rcov Report • Ruby metrics Plugin を使用 • 生成したカバレッジデータの出力ディレクトリ を指定 • カバレージ率が低い時に Hudson にアラートを あげさせることもできる
  36. 36. Publish Rcov Report – テストを書くモチベーションを上げる – 重点的にテストを書く箇所の判断材料
  37. 37. Publish Rails Stats report • 一応有効に。 • あまり良い使い方が思い浮かばず。 • うまく活用している人が居ましたら、教えてく ださい。
  38. 38. Publish Rails Stats report
  39. 39. ビルド後の処理 • E-mail 通知 – 管理者である自分と、 PM を加えておく • 基本的には向こうで対応してもらうが、対応でき なかったときは問い合わせがあるので、いつでも 対応できるように。
  40. 40. SCP による成果物の転送 • SCP でアプリ配信サーバにデータを転送 • アプリ配信サーバは1日1回、レポジト リの内容を更新する
  41. 41. 適用後の効果
  42. 42. 良かったところ • 適用前はうさんくさいツールだと思われ ていたようだが、こちらから設定とかを お膳立てしてあげると、積極的に使って くれるようになった。 – 1回のテストで動作確認から、インストール 用パッケージ生成まで出来るのが良い – Capistrano に比べて、 UI が優れていて、設定 しやすい
  43. 43. 反省ポイント • マシンのスペックが貧弱だと色々悩まさ れる – ビルド時間、 HDD の容量 – 特に HDD の容量は気を抜くとすぐなくなり ます • 何かトラブルが発生したときは、まだ SSH を使うことが多い • RPM 生成やパッケージの自動更新の仕組 みはかなり作りこんでいるので、将来的 に引き継ぐのが大変になる
  44. 44. まとめ • 開発インフラの中に Hudson が1つ入ると 、色々と捗るぞ。

×