我们有两个互不信任的 Windows 域。在主域上,我们有一个简单的 TFS 服务器 2013 设置,在开发域中,我们想设置一个额外的构建代理。此构建代理将添加到 TFS 机器上的现有构建 Controller (TFS 机器已包含单个构建 Controller 和代理)。
到目前为止,我已经向 TFS 和开发机器添加了相同的本地用户帐户。换句话说,两个 VM 上都有一个名称和密码相同的影子帐户。我正在该用户下运行 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)
该堆栈跟踪是什么意思?这个设置有没有可能起作用?我确实在网上读到它没有得到很好的支持,但也有一些成功的故事。
最佳答案
事实证明,上述确实是可能的,但只有一些技巧。
首先,您需要通过在要求“在其下运行服务的帐户”时输入域帐户来运行安装。向导会很高兴使用来自 DEV 域的域帐户并完成。域帐户是来自 Dev 域的帐户,并且在主域中没有等效帐户。
此时,您会在事件日志中看到一条错误消息,指出“您无权访问...”。现在黑客开始了。您必须转到服务控制台(开始->运行->services.msc)并手动将“Visual Studio TFS Build Service Host 2013”服务的“登录身份”帐户更改为您的影子帐户(即本地帐户)存在于构建服务器和 TFS 服务器上,具有相同的名称和密码)。您需要重新启动该服务才能生效。这应该会阻止错误出现在事件日志中。
最后,您可以转到 TFS 管理控制台并添加代理。现在你应该可以按它的方式发送构建了。
无法通过 TFS 管理控制台配置帐户的原因是它不允许在“连接到 TFS 为”中指定本地帐户。这当然是有道理的,因为通常本地帐户在框外无法识别。默认情况下选中“使用与 Windows 服务相同的身份”复选框,因此它将使用指定为“作为服务登录”帐户的任何帐户。
我希望这可以避免有人在那里严重挠头。
关于tfs - 在单独域中的另一台计算机上安装 TFS 2013 构建代理,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21110624/