Jenkinsで行う並列テスト(公開用)

  • 1,641 views
Uploaded on

 

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
1,641
On Slideshare
0
From Embeds
0
Number of Embeds
2

Actions

Shares
Downloads
5
Comments
0
Likes
2

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Jenkinsで行う 並列テスト 岡山Ruby会議02 2013.07.06 山本 和久 13年7月10日水曜日
  • 2. 自己紹介 • 山本 和久 • 岡山Ruby/Ruby on Rails勉強会 • @kazuhisa1976 • 株式会社リゾーム 13年7月10日水曜日
  • 3. RubyGemsパッケージ 13年7月10日水曜日
  • 4. need_label • 必須項目にしるしを出力 13年7月10日水曜日
  • 5. 13年7月10日水曜日
  • 6. 13年7月10日水曜日
  • 7. hashed-jasper-rails • jasper-reportsをRailsから使う 13年7月10日水曜日
  • 8. csv_combine • 複数のCSVファイルをあたかも1つのフ ァイルのように扱う • 行のダブリを考慮 13年7月10日水曜日
  • 9. ken_all • 全国の郵便番号データをRailsで使う • 半分ネタ 13年7月10日水曜日
  • 10. pg_index_where • PostgreSQLのユニークインデックスで Whereを指定 • acts_as_paranoidと併せて使うと良いよ 13年7月10日水曜日
  • 11. 勤務先 13年7月10日水曜日
  • 12. 勤務先 • 株式会社リゾーム • ショッピングセンターのコンサル • デベロッパーマネジメントシステム • 顧客分析システム 13年7月10日水曜日
  • 13. BOND GATE • SC・専門店向けの コミュニケーションウェア 13年7月10日水曜日
  • 14. 私の役割 • テストフレームワーク • 技術検証 • インフラ(AWS,Chef) 13年7月10日水曜日
  • 15. テストの歴史 • BGプロジェクト開始2011年1月 • 2011年4月 私が入社 • 2011年7月 • RubyKaigi2011 • いしきがたかくなった! • 帰りの新幹線でテストフレームワーク を設定 13年7月10日水曜日
  • 16. テスト • 2011年10月時点 • rspec • 109ファイル • cucumber • 9ファイル 13年7月10日水曜日
  • 17. ここで問題が http://www.flickr.com/photos/morinkovo_fotky/4168850871 13年7月10日水曜日
  • 18. Slow Tests • RSpec + Cucumberの実行だけで30分位 かかる 13年7月10日水曜日
  • 19. Parallel Tests 13年7月10日水曜日
  • 20. Slow Tests • この時は一応解決した 13年7月10日水曜日
  • 21. Slow Tests再び • 2012年3月 • Parallel Testでも遅くなってきた 13年7月10日水曜日
  • 22. Jenkinsの導入 • 岡山Javaユーザー会の@zephiransasさん の影響でJenkinsを導入 13年7月10日水曜日
  • 23. Jenkinsとは? • 継続的インテグレーション • cronやタスクスケジューラと似てる • 豊富なプラグイン • Javaを知らなくても使える • 豊富な通知(mail, growl) 13年7月10日水曜日
  • 24. インストール方法 • Mac • brew install jenkins • Other • Glassfish + jenkins.war 13年7月10日水曜日
  • 25. Jenkins 黎明期 • 1台のマシン上で動かすJenkinsでParallel Testを実行 • 自分のマシンがふさがらないので、そ れなりに便利だった 13年7月10日水曜日
  • 26. Parallel Testsでも遅い http://www.flickr.com/photos/66643556@N06/6065807649 13年7月10日水曜日
  • 27. 複数マシンでの並列実行 • ビルドパイプラインの構築 • テストの分割 • 全てのテストが成功した時のみ リリース用ブランチにpush 13年7月10日水曜日
  • 28. ビルドパイプラインの構築 準備 spec 1 spec 2 spec 3 spec n ... 後処理 13年7月10日水曜日
  • 29. • Parameterized Trigger Pluginと組み合わせる • (デモ) • GitのコミットIDの引き継ぎ • Parameterized TriggerでPass-through Git Commit that was builtを指定 ビルドパイプラインの構築 13年7月10日水曜日
  • 30. テストの分割 • 行数で平均して分散化 20 10 40 50 30 60 80 15 36 22 11 8 13年7月10日水曜日
  • 31. テストの分割 • 行数で平均して分散化 20 10 40 5030 60 80 15 36 22 11 8 130 130 122 13年7月10日水曜日
  • 32. テストの分割 • Jenkins用のrake taskを作成 • rake jenkins:rspec • rake jenkins:cucumber export SPLIT=16 export OF=4 bundle exec rake jenkins:rspec 13年7月10日水曜日
  • 33. リリース用ブランチにpush • Join Trigger • Parameterized Triggerで指定したJobが全て 成功した時に走らせたいJobを指定 • テストが通ったものしかリリースできない 13年7月10日水曜日
  • 34. 13年7月10日水曜日
  • 35. さらなる高速化http://www.flickr.com/photos/wheatfields/3938695154/ 13年7月10日水曜日
  • 36. コード量 • Controller • 125 • Model • 304 • View • 1104 13年7月10日水曜日
  • 37. 毎日増えるテスト 13年7月10日水曜日
  • 38. LinuxよりMac • Capybara-webkitが高速 • Mac miniは省スペース 13年7月10日水曜日
  • 39. Git Pullを高速化 Github git pull ... 各テストはローカルからpullする git pull git pull git pull git pull The Internet Local Net 13年7月10日水曜日
  • 40. より便利にhttp://www.flickr.com/photos/75905404@N00/7126147125/ 13年7月10日水曜日
  • 41. 任意のブランチでテスト • ビルドのパラメータ化を利用 13年7月10日水曜日
  • 42. 任意のブランチでテスト • rbenv or rvm pluginと組み合わせれば任意の rubyバージョンでテストすることも可能 13年7月10日水曜日
  • 43. 任意のブランチでテスト • rbenv or rvm pluginと組み合わせれば任意の rubyバージョンでテストすることも可能 おーい。おじさん使うよ! 13年7月10日水曜日
  • 44. テスト後にマージ develop feature-foo Github Jenkins local dev feature-foofeature-foo feature-foodevelop 13年7月10日水曜日
  • 45. bundle update • gemを取得する場所を指定 • bundle install --path vendor/bundle • bundle update時のバッティングを防止 13年7月10日水曜日
  • 46. 今後やりたいこと • pull 方式のテスト spec 1 spec 2 spec 3 spec 4 spec 5 spec 6 spec 7 ... spec n 13年7月10日水曜日
  • 47. 今後やりたいこと • pull 方式のテスト spec 2 spec 3 spec 4 spec 5 spec 6 spec 7 ... spec n 13年7月10日水曜日
  • 48. 今後やりたいこと • pull 方式のテスト spec 2 spec 3 spec 4 spec 5 spec 6 spec 7 ... spec n 13年7月10日水曜日
  • 49. 今後やりたいこと • pull 方式のテスト spec 2 spec 3 spec 5 spec 6 spec 7 ... spec n 13年7月10日水曜日
  • 50. 今後やりたいこと • pull 方式のテスト spec 2 spec 3 spec 5 spec 6 spec 7 ... spec n 13年7月10日水曜日
  • 51. 今後やりたいこと • RubyGemsのミラーで高速化 • 時々コケるテストのレスキュー • テストが混線した時結果が分かりにく い 13年7月10日水曜日
  • 52. おしまい 13年7月10日水曜日