【问题标题】:Installing a TFS 2013 build agent on another machine in a seperate domain在单独域中的另一台计算机上安装 TFS 2013 构建代理
【发布时间】:2014-01-14 10:02:18
【问题描述】:

我们有两个相互不信任的 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)

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

【问题讨论】:

  • 机器在“Dev”-Domain中吗?
  • 是的,“Dev”域是我们的开发域。堆栈跟踪来自“Dev”域中的一台机器。
  • 并且存在这个用户帐户?您可以在配置向导中指定用户帐户,也可以稍后在 Team Foundation Server 管理控制台的 BuildConfiguration 中指定用户帐户
  • 在配置向导中指定影子用户帐户不会改变结果。我正在以影子用户身份运行 TFS 管理控制台。
  • ist 是否适用于非影子用户?

标签: tfs tfsbuild tfs-2013


【解决方案1】:

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

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

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

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

我希望这可以避免一些严重的头痛。

【讨论】:

  • 不错的解决方案!这里唯一的问题是它无法使用网络服务帐户注册服务。然后错误是:找不到用户域\机器$
  • 谢谢。我在上面的回答中犯了一个错误。我最终在向导中使用了一个 DEV 域帐户(它要求“运行服务的帐户”)。网络服务确实不行。
  • 我很好奇这个解决方案是否随着更新 2 改变?当我输入 DEV 域帐户时,我收到错误“未找到用户帐户 DEV\devuser”并且无法通过该错误。我假设错误来自主域中的 TFS 服务器...
  • 您知道您需要使用自己的域名,对吧?所以你应该用你自己的域名替换DEV。我不知何故怀疑这个 hack 是否会停止使用更新 2,但我们会尽快安装它,所以我会发回结果。
猜你喜欢
  • 1970-01-01
  • 2012-09-16
  • 1970-01-01
  • 1970-01-01
  • 2019-08-18
  • 2021-10-30
  • 1970-01-01
  • 2017-08-28
  • 1970-01-01
相关资源
最近更新 更多