CentOS6へJasmineによるCI環境を作る(1)
2012年12月8日
yum install
yum install ruby yum install ruby-libs yum install ruby-devel yum install ruby-rdoc yum install ruby-ri yum install rubygems yum install java-1.7.0-openjdk yum install java-1.7.0-openjdk-devel yum install xorg-x11-server-Xvfb yum install firefox yum groupupdate 'X Window System'
RubyはJasmineをGem版で入れるために必要
JavaはSeleniumサーバのために必要
Xvfb / firefox / X Window System は、仮想バッファを介してFirefoxでアクセスするために必要
※ いくつかインストール済みだったり、不要だったりすると思います。特にRuby関係
※ X Window System は、結局全部入れないと動かなかった・・・
Bundlerのインストール
BundlerというRubyGemsの便利版みたいなのをインストールします
gem install bundler
Seleniumのダウンロードと起動スクリプトの設定
jarファイルはダウンロードページから最新版を探してください
# mkdir /var/lib/selenium # 場所はテキトウ # cd /var/lib/selenium # wget http://selenium.googlecode.com/files/selenium-server-standalone-2.25.0.jar # mkdir -m 0777 /var/log/selenium # ログ用
起動スクリプトの設定をします、コードはコチラの記事をそのままいただきました
wgetで取れる位置に置いていますが、もし無くなってたら上記サイトを参照して作成して下さい
# cd /etc/init.d # wget http://code.kjirou.net/sh/init.d/selenium.sh # mv selenium.sh selenium # chmod 0755 selenium # chkconfig --add selenium # chkconfig selenium on
Xvfbの起動スクリプトの設定
シェルスクリプトはコチラの記事をそのままいただきました
こちらもwgetで取れる位置に置いています
こちらもwgetで取れる位置に置いています
# cd /etc/init.d # wget http://code.kjirou.net/sh/init.d/xvfb.sh # mv xvfb.sh xvfb # chmod 0755 xvfb # chkconfig --add xvfb # chkconfig xvfb on
start-stop-daemonのインストール
上記のXvfb起動スクリプト内で使っているためインストールします
CentOS6へstart-stop-daemonをインストールを参照して下さい
CentOS6へstart-stop-daemonをインストールを参照して下さい
$DISPLAY環境変数の設定
テストを行いたいユーザの.bashrcや.zshrcへ、以下の環境変数を設定する
export DISPLAY=:99
dbus-uuidgen
これを実行しとかないと「machine-idが無いよ」と怒られます
何かのIDを生成しているようですが、詳細は不明
何かのIDを生成しているようですが、詳細は不明
# dbus-uuidgen > /var/lib/dbus/machine-id
ここまでの動作確認
最初に忘れずに、rebootもしくは起動スクリプトを手動で叩いて、
SeleniumとXvfbを動かしてください
Gemfileの内容は何度かエラーで怒られることを繰り返して自分が作成したものです、正確ではない可能性大
SeleniumとXvfbを動かしてください
Gemfileの内容は何度かエラーで怒られることを繰り返して自分が作成したものです、正確ではない可能性大
mkdir jasmine_test # 何処でもいい場所に任意の名前でディレクトリを作る cd jasmine_test wget https://raw.github.com/kjirou/beginning_jasmine/master/Gemfile bundle install --path vendor/bundle bundle exec jasmine init # テスト用ファイル含む一式が生成 bundle exec rake jasmine:ci
こんな出力が出たら成功です
[2012-12-08 01:45:01] INFO WEBrick 1.3.1 [2012-12-08 01:45:01] INFO ruby 1.8.7 (2011-06-30) [x86_64-linux] [2012-12-08 01:45:01] WARN TCPServer Error: Address already in use - bind(2) [2012-12-08 01:45:01] INFO WEBrick::HTTPServer#start: pid=15742 port=33630 Waiting for jasmine server on 33630... jasmine server started. Waiting for suite to finish in browser ... ..... Finished in 0.00409 seconds 5 examples, 0 failures
補足
- 何でgem install jasmineじゃなくてBundlerを使うの?
→ 最初それでやったら色々な場所で素直に進まず、最終的には諦めたという経緯があります - Firefoxを使うのはどこで指定しているの?
→ Seleniumはデフォルトでfirefoxを使うようになっています - $DISPLAYって何?:99って何?
→ 自分も良くわかっていません、:99はXvfb起動スクリプト内の定義値と一致する必要があります - –path vendor/bundle って何?
→ Railsやcapistranoだとそうなってるみたいなので合わせただけです、何でも良いです - テストを実行したらGemfile.lockってのが出来たんだけど?
→ なんでしょうね? とりあえず、バージョン管理外にしとけとのことです
もちろん–pathで指定した場所や.bundle もバージョン管理の対象外に
蛇足
全般的に良くわかってないで構築しているので、
「これ間違ってないか?」 という点があれば、おそらくはそれは間違っています
ご指摘いただけると助かります
「これ間違ってないか?」 という点があれば、おそらくはそれは間違っています
ご指摘いただけると助かります
後日、(2)でJasmine本体を使っていろいろとテストを書くことを
(3)でJenkinsなどに連携することを行います
TASみたいなことが出来ないと、CI環境で作った意味が薄くなるので
そういうのが出来ればいいなぁ、と思っています
・・・もし、HTMLを操作する動作を事細かに出来たなら
外部のブラウザゲームの寝マクロにも使えるかもなー
とか元UO廃人だと思わざるを得ませんが、もういい歳なのでダメ、ゼッタイ