Jenkins導入から運用⑤ スレーブノードの設定
Jenkinsには他のマシンにビルドを分散処理させるスレーブ機能がついてる
最初他のマシンのCPU借りて処理させて結果を受け取る仕組みがなのかと思ったのだけど
他のマシンで設定されたビルドを実行するってことでちょっと拍子抜け
つまりは同じ環境が入ったマシンが複数無いといけないわけなんだけど
1. ビルドしなくちゃいけないプロジェクトが複数ある
2. subversionとかでチェックアウトできる
3. 空いてるPCが複数台ある
みたいな感じだとスレーブ機能がアツい感じになる
ホスト側(Jenkins入ってるマシン)設定
- 「Jenkins」→「Jenkinsの管理」→「ノードの管理」へ
- 左サイドバーの「新規ノード作成」を選択
- ノード名を入れてダムスレーブを選択(好きな名前で)
で
- 説明 : 適当に
- 同時ビルド数 : マシンスペックに応じて
- リモートFSルート : スレーブマシン上のマスターノードのホームディレクトリ
("C:\jenkins"とかでいいと思う) - ラベル : 特定のOSが入ってるPCでのみビルド って感じの指定に使える
(windows_build_slaveとかmac_build_slaveとかついてるとわかりやすい)
起動方法は「JNLP経由でスレーブを起動」でOK で保存
Jenkinsが入ってるPC側の設定
- C:\Program Files\Jenkins\war のWEB-INFを右クリでプロパティ
- 共有タブ→詳細な共有 で このフォルダを共有するにチェック
スレーブ側の準備
- 適当な場所にバッチファイル作って
java -jar \\[※1]\WEB-INF\slave.jar -jnlpUrl http://[※1]//computer/[上で設定したノード名]/slave-agent.jnlp ※1 Jenkinsが入ってるPCのIPアドレス
を書いて保存しとく(名前は適当にconnect_slave.batとかで)
ノード名を○○_0~4とかにしとくと
for /l %%i in (1,1,4) do ( java -jar \\[※1]\WEB-INF\slave.jar -jnlpUrl http://[※1]//computer/○○_%%i/slave-agent.jnlp ) ※1 Jenkinsが入ってるPCのIPアドレス
こんな感じでfor文で回して空いてるスレーブに接続って感じで楽
バッチを作ったら他のスレーブにするマシンにもコピーして準備完了
接続
スレーブ側でさっき作ったバッチを実行すると
test_node_0の部分が接続中になるのでこれで完了
あとはビルドを走らせるとmasterとtest_node_0の2台で作業分担する
ただし一番最初に書いたとおり
他のマシンで設定されたビルドを実行する
ってだけなのでビルドして出力されたもの(exeとか)がほしい場合は
「Windowsバッチコマンドの実行」にコピーする内容やら場所やら書いとく必要がある
大体こんな感じで使えるようになるはず
Jenkins導入から運用① インストール~初期設定 - phaaaaantomのメモ帳
Jenkins導入から運用② プラグインの導入 - phaaaaantomのメモ帳
Jenkins導入から運用③ プロジェクトの作成 - phaaaaantomのメモ帳
Jenkins導入から運用④ ビルドパラメータの設定 - phaaaaantomのメモ帳
Jenkins導入から運用⑤ スレーブノードの設定 - phaaaaantomのメモ帳