さくらVPS上でSeleniumとphp-webdriverを利用する
前回、さくらのVPSにSeleniumとphp-webdriverを実行するための環境を設けた。
あとはJenkinsを入れるだけだ。
環境
さくらVPS 512
Ubuntu 16.04
Java 1.8.0_151
Jenkins 2.76
Selenium 3.7.1
Xvfb バージョンの調べ方わからず
Chromeドライバ 2.33.506092
Chromium 62.0.3202.94
Apache 2.4.29
PHP 7.1.11
Jenkinsのインストールは下記のコマンドで実行
wget -q -O - https://pkg.jenkins.io/debian/jenkins-ci.org.key | sudo apt-key add - sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list' sudo apt-get update sudo apt-get install jenkins
Jenkinsのインストール後、標準設定だとポートが8080なのでブラウザでhttp://IPアドレス:8080を開いてみると
Unlock Jenkinsの画面が表示され、解除するための方法が画面に記載されている。
記載に従って、
sudo cat /var/lib/jenkins/secrets/initialAdminPassword
でパスワードを取得し、Administrator passwordのフォームに入力して、Continueをクリックする。
あとは画面の指示に従いインストールの処理を続ける。
インストール後、
このような画面が表示されるので、
左側にあるJenkinsの管理のリンクをクリックして、システム管理を選び
画面下の方にあるE-mail通知の項目でSMTPサーバとメールアドレスの設定を行う。
続いて、こちらの画面で新しいジョブを作成する。
item nameでジョブ名を入力する。
この時、ジョブ名が実際にテストを行うディレクトリ名になってしまうので、
スペースなしの半角英数字の方が何かと都合が良かったです。
今回はGitでバージョン管理をしているSOY CMS / Shopがテスト対象なので、
フリースタイル・プロジェクトのビルドを選択して作成。
作成後、
標準設定であれば、
/var/lib/jenkins/workspace/以下にsoycmstestというフォルダが生成され、
/var/lib/jenkins/workspace/soycmstest/以下にGitのリポジトリがクローンされます。
続いて、作成したジョブの設定に移ります。
画面左側にある設定のリンクをクリックして設定画面を表示します。
設定画面で設定する項目は、
ソースコード管理でGitにチェックを入れ、
リポジトリURLに普段開発で使用しているリポジトリを入力し、
入力したリポジトリを操作できる認証情報を登録します。
ビルド・トリガでSCMをポーリングを選択し、
スケジュールはヘルプに記載されている内容を参考にして、どれくらいの感覚でポーリングを行うか決めます。
ちなみにビルドというのは、テストを行いたい時に決めたひとまとめの処理の事をビルドといい、
SCMにポーリングは、GitはSVNといったバージョン管理をひとまとめにSCMと呼び、
ポーリングは定期的にSCMに更新がないか確認するための通信方法です。
今回はGitサーバに15分に一度の感覚で更新を調べる設定にしました。
今回はJenkinsのみ動作させるためにVPSを借りていますが、
アプリの裏側でJenkinsを動かす場合は、ポーリングはリソース食いの設定になるので、
夜間のアクセスの少ない時間帯にビルドを実行するように設定すると良いみたいです。
ビルドで一回のテストでどのような処理を行って欲しいか設定をします。
今回はphp-webdriver用のphpファイルを作成しているので、
シェルスクリプトでphpファイルを実行するコマンドのみ登録しました。
ビルド後の処理では、ビルド失敗の時のみ通知メールがほしかったので、
E-mail通知の項目を増やし、自身のメールアドレスを登録しました。
これで最低限の設定は終了。
これからテスト環境でPHPファイルが動作するための設定を行います。
ジョブの作成時に生成されたworkspace内でPHPが動作するようにApacheの設定の変更を行います。
今回はJenkinsのみ動作させるためのVPSサーバなので設定方法は雑です。
テストを実行させるためのディレクトリは
/var/lib/jenkins/workspace/soycmstest/
になります。
このディレクトリにApacheのドキュメントルートを当てます。
sudo emacs /etc/apache2/sites-available/000-default.conf
で設定ファイルを開き、下記のように変更
DocumentRoot /var/www/html
を
DocumentRoot /var/lib/jenkins/workspace/soycmstest
#<Directory /var/lib/jenkins/workspace/soycmstest/> # Options Indexes FollowSymLinks # AllowOverride All # Require all granted #</Directory>
のコメントを外し、下記のように修正
<Directory /var/lib/jenkins/workspace/soycmstest/> Options Indexes FollowSymLinks AllowOverride All DirectoryIndex index.html index.php index.htm Require all granted #</Directory>
ファイルの修正後、
sudo /etc/init.d/apache2 restart
でApache2を再起動して、設定は終了。
Jenkinsのジョブの詳細を開き、画面左側にあるビルド実行を押して、テストが開始されるか確認します。
Seleniumとphp-webdriverでUIテストの自動化
これで小さな変更が入る度に、大事な機能が潰れていないか勝手に調べてくれるようになる。
これは小さなことのようで、定期的にリリースしているものであれば非常に大きい。
月700円(VPSサーバの費用)でテスターを一人雇ったようなものだ。