読者です 読者をやめる 読者になる 読者になる

あきちきのひまつぶし

メーカー系SE2年目の凡人が、技術とかグルメとか旅行とか・・・。

Jenkins + Selenium環境を30分で構築する

めも Cl 環境構築

おひさしぶりです。

「どうしてもブログを継続的に書く」という行為に慣れないな、と思っていたら1年以上経過していました。

 

f:id:lapisizm:20170212073225p:plain

 

さて、今日はJenkins + Selenium環境を30分で構築するお話をしたいと思います。

背景

元々あったJenkins環境のノードi数(最大ファイル数の上限)が100%に達してしまったのが原因。

古いビルドを削除すればよいのですが、プロジェクトの決まりでは全て管理するとかなんとか・・・。メンドクサイですが、後継Jenkins環境を作る必要がありました。

これを依頼されたのが定時の1時間前。定時に帰りたかった私は、30分で環境を構築してやろうと思い立ったわけです。

 

要求

  1. SVN, Gitに対し、一定時間でポーリングを行い更新があったらビルド
  2. UnitTestとSeleniumTestを実施する。
  3. SpringBootを採用しているゲートウェイ上で動作するJavaアプリ
  4. プロジェクトはMavenプロジェクト

 

構築手順

Linuxのインストール

用意されている環境はWindows 7の64bitPCです。(メモリ16GB)

旧Jenkins環境はこのPC上でUbuntu 14.04をVirtualBoxで動作させていました。

どうせなら最新版を・・・。と思いUbuntu 16.04をダウンロード&インストールしました。

ここで落とし穴だったのが、実際にアプリが動作するゲートウェイは32bitマシンだったんです。

アプリが動作するための各種ライブラリは32bitを想定していますので、32bitである必要がありました。(両方対応しとけよ)

www.ubuntu.com

 

Linuxの各種設定を行う

会社だったのでプロキシを通す必要がありました。

VM上からログインを行い、apt-get / wgetのプロキシ設定を行いました。

  • apt-getのプロキシ設定

/etc/apt/apt.confをviで編集し、以下を追加。

(※以下の方法だと、全ユーザに反映されるので注意。)

Acquire::ftp::proxy "ftp://username:passwd@proxy.co.jp:8080/";
Acquire::http::proxy "http://username:passwd@proxy.co.jp:8080/";
Acquire::https::proxy "https://username:passwd@proxy.co.jp:8080/";

  • wgetのプロキシ設定

/etc/wgetrcをviで編集し、以下を追加。

(※以下の方法だと、全ユーザに反映されるので注意。)

http_proxy=http://username:passwd@proxy.co.jp:8080
https_proxy=https://username:passwd@proxy.co.jp:8080/
ftp_proxy=ftp://username:passwd@proxy.co.jp:8080/

 

SSH接続の設定をする

私の環境だけかもしれませんが、そのままではSSH(22ポート)に接続できませんでした。そのため、teratermWinSCPからの操作が出来ませんでした。

軽くググると「openssh-server」をインストールすることで改善するとのことでした。

  1. 「apt-get update」を実施
  2. 「apt-get install openssh-server」でopenssh-serverをインストール
  3. VirtualBoxの設定→ネットワークで、アダプタータイプ"NAT"を選択
  4. ポートフォワーディングでホスト:22 / ゲスト:22をオープン

これでteratermから127.0.0.1:22でアクセスが可能となります。

 

JDK, Mavenのインストール

これらは、手動でインストールする必要がありました。

そのため、Ubuntu上に初期搭載されているFirefoxから、必要なファイルをダウンロードし、展開します。

Mavenは当然Binary、JDKLinux x86を選択します。(ここは環境に合わせます。)

 Mavenhttps://maven.apache.org/download.cgi

 JDKJava SE - Downloads | Oracle Technology Network | Oracle

ダウンロードしたら展開し、以下のディレクトリに配置します。

 Maven/usr/apache-maven-3.x.x/

 JDK/usr/java/jdk1.x.x_xx/

  •  Mavenのプロキシ設定

/MAVEN_HOME/conf/settings.xmlをviで編集。

<proxies>
 <proxy>
  <id>myproxy</id>
  <active>true</active>
  <protocol>http</protocol>
  <host>proxy.co.jp</host>
  <port>8080</port>
  <username>proxyuser</username>
  <password>somepassword</password>
  <nonProxyHosts>*.google.com|ibiblio.org</nonProxyHosts>
 </proxy>
</proxies>

 

MavenJDKはパスを通さないといけないので以下のように設定します。

