目次
- 複数のスレーブを動かすための手順 (SlaveにWindows Serviceを使用する)
- Slave Service の実行ユーザを変更する (トラブル対応)
1. 複数のスレーブを動かすための手順 (SlaveにWindows Serviceを使用する)
1. slave-agent.jnlp を管理者権限で実行します。下記の「A, B」どちらかの方法で実行します。
# A. コマンドライン
1. 管理者権限でコマンドライン(Power Shell or コマンドプロンプト)を開く
2. slave-agent.jnlp を実行する
> PS C:\Users\USER_NAME\Downloads> .\slave-agent.jnlp
# B. メニュー
slave-agent.jnlp を右クリックしてメニューから「管理者権限として実行」で実行する
2. 起動後、メニューからFile > install as service
を選択する
成功するとスレーブのワーキングディレクトリに jenkins-slave.exe と jenkins-slave.xml が作成されます。
3. install as service
で作成されたスレーブのサービスを停止します。
4. スレーブのサービス設定を変更するためにWindows サービスから設定を削除します
スレーブのワーキングディレクトリに移動し、
管理者権限でコマンドライン(Power Shell or コマンドプロンプト)を開いて下記を実行します。
※ タスクマネージャーのサービス一覧は自動更新されないので 表示 > 最新の情報に更新
が必要です。
(PowerShellの場合)
PS D:\JenkinsSlaveTest> .\jenkins-slave.exe uninstall
5. jenkins-slave.xml を編集する
スレーブのワーキングディレクトリ内にある jenkins-slave.xml をテキストエディタで編集します。
初めは下記のような状態になっているため、id と name を変更して保存します。
<service>
<id>jenkinsslave-D__JenkinsSlaveTest</id>
<name>Jenkins agent (jenkinsslave-D__JenkinsSlaveTest)</name>
<description>This service runs an agent for Jenkins automation server.</description>
↓↓↓ id と name を変更 ↓↓↓
<service>
<id>jenkins-slave-two</id>
<name>Jenkins Slave Two</name>
<description>This service runs an agent for Jenkins automation server.</description>
6. Windows サービスにスレーブを登録します
スレーブのワーキングディレクトリに移動し、
管理者権限でコマンドライン(Power Shell or コマンドプロンプト)を開いて下記を実行します。
(PowerShellの場合)
PS D:\JenkinsSlaveTest> .\jenkins-slave.exe install
成功すると、このようにサービスで確認できます。
「実行中」が「停止」になっている場合は右クリックでメニューを開き、開始を選択してください。
以上でスレーブの移行は終了です。
マスターの設定画面で、先に新しいノードの設定を行った後、次のスレーブで同じ手順を行ってください。
※ 新たに設定したノードに割り当てられたURLと jenkins-slave.xml 中に記載している <arguments>
のJnlpURLが同じになるようにして下さい。
2. Slave Service の実行ユーザを変更する
スレーブ立ち上げをする際に slave-agent.jnlp
をユーザ実行している状態から windows service
で実行している状態へ変わったため、
スレーブのタスクを実行するユーザが変わっています。
そのため、タスクの実行状況(環境変数など)が変わり、問題が起きる場合があります。
(slave-agent.jnlp をユーザ実行している場合)
D:\JenkinsSlaveTest\workspace\WhoamiTask> whoami
workpc\okazaki
(windows service で実行している場合)
D:\JenkinsSlaveTest\workspace\WhoamiTask> whoami
nt authority\system
問題が起きた場合は、windows service で実行しているスレーブのサービスの起動するユーザを変更してください。
[Windows] サービスを起動するユーザを変更する
また、下記のようなエラーで実行するユーザの変更に失敗した場合はこちらを試してみてください。
実行アカウントに対してサービス ログオンアクセス許可を有効にする | Microsoft Docs
ローカルコンピューターのJenkinsサービスを開始できません。
エラー 1069: ログオンに失敗したため、サービスを開始できませんでした。
参考
複数のスレーブを動かすための手順 (SlaveにWindows Serviceを使用する)
Distributed builds - 日本語 - Jenkins Wiki
翻訳元: Distributed builds