4

我们有两个相互不信任的 Windows 域。在主域上,我们有一个简单的 TFS 服务器 2013 设置,在开发域中,我们想设置一个额外的构建代理。此构建代理将添加到 TFS 机器上的现有构建控制器(TFS 机器已经包含一个构建控制器和代理)。

到目前为止,我已经向 TFS 和开发机器添加了相同的本地用户帐户。换句话说,两个虚拟机上都有一个名称和密码相同的影子帐户。我正在该用户下运行 TFS 构建服务安装程序,并且一切顺利,直到进入配置步骤。

此步骤失败,并在日志中显示“TF400106:无法注册构建服务”和以下堆栈跟踪:

Exception Message: User account DEV\machinename$ not found (type Exception)
Exception Stack Trace:    at Microsoft.TeamFoundation.Build.Config.BuildServiceHostUtilities.CheckServiceAccountMembership(TfsTeamProjectCollection tfsCollection, String serviceAccount)
   at Microsoft.TeamFoundation.Build.Config.BuildServiceHostUtilities.UpdateCollectionPermissions(TfsTeamProjectCollection tfs, String userName)
   at Microsoft.TeamFoundation.Build.Config.BuildServiceHostUtilities.UpdateAuthenticatingAccount(TfsTeamProjectCollection tfsCollection, String fromUser, Boolean canTranslateFromUser, String toUser, Boolean canTranslateToUser)
   at Microsoft.TeamFoundation.Build.Config.BuildServiceHostUtilities.Register(IBuildServiceHost serviceHost, String serviceAccount, String serviceAccountPassword, X509Certificate2 serverCertificate, String authenticatingUserName, Boolean canTranslateAuthenticatingUserName)
   at Microsoft.TeamFoundation.Admin.TeamBuildInstaller.RegisterWithApplicationServer(IAuthenticatedCollectionProvider authenticatedConnectionProvider, IBuildServiceHost host, String collectionUri, Int32 port, AccountInfo serviceAccount, AccountInfo authenticatingAccount, Boolean useHttps, BuildControllerOptions controllerOptions, List`1 agentListOptions, Boolean cleanOldResources, String certificateThumbprint, Boolean requireClientCertificates, ITFLogger logger)
   at Microsoft.TeamFoundation.Admin.ConfigureRegisterBuild.Run(ActivityContext context)

该堆栈跟踪是什么意思?这种设置有没有可能起作用?我确实在网上看到它没有得到很好的支持,但也有一些成功的故事。

4

1 回答 1

3

事实证明,上述方法确实是可能的,但只有一些技巧。首先,您需要通过在要求“运行服务的帐户”时输入域帐户来运行安装。该向导将使用来自 DEV 域的域帐户并完成。域帐户是 Dev 域中的一个,在主域中没有等效项。

此时,您在事件日志中留下一条错误消息,指出“您无权访问...”。现在黑客攻击开始了。您必须转到服务控制台(开始->运行->services.msc)并手动将“Visual Studio TFS Build Service Host 2013”​​服务的“登录为”帐户更改为您的影子帐户(即本地帐户)存在于构建服务器和 TFS 服务器上,具有相同的名称和密码)。您需要重新启动服务才能使其生效。这应该会阻止错误出现在事件日志中。

最后,您可以转到 TFS 管理控制台并添加代理。现在你应该能够按它的方式发送构建了。

无法通过 TFS 管理控制台配置帐户的原因是它不允许在“连接到 TFS 为”中指定本地帐户。这当然是有道理的,因为通常情况下本地帐户无法在框外识别。“使用与 Windows 服务相同的身份”复选框默认选中,因此它将使用指定为“作为服务登录”帐户的任何帐户。

我希望这可以避免有人严重挠头。

于 2014-01-16T08:15:04.420 回答