ちなみに、再起動後に消えてしまうので、以下の3行を/home/username/.bashrc, /root/.bashrcに追記しておくと再起動後もコマンドを打たなくても良くなります。

export JAVA_HOME=/usr/java/jdk1.x.x_xx/
export MAVEN_HOME=/usr/apache-maven-3.x.x/
export PATH=$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin

 

SVN, Gitのインストール

簡単です。以下のコマンドを入力します。

apt-get install subversion subversion-tools libapache2-svn

apt-get install git

  •  SVNのプロキシ設定

~/.subversion/serversをviで編集。

[global]
http-proxy-host = proxy.co.jp
http-proxy-port = 8080
http-proxy-username = username
http-proxy-password = passwd

  • Gitのプロキシ設定

~/.gitconfigをviで編集。

[http]
proxy = http://username:passwd@proxy.co.jp:8080/

 

Seleniumの為のxvfbのインストール

これも簡単です。以下のコマンドを入力します。

apt-get install xvfb

 

Firefoxのダウングレード

ここが重要です。

最新版FirefoxSeleniumが動作しない事が多いです。そのため、動作するバージョンまでダウングレードする必要があります。(私の環境では、46.0にダウングレードしています。)

以下のリンクより、該当のアーキテクチャ、バージョンのFirefoxをダウンロードします。

sourceforge.net

ダウンロードが完了したらダウンロードディレクトリに移動し、以下のコマンドを実行。

apt-get remove firefox

dpkg -i firefox-mozilla-build_xx.x.x-xubuntux_xxx.deb

apt-mark hold firefox

 

Jenkinsのインストール

いよいよJenkinsのインストールです。以下のコマンドを実行します。

wget -q -O - https://pkg.jenkins.io/debian/jenkins-ci.org.key | sudo apt-key add -
sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'
apt-get update
apt-get install jenkins

インストールが完了すると、ubuntufirefoxから、localhost:8080で接続が可能となります。

初期設定は、ブラウザからの操作で全て行うことが出来ます。

Jenkinsの指示に従って、全ての操作を完了させてください。

 

Jenkinsのポートを変更する

8080や、80はよく使うポートですので、結構ポートを変更する事が多いです。

Ubuntu環境のJenkinsポートは、/etc/default/jenkinsをviで以下のように編集します。

HTTP_PORT=8060

設定が完了したら、JenkinsをRestartさせましょう。

service jenkins restart

ちなみに、JenkinsのWeb設定画面にも、Jenkins自身のURLを設定する項目があるので合わせて修正します。

 

Jenkinsがsudoコマンドを実行できるようにする。

これは多少リスキーですが、Jenkinsのジョブで、シェルを実行する場合に便利だったりします。

「sudo visudo」を実行し、以下のように設定をします。

# Defaults !visiblepw
Defaults visiblepw

root ALL=(ALL:ALL) ALL
jenkins ALL=(ALL) NOPASSWD:ALL

 

Seleniumに必要なプラグインをインストール

ブラウザからJenkinsにアクセスしプラグインのインストールを行います。

Jenkinsの管理→プラグインの管理からプラグインをインストールします。

Checkstyle plugin
Copy Artifact Plugin
FindBugs Plug-in
GitHub Organization Folder Plugin
JaCoCo plugin
Metrics Plugin
Selenium Plugin
StepCounter Plugin
Subversion Plug-in
Translation Assistance plugin
Violations plugin
Warnings Plug-in
Workspace Cleanup Plugin
xUnit plugin
Xvfb plugin

ここは必要に応じてインストールを実施してください。

最低限上記が揃っていれば問題ないでしょう。(多分)

 

環境構築完了

これで環境の構築は完了です。コツはTerminal(Teraterm)を複数開き、作業を分散させる事です。

次回はMavenプロジェクトのビルド+UnitTest(CheckStyle等の静的解析) → Seleniumテストのジョブの設定方法について記載します。

 

Jenkins実践入門 ?ビルド・テスト・デプロイを自動化する技術 (WEB+DB PRESS plus)

Jenkins実践入門 ?ビルド・テスト・デプロイを自動化する技術 (WEB+DB PRESS plus)

 

  

改訂新版Jenkins実践入門 ――ビルド・テスト・デプロイを自動化する技術 (WEB+DB PRESS plus)

改訂新版Jenkins実践入門 ――ビルド・テスト・デプロイを自動化する技術 (WEB+DB PRESS plus)

 

 

広告を非表示にする
Copyright (C) 2013-2017 lapisizm All Rights Reserved.