Jenkins:「WindowsサービスとしてこのWindowsスレーブを制御」がうまくいかんときの解決法

Jenkinsで分散ビルドです。

まず、管理するPC(マスター)にJenkinsを入れておけばよく、実際にビルドを行う他のマシン(スレーブ?スレーヴ?)にはJenkinsは勿論特別なソフトは入れなくて良い。


上記「WindowsサービスとしてこのWindowsスレーブを制御」をマスター側でノードに設定すると、自動的に「slave agent」をスレーブに設定してくれるんですって。まじ便利。


さて。


ただマスターに設定しただけでは、やはり動きませんでした。
でもちゃんとログに「このサイト見ろ」と丁寧に書いてあったので、飛ぶ。
まあ親切に1つずつ丁寧に説明しています。
それがこれ。
Windows slaves fail to start via DCOM - 日本語 - Jenkins Wiki


だけれども、これじゃあ、自分のwindows 7 64bit環境では動きませんでした。


さらにググり続けて解決方法を調べると。。ありましたよ。同じ説明の英語版に。
http://wiki.hudson-ci.org/display/HUDSON/Windows+slaves+fail+to+start+via+DCOM#comment-thread-5432945


二回連続なので、これが解決方法の定石かと思うことにする。


ちなみに、差分はこれです。これを追加でやったら通信できるようになりました。

  1. Launch 'regedit.exe' as 'Administrator'
  2. Find the following registry key: 'HKEY_CLASSES_ROOT\CLSID{76A64158-CB41-11D1-8B02-00600806D9B6}'
  3. Right click and select 'Permissions'
  4. Change owner to administrators group.
  5. Change permissions for administrators group. Grant Full Control.
  6. Change owner back to TrustedInstaller (user is "NT Service\TrustedInstaller")
  7. Restart Remote Registry Service


日本語だとこんな感じ

  1. 管理者権限でregedit.exe(レジストリエディタ)を開く
  2. 以下のレジストリキーを探す。”HKEY_CLASSES_ROOT\CLSID{76A64158-CB41-11D1-8B02-00600806D9B6}”
  3. 右クリックで”アクセス許可”を洗濯
  4. 詳細設定の所有者タブに行って、所有者を”管理者”に変更
  5. Jenkinsで設定しているユーザを”フルコントロール”の許可を与える
  6. 元のTrustedInstallerに所有者を戻しておく。 (これやっとらん。治さないと)
  7. さいきどう リモート レジストリ サービス (これやっとらん。けど動いた)

英語版のJenkinsヘルプ?だと、説明を読んで失敗した人が、そのままそこで議論してるから、かなりわかりやすい。