JenkinsのスレーブをJNLPを使って動かしたい

Author

# マスター側の準備
* Jenkins → グローバルセキュリティの設定 → Agents
* `TCP port for inbound agents`をランダムに変更

* Jenkins → ノードの管理
* 新規ノード作成
* 以下の内容を参考にノードの設定を行う

| 項目 | 内容 |
| ---------------- | -------------------------------------------------------------- |
| ノード名 | ホスト名などにしておくと探しやすい |
| 説明 | ノードの用途などを記入 |
| 同時ビルド数 | PCのスペックとジョブの内容に合わせて |
| リモートFSルート | スレーブのエージェントが実行されるディレクトリをフルパスで指定 |
| ラベル | タグ名。Windowsなど分類しやすい名称を記入 |
| 用途 | このスレーブをできるだけ使用する |
| 起動方法 | Launch agent by connectiong it to the master |
| 可用性 |Keep this agent online as much as possible|

この時`Use WebSocket`を有効にすると、この後スレーブ側でWindowsサービスとしてインストールできなくなるので注意して下さい。

# スレーブ側の準備
* スレーブ側のPCからブラウザでマスターのJenkinsを開く
* Jenkins → ノードの管理 → スレーブの設定を開く
* LaunchボタンをクリックするとJNLPファイルのダウンロードが始まるので取得する
* ちなみにagent.jarをダウンロードすることが出来る。
* 秘密鍵などの情報があるので、これを利用してコマンドラインからの起動できる
* ダウンロードしたJNLPファイルを実行
* ファイルメニューに`Install as a service`が現れるので、サービスとして登録する場合は選択
* エラーが出る場合は管理者権限が必要なので、管理者権限のコマンドラインを開き`javaws slave-agent.jnlp`を実行する