Upload
go-sueyoshi-aka-sue445
View
2.460
Download
2
Embed Size (px)
DESCRIPTION
渋谷Ruby会議01( http://regional.rubykaigi.org/shibuya01/ )で話したスライドです http://rubygems.org/gems/paraduct https://github.com/sue445/paraduct
Citation preview
Copyright Drecom Co., Ltd. All Rights Reserved.
Paraductをエクストリームリリースします
@sue4452014/11/01 ShibuyaRubyKaigi
Copyright Drecom Co., Ltd. All Rights Reserved.
@sue445
● drecom○ ソーシャルゲームとか○ 社内ツールとか社内ライブラリとかサーバサイド
全般見てる● 渋谷.rb
○ ほぼ毎回自作ツールや自作gemの発表している
○ RubyKaja 2014● プリキュアおじさん
○ 最近フルスタックキュアエンジニアになった(TVシリーズと劇場版完走)
自己紹介
Copyright Drecom Co., Ltd. All Rights Reserved.
RubyKaja2014
Copyright Drecom Co., Ltd. All Rights Reserved.
ワタシハ テスト チョットデキル
https://suzuri.jp/sue445/62900/t-shirt/s/brightgreen
Copyright Drecom Co., Ltd. All Rights Reserved.
今期の嫁:キュアハニー
Copyright Drecom Co., Ltd. All Rights Reserved.
本妻:キュアピース
Copyright Drecom Co., Ltd. All Rights Reserved.
Next Precure is (maybe) “Go! プリンセスプリキュア” ,
and my name is Go .
来期のプリキュア情報
Copyright Drecom Co., Ltd. All Rights Reserved.
● Paraduct is 何?● 現状確認● 概要● エクストリームリリース
Agenda
Copyright Drecom Co., Ltd. All Rights Reserved.
Paraduct とは
Copyright Drecom Co., Ltd. All Rights Reserved.
マトリクステストのためのgemです
Paraduct とは
Copyright Drecom Co., Ltd. All Rights Reserved.
現状確認
Copyright Drecom Co., Ltd. All Rights Reserved.
よくある社内gem (acts_as_xxxxxxxxx)
● サポートするRubyのバージョン○ Ruby 2.0系○ Ruby 2.1系
● サポートするRailsのバージョン○ Rails 3.2系○ Rails 4.0系○ Rails 4.1系
現状確認
Copyright Drecom Co., Ltd. All Rights Reserved.
2 x 3 = 6ジョブ (;´Д`)
Jenkinsのジョブ増えすぎ問題
Copyright Drecom Co., Ltd. All Rights Reserved.
Travis CIみたいにyamlで簡単にマトリクステストしたい
Copyright Drecom Co., Ltd. All Rights Reserved.
● pushしてから実際にテストが実行されるまでに時間がかかる○ pushしてからジョブが始まるまでに数分かかることもある
● githubでしか使えない○ 弊社 is Gitlab
● (CaaS全般に言えるけど)社外から社内にホスティングしてるgemをとってこれない○ proxy経由しないとgem installできない
Travis CIの問題点
Copyright Drecom Co., Ltd. All Rights Reserved.
マトリクステストを手軽に実行ためのgem
を作った
そこで
Copyright Drecom Co., Ltd. All Rights Reserved.
● Paraduct = parallel + parameterize + product(掛け算の積)
● 複数のパラメータを掛けあわせて並行してテスト実行する
● gemだけどruby以外のテストもできます(後述)
https://github.com/sue445/paraduct
Paraduct概要
Copyright Drecom Co., Ltd. All Rights Reserved.
設定ファイル
Copyright Drecom Co., Ltd. All Rights Reserved.
設定ファイル
実行するスクリプト
掛け合わせるパラメータ
Copyright Drecom Co., Ltd. All Rights Reserved.
設定ファイル
実行するスクリプト
掛け合わせるパラメータ
export RUBY=xxxxx; export GEMFILE=xxxxx; ./build.sh
Copyright Drecom Co., Ltd. All Rights Reserved.
テストの仕組み
app
Copyright Drecom Co., Ltd. All Rights Reserved.
コマンド実行
app
$ paraduct test
Copyright Drecom Co., Ltd. All Rights Reserved.
ファイルを別のディレクトリにコピーする
app
tmp/RUBY_2.0_RAILS_3.2
tmp/RUBY_2.0_RAILS_4.0
::
1. rsync
Copyright Drecom Co., Ltd. All Rights Reserved.
パラメータを渡してテストを並列実行
app
tmp/RUBY_2.0_RAILS_3.2
tmp/RUBY_2.0_RAILS_4.0
::
RUBY=2.0 RAILS=3.2 ./build.sh
RUBY=2.0 RAILS=4.0 ./build.sh
2. run scripts
Copyright Drecom Co., Ltd. All Rights Reserved.
全部終了するまで待つ
app
tmp/RUBY_2.0_RAILS_3.2
tmp/RUBY_2.0_RAILS_4.0
::
RUBY=2.0 RAILS=3.2 ./build.sh
RUBY=2.0 RAILS=4.0 ./build.sh
or
All successful
3. finish
Even one failure
Copyright Drecom Co., Ltd. All Rights Reserved.
Paraductはパラメータを組み合わせてスクリプトを実行するた
めのラッパー
Copyright Drecom Co., Ltd. All Rights Reserved.
シェルが使えればruby以外のテストも出来ます
Copyright Drecom Co., Ltd. All Rights Reserved.
gem installできれば
Jenkins以外でもparaduct使えます
(Circle CIで動作確認済)
Copyright Drecom Co., Ltd. All Rights Reserved.
シェルを実行するだけなのでぶっちゃげRubyじゃなくてよかったんだけど
● 配布しやすさ (Rubygems)● インストールしやすさ (Rubygems)● リリースのしやすさ (rake release)● テストしやすさ (RSpec)● 自分のスキルセット (Java, Groovy, Ruby, JavaScript)
を加味してRubyを選択
なぜgemか?
Copyright Drecom Co., Ltd. All Rights Reserved.
● travisと違い全部ローカルで実行するのでジョブごとの排他制御が難しい○ script内でvagrant立ち上げて独立した環境で動かせば
いけそう● 全部ローカルで実行するのでCPU負荷かかる
○ 10プロセスでbundle installするときついw○ 同時に実行するスレッド数の上限は設定できる
● 最低限動く実装しかないのでかゆいところに手が届くオプションがない○ travisのallow_failuresとか
デメリット(既知の問題)
Copyright Drecom Co., Ltd. All Rights Reserved.
● Paraductを使えばTravis CI以外でもマトリクステストができる
● Paraductを使えばJenkinsのジョブを減らせる
まとめ
Copyright Drecom Co., Ltd. All Rights Reserved.
エクストリームリリース
Copyright Drecom Co., Ltd. All Rights Reserved.
0.0.1.beta17 -> 0.0.1
Copyright Drecom Co., Ltd. All Rights Reserved.
http://rubygems.org/gems/paraduct
ご清聴ありがとうございました!