在单独域中的另一台计算机上安装TFS 2013生成代理

在单独域中的另一台计算机上安装TFS 2013生成代理,tfs,tfsbuild,tfs-2013,Tfs,Tfsbuild,Tfs 2013,我们有两个Windows域,它们之间没有信任关系。在主域中,我们有一个简单的TFS server 2013设置,在开发域中,我们希望设置一个额外的构建代理。此生成代理将添加到TFS计算机上的现有生成控制器(TFS计算机已包含单个生成控制器和代理) 到目前为止,我已经向TFS和开发机器添加了相同的本地用户帐户。换句话说,在两个VM上都有一个具有相同名称和密码的影子帐户。我正在该用户下运行TFS build service安装程序,在进入配置步骤之前一切都很顺利 此步骤失败,日志中出现“TF4001

我们有两个Windows域,它们之间没有信任关系。在主域中,我们有一个简单的TFS server 2013设置,在开发域中,我们希望设置一个额外的构建代理。此生成代理将添加到TFS计算机上的现有生成控制器(TFS计算机已包含单个生成控制器和代理)

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

此步骤失败,日志中出现“TF400106:注册生成服务失败”和以下stacktrace:

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域中的域帐户并完成。域帐户来自开发域,在主域中没有等效帐户

此时,事件日志中会出现一个错误,说明“您无权访问…”。现在黑客攻击开始了。您必须转到服务控制台(start->run->services.msc)并手动将“Visual Studio TFS Build Service Host 2013”服务的“登录身份”帐户更改为您的影子帐户(即,存在于生成服务器和TFS服务器上且具有相同名称和密码的本地帐户)。您需要重新启动服务才能使其生效。这将阻止错误显示在事件日志中

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

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


我希望这能让其他人省去一些严重的麻烦。

机器在“开发”域吗?是的,“开发”域是我们的开发域。stacktrace来自“Dev”域中的计算机。是否存在此用户帐户?可以在配置向导中指定用户帐户,或者在Team Foundation服务器管理控制台中的BuueDebug中指定用户配置帐户,配置向导中的影子用户帐户不会更改结果。我以影子用户的身份运行TFS管理控制台。ist是否与非影子用户一起工作?很好的解决方案!这里唯一的问题是它无法使用网络服务帐户注册服务。然后出现的错误是:找不到用户域\计算机$谢谢。我在上面的回答中犯了一个错误。最后,我在向导中使用了一个DEV域帐户(它要求“一个帐户来运行服务”)。网络服务确实不起作用。我很好奇这个解决方案是否随更新2而改变?当我输入DEV域帐户时,我收到错误“用户帐户DEV\devuser未找到”,并且无法通过该错误。我假设错误来自主域中的TFS服务器…您知道您需要使用自己的域名,对吗?因此,您应该用自己的域名替换DEV。不知何故,我怀疑这个黑客会停止与更新2的工作,但我们将很快安装它,所以我会发回结果。