2

我们有一个本地 TFS2015RC 安装。服务器是我们域的一部分。

在同一域中的另一台服务器上配置构建代理 (build.vnext) 时,一切都按预期工作。

但是,在此域之外的服务器上配置构建代理时,会发生以下情况:

使用 ConfigureAgent.ps1:

  1. 接受所有默认值
  2. 选择交互模式(ei 未安装为 Windows 服务)
  3. 然后出现一个身份验证对话框:
    • 我输入一个域用户 ( domain\user),它是 TFS 的管理员
    • 我提供此用户的域密码。如果密码错误,对话框会这样说,我需要更正它(Windows 中的默认行为)
  4. 脚本继续,但在启动代理后它说:

错误:
VS30063:您无权访问 http://{server}:8080/tfs

为什么认证失败?我怎样才能找出它正在尝试与哪个用户进行身份验证?

我努力了:

  • 查看 _diag 文件夹中的日志文件。日志文件状态完全相同,没有更多可用信息。
  • 尝试了此链接中的建议以在 TFS 服务器上的 IIS 上启用基本身份验证。我这样做了(不情愿地),但它并没有解决问题。
4

2 回答 2

2

好的,我设法解决了这样的问题:

  1. 在 TFS 服务器上创建用户 TFS\remotebuild
  2. 授予此本地用户对 TFS 代理池的访问权限
  3. 授予此本地用户对 TFS 源代码控制的访问权限
  4. 在构建服务器上创建了一个用户 BUILD\remotebuild,密码与 TFS\remotebuild 相同
  5. 运行构建代理配置脚本时,当它询问服务帐户时,选择 BUILD\remotebuild 用户
  6. 当它要求 TFS 身份验证时,提供 TFS\remotebuild 用户凭据

像这样,它正在工作!但是,我不知何故无法让它在“控制台模式”下运行(即不将其作为 Windows 服务启动)。这不是一个大问题。

在此之后有一个小问题:在日志文件中我可以看到它正在尝试连接到http://NAME-OF-TFS:8080/tfs而不是http://IP-ADDRESS:8080/tfs,但我可以通过在构建机器上的 hosts 文件中添加一行来解决该问题。

于 2015-07-01T15:07:32.700 回答
1

身份

这可能涉及多达三个不同的身份,定义如下:

  • PoolAdmin- 用于将代理添加到代理池的帐户。此用户必须是Agent Pool Administrators您要使用的池的角色的一部分。
  • TfsServiceAccount- 代理应用于连接到 TFS 的帐户。此帐户应属于Agent Pool Service Accounts您要使用的池的角色。尽管文档表明应自动建立此角色成员资格,但在此工作组方案中可能并非如此。
  • LocalServiceAccount- 代理将在构建代理机器上运行的服务帐户。这可能是本地帐户或第二个域上的帐户,具体取决于您的配置。

注意:根据 TFS 实例的设置方式,前两个可能最终成为同一个帐户。

配置

请按照以下步骤配置代理。这些步骤假设您已经将代理软件解压缩为C:\agent.

  1. 以身份登录到构建代理计算机LocalServiceAccount.
  2. 删除 TFS 服务器的所有已保存凭据。
    • 打开控制面板>用户帐户>凭据管理器
    • 单击Windows 凭据
    • 删除所有已保存的 TFS 服务器凭据。
  3. 删除C:\agent\settings.json(如果存在)。
  4. 打开管理命令提示符C:\Agent并运行ConfigureAgent.cmd.
  5. 按照提示进行操作。当提示安装为服务时,输入Y.
  6. 当提示输入用户帐户时,输入LocalServiceAccount.
  7. 当您看到对 TFS 进行身份验证的弹出提示时,输入PoolAdmin. 重要:取消选中记住我的凭据复选框。

    如果PoolAdminTfsServiceAccount相同,您可以记住凭据并跳过其余步骤。

  8. 停止 VSO 代理服务。

  9. 使用 Internet Explorer,打开 TFS 服务器的 URL。
  10. 当系统提示您向 TFS 进行身份验证时,输入TfsServiceAccount. 重要提示:这一次,选中记住我的凭据复选框。
  11. 启动 VSO 代理服务。

您的新代理现在应该在池中列为在线。

参考:

于 2016-09-20T21:24:51.890 回答