RSpec
Jenkins

Windows を Jenkins の Slave にして Git管理してる Rspec のテストを実行するためのセットアップ手順

More than 3 years have passed since last update.


やりたいこと


  • 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)


  1. ブラウザで jenkinsの管理 > システムの設定 を開く


  2. シェル実行ファイル に以下を追加


    • C:\WINDOWS\system32\cmd.exe




ノードの追加


  1. ブラウザで Jenkinsの管理 > ノードの管理 > 新規ノード作成 にアクセスする

  2. 以下のように設定する


    • リモートFSルート:C:\jenkins

    • 起動方法:JNLP経由でスレーブを起動

    • その他:(プロジェクトに適した内容)




JNLP用のポートを解放 (※ここのみ、後日CentOS6.5でJenkins環境構築した際に必要になった工程)


  1. ブラウザで `Jenkinsの管理 > グローバルセキュリティの設定 にアクセスする

  2. 以下のように設定する


    • JNLPスレーブ用TCPポート番号:固定 (9000)



  3. Linux で /etc/sysconfig/iptables に 以下を追記する


    • -A INPUT -m state --state NEW -m tcp -p tcp --dport 9000 -j ACCEPT



  4. 以下コマンドを実行する


    • service iptables restart




Windows(slave)のセットアップ


Ruby 実行環境を用意


Ruby インストール (※2)



  1. http://rubyinstaller.org/ からインストーラをDLして実行する

  2. システム環境変数PATHに以下を追加する


    • Path=(Ruby.exeが存在するパス)




bundler インストール (※3)


  1. 以下コマンドを実行する


    • gem install bundler




Jenkins 用ディレクトリを作成


  1. Jenkinsのノード設定で リモートFSルート に指定したディレクトリを作成する (今回は C:\jenkins を作成)


Java実行環境を用意


JREインストール



  1. https://java.com/ja/download/ から DL してインストール


JVM実行時の文字コードを UTF-8 にする (※4)


  1. システム環境変数に以下を追加する


    • JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF8




Bitbucket 接続環境を用意


Git for Windows インストール



  1. http://msysgit.github.io/ から DL してインストール


SSH鍵を作成 (※5)


  1. SSH鍵保存先として以下ディレクトリを作成


    • C:\SSHKeys



  2. システム環境変数に以下を追加


    • HOME=C:\SSHKeys



  3. Git Bash で以下コマンドを実行する (パスフレーズは何も入力せずEnter押下する)


    • ssh-keygen




Bitbucket に SSH でアクセスできるようにする


  1. ブラウザを起動して Bitbucket のリポジトリページにアクセスし、設定 > デプロイ鍵 を開く


  2. 鍵を追加 ボタン押下で追加ダイアログを開き、以下ファイルの内容をペーストする


    • C:\SSHKeys\.ssh\id_rsa.pub



  3. Git Bash で以下コマンドを実行し、yes と答える (これにより、Bitbucket が known_hosts に追加される)


    • ssh git@bitbucket.org




Jenkinsサービス のインストール


Slave用Jenkinsサービス のインストール


  1. ブラウザで Jenkins の管理 > ノードの管理 > (Slave ノードの詳細画面) を開く(以下のようなURL)


    • http://[jenkinsホスト]/computer/[自分のノード名]/




  2. Launch ボタン押下する


  3. slave-agent.julp がDLされるので、実行する

  4. 下記ウィンドウが開くので、File > install as a service を実行する
    installer.png


注釈


  • (※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 にアクセスできるようになった。
      理由はわからない。




参考サイト