いいからやる。Jenkins + Xvfb + firefox + Selenium + ruby 

WebサイトのUIの自動テストがどうしてもしたくなったので、環境つくった。
何も考えなくても以下の手順を流せば環境完成する。
詳細な説明は先達の情報を参考に。

## サーバを用意する

今回は、AWS Marketplace の CentOS6.5 を利用（手順は割愛）

### サーバ初期設定

* とりあえず

```
yum update -y
yum groupinstall -y 'Development tools'
yum install -y wget ImageMagick
```

* iptables停止＆自動起動off

（今回は閉じられたVPC環境内なので、セキュリティまわりはあとまわし。とにかく検証環境を手に入れたい。）

```
service iptables stop
chkconfig iptables off
```

* SELinux無効化

```
vi /etc/selinux/config
```

```
SELINUX=disabled
```

* 有効にするためにサーバ再起動する

* 他、ユーザや権限等、適宜必要な設定を行う（まずは環境がほしいのであとでやる）


## Jenkinsをインストールする

* javaをインストールする

```
yum install -y wget java-1.7.0-openjdk
```

* リポジトリを追加する

```
wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo
```

```
rpm --import http://pkg.jenkins-ci.org/redhat/jenkins-ci.org.key
```

* jenkinsをインストールする

```
yum -y install jenkins
```

* jenkinsの自動起動設定

```
chkconfig jenkins on
```

* Jenkinsを起動する

```
service jenkins start
```

* 動作確認
http://[publicIP]:8080

### Jenkinsユーザの設定（OSユーザ）

* Jenkinsユーザに変更できるようにする

```
vi /etc/passwd
```

```
jenkins:x:498:499:Jenkins Continuous Build server:/var/lib/jenkins:/bin/bash
```

* Jenkinsユーザでsudoが使えるようにする

```
visudo
```

```
# Defaults    requiretty
Defaults:jenkins !requiretty
jenkins ALL=(ALL) NOPASSWD:ALL
```

### Jenknsを 8080 → 80 で動かす（任意）

（こちらの記事を参考にさせていただきました）
http://qiita.com/gitya107/items/25887864f07fa4cc7ce1

* Jenkinsの設定ファイルを修正する

```
 vi /etc/sysconfig/jenkins
```

```
 # 以下の行を修正
 JENKINS_ARGS="--prefix=/jenkins"
```

### httpdをインストール＆設定する（任意）（80で動かしたい場合）

```
yum install -y httpd
```

```
chkconfig httpd on
```

```
 vi /etc/httpd/conf/httpd.conf
```

```
 # 以下の行を追加
 <Proxy *>
     Order deny,allow
     Allow from all
 </Proxy>
 ProxyPass /jenkins http://localhost:8080/jenkins
```

```
service httpd start
```

```
service jenkins restart
```

### Jenkins最低限の設定

ユーザや権限等、適宜設定する（とにかくまずは環境がほしいのであとでやる）


## Xvfbをインストールする

### Xvfbをインストールする

```
yum install -y xorg-x11-server-Xvfb
```

###  起動スクリプトを設定する

今回はこちらを拝借

```
wget  https://raw.githubusercontent.com/kohkimakimoto/chef-cookbooks-selenium/master/templates/default/init.d/xvfb.erb
```

```
mv xvfb.erb /etc/init.d/Xvfb
```

```
chmod 755 /etc/init.d/Xvfb
```

* 自動起動設定

```
chkconfig Xvfb on
```

* Xvfb起動

```
service Xvfb start
```

## Firefoxをインストールする

### Firefoxをインストールする

* 相性の関係で以下のバージョンをインストールする

```
wget ftp.mozilla.org/pub/mozilla.org/firefox/releases/34.0.5/linux-x86_64/en-US/firefox-34.0.5.tar.bz2
```

```
tar -xjvf firefox-34.0.5.tar.bz2
```

```
rm -rf /opt/firefox*
```

```
mv firefox /opt/firefox34.0.5
```

```
ln -sf /opt/firefox34.0.5/firefox /usr/bin/firefox
```

* 日本語パッケージをインストールする

```
yum groupinstall -y "Japanese Support"
```

## rbenvを使ってrubyをインストールする

__※ 以下Jenkinsユーザで実行する__ (とりあえずJenkinsから実行できるようにしたいため)

```
su - jenkins
```

### rbenvをインストールする

* rbenvをcloneする

```
git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
```

* 環境設定

```
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
exec $SHELL -l
```

* rbenvの確認

```
rbenv --version
```

* ruby-buildをインストールする

```
git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
```

###  rubyをインストールする

* インストール可能なrubyのバージョンを確認する

```
rbenv install --list
```

* rubyをインストールする

```
sudo yum install -y openssl-devel readline-devel zlib-devel
```

```
rbenv install -v 2.2.3
```

```
rbenv rehash
```

* 確認（インストールされているruby一覧を表示）

```
rbenv versions
```

* 全体で使うrubyのバージョンを指定

```
rbenv global 2.2.3
```

## サンプルPGを実行する

* gem install

```
gem install selenium-webdriver
```

```
gem install headless
```

* サンプルPG

```ruby:/var/lib/jenkins/test.rb
require 'selenium-webdriver'
require 'headless'

@headless = Headless.new
@headless.start
@driver = Selenium::WebDriver.for :firefox

@driver.get 'https://www.google.co.jp/'
@driver.save_screenshot '/var/lib/jenkins/test.png'

@driver.quit
@headless.destroy
```

* Jenkinsのプロジェクトを作成し、シェルを設定する

```
#!/bin/bash
export PATH="/var/lib/jenkins/.rbenv/bin:$PATH"
eval "$(rbenv init -)"

ruby /var/lib/jenkins/test.rb
```

以下のファイルが作成されていればOK（googleの画面キャプチャ）
/var/lib/jenkins/test.png

## 苦労したところ

FireFoxの最新版ではうまく動かなかった。（なんかいろいろ依存ライブラリが足りないぞと怒られる）
運良く（？）回避策（バージョン落とす）の情報に先に辿り着いてしまったので、解決策の追求はしていない。
そのうち調査したい。