やりたいこと
- Windows マシンを Jenins の Slave にして、Bitbucket から最新のテストコード(Rspec) を取得して実行する
前提
- Jenkins masterはセットアップ済 (なのでjenkins自体のセットアップ手順は省略)
- Windows の Jenkins Slave はサービスとして実行する(実行ユーザは Local System)
環境
- Jenkins (master)
- ubuntu 12.04 LTS
- Jenkins (slave)
- Windows7 (ubuntu内にたてたVM)
- Gitサーバ
- Bitbucket
- Ruby
- Ruby 2.0.0-p481
- JRE
- Version 7 Update 65
Jenkinsの設定
Windowsのコマンドプロンプトのパスを指定 (※1)
- ブラウザで
jenkinsの管理 > システムの設定
を開く -
シェル実行ファイル
に以下を追加
C:\WINDOWS\system32\cmd.exe
ノードの追加
- ブラウザで
Jenkinsの管理 > ノードの管理 > 新規ノード作成
にアクセスする - 以下のように設定する
- リモートFSルート:
C:\jenkins
- 起動方法:
JNLP経由でスレーブを起動
- その他:(プロジェクトに適した内容)
JNLP用のポートを解放 (※ここのみ、後日CentOS6.5でJenkins環境構築した際に必要になった工程)
- ブラウザで `Jenkinsの管理 > グローバルセキュリティの設定 にアクセスする
- 以下のように設定する
- JNLPスレーブ用TCPポート番号:固定 (9000)
- Linux で
/etc/sysconfig/iptables
に 以下を追記する
-A INPUT -m state --state NEW -m tcp -p tcp --dport 9000 -j ACCEPT
- 以下コマンドを実行する
service iptables restart
Windows(slave)のセットアップ
Ruby 実行環境を用意
Ruby インストール (※2)
- http://rubyinstaller.org/ からインストーラをDLして実行する
- システム環境変数PATHに以下を追加する
Path=(Ruby.exeが存在するパス)
bundler インストール (※3)
- 以下コマンドを実行する
gem install bundler
Jenkins 用ディレクトリを作成
- Jenkinsのノード設定で
リモートFSルート
に指定したディレクトリを作成する (今回はC:\jenkins
を作成)
Java実行環境を用意
JREインストール
- https://java.com/ja/download/ から DL してインストール
JVM実行時の文字コードを UTF-8 にする (※4)
- システム環境変数に以下を追加する
JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF8
Bitbucket 接続環境を用意
Git for Windows インストール
- http://msysgit.github.io/ から DL してインストール
SSH鍵を作成 (※5)
- SSH鍵保存先として以下ディレクトリを作成
C:\SSHKeys
- システム環境変数に以下を追加
HOME=C:\SSHKeys
- Git Bash で以下コマンドを実行する (パスフレーズは何も入力せずEnter押下する)
ssh-keygen
Bitbucket に SSH でアクセスできるようにする
- ブラウザを起動して Bitbucket のリポジトリページにアクセスし、
設定 > デプロイ鍵
を開く -
鍵を追加
ボタン押下で追加ダイアログを開き、以下ファイルの内容をペーストする
C:\SSHKeys\.ssh\id_rsa.pub
- Git Bash で以下コマンドを実行し、yes と答える (これにより、Bitbucket が
known_hosts
に追加される)
ssh git@bitbucket.org
Jenkinsサービス のインストール
Slave用Jenkinsサービス のインストール
- ブラウザで
Jenkins の管理 > ノードの管理 > (Slave ノードの詳細画面)
を開く(以下のようなURL)
http://[jenkinsホスト]/computer/[自分のノード名]/
注釈
- (※1)
- これを設定しないと Jenkinsジョブ内のビルド手順で
Windowsバッチコマンド
を実行できない - (※2)
- Rubyインストーラのオプションで追加される環境変数は、システム環境変数ではなくユーザ環境変数なので注意!
(Jenkins Slave サービスの実行ユーザは Local System なので、セットアップ中に Rubyインストーラを実行したユーザの ユーザ環境変数は参照しない) - (※3)
- 実際のテスト実行に必要な gem はプロジェクト毎に別途
bundle install --path vendor/bundler
でインストールするので、ここでは Bundler のみインストールする - (※4)
- 文字コードを UTF-8 に変更しないと、Jenkins のビルド結果閲覧時に Console Output と Gitコミットログの日本語が文字化けする
- (※5)
- 当初、SSH鍵を PuTTy日本語版に付属していた puttygen.exe で作成したが、それだと Bitbucket にアクセスできなかった (エラー内容:
Permission denied (publickey)
)。
Git Bash でSSH鍵を作成し直したところ、Butbucket にアクセスできるようになった。
理由はわからない。
参考サイト
- SSH問題のトラブルシューティング
- https://confluence.atlassian.co.jp/pages/viewpage.action?pageId=34439419)
- Step by step guide to set up master and slave machines - 日本語 - Jenkins Wiki