CentOS7にインストールしたJenkinsにWindows PCをSlave接続しようとした際にいろいろ引っかかったのでメモ。
Jenkins -> グローバルセキュリティの設定
Enable Agent -> Master Access Controlをチェック
ノードを作って、起動方法を「WindowsサービスとしてこのWindowsスレーブを制御」にする
スレーブにするPCにはJavaとDotNet3.5をインストールしておく。
管理者のユーザー名、パスワードにスレーブにするPCのAdministratorグループのユーザー情報を入力
ホストにスレーブにするPC名を入力
サービスを実行するユーザーにUse Administrator account given aboveを選択
この時点のエラー
ERROR: Message not found for errorCode: 0xC0000034
org.jinterop.dcom.common.JIException: Message not found for errorCode: 0xC0000034
スレーブPCでRemote Registry Srviceが起動していない。
「サービス」を起動し、Remote Registryのプロパティを開き、[スタートアップの種類:自動]に設定
右クリックして「開始」
この時点のエラー
ERROR: [2017-07-10 14:40:45] [windows-slaves] アクセスは拒否されました。解決方法の詳細については、http://wiki.jenkins-ci.org/display/JENKINS/Windows+slaves+fail+to+start+via+DCOM を参照してください。
org.jinterop.dcom.common.JIException: Message not found for errorCode: 0x00000005
リンクを参考にファイアーウォールの設定をします。
https://wiki.jenkins.io/display/JA/Windows+slaves+fail+to+start+via+DCOM
この時点のエラー
ERROR: Message not found for errorCode: 0xC0000001
org.jinterop.dcom.common.JIException: Message not found for errorCode: 0xC0000001
at org.jinterop.winreg.smb.JIWinRegStub.winreg_OpenHKCR(JIWinRegStub.java:121)
リンクを参考にレジストリの設定をします。
https://issues.jenkins-ci.org/browse/JENKINS-16418
具体的には
HKEY_CLASSES_ROOT\CLSID{76A64158-CB41-11D1-8B02-00600806D9B6}
のOwnerをJenkinsで使うユーザーに変更し、そのユーザーのフルコントロールにする。
該当のエントリを右クリックし、「アクセス許可」->「詳細設定」->Ownerを変更
変更したオーナーをフルコントロールに設定
この時点のエラー
ERROR: Unexpected error in launching an agent. This is probably a bug in Jenkins
org.jinterop.dcom.common.JIException: Service Logon Failure
at org.jvnet.hudson.wmi.Win32Service$Implementation.start(Win32Service.java:149)
Caused: java.lang.reflect.InvocationTargetException
スレーブのPCでServiceを開き、該当するjenkinsslaveのサービスのログオン情報をスレーブ用のものに設定しなおす。
これでスレーブとして接続されるようになりました。