Windows
CentOS
Jenkins

CentOS7にインストールしたJenkinsにWindows PCを接続する

More than 1 year has passed since last update.

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のサービスのログオン情報をスレーブ用のものに設定しなおす。

これでスレーブとして接続されるようになりました。