gpt4 book ai didi

azure-devops - VSTS 构建失败并出现 SVN 禁止异常

转载 作者:行者123 更新时间:2023-12-02 01:25:01 25 4
gpt4 key购买 nike

我在 VSTS 中设置了一个构建过程,它从面向公众的 SVN url 中提取源代码。当我从仪表板手动对构建进行排队或安排构建在特定时间运行时,它非常有效。但是,当构建通过持续集成排队时,它会抛出以下异常:

An exception occurred while polling the repository. Error: Microsoft.TeamFoundation.Build2.Server.Extensions.BuildPollingException: Unable to connect to a repository at URL '<Path to the URL I am referencing>' --->
SharpSvn.SvnRepositoryIOForbiddenException: Unable to connect to a repository at URL '<Path to the URL I am referencing>' --->
SharpSvn.SvnRepositoryIOForbiddenException: Access to '<Path to the trunk of the repository>' forbidden

当我查看 Subversion 所在的服务器上的事件日志时,它显示构建代理正在尝试使用匿名登录访问 URL,因此我看到了异常。

有没有人遇到过这个?我知道我已经使用用户凭据正确配置了服务端点,因为它在我手动启动或安排构建排队时有效。我对这个主题进行了相当广泛的搜索,但没有找到太多涉及 VSTS 和 SVN 问题的信息。任何指导或问题将不胜感激。

最佳答案

CI 的 Polling Job 由 TFS 服务器上的 Job Agent 执行。显然,您的 Job Agent 配置为作为 NT AUTHORITY\NETWORK SERVICE(即作为 DOMAIN\TFSSERVER$)运行。另一方面,您的 VisualSVN Enterprise 实例似乎配置为使用 NTLM。在这种情况下,轮询作业用来访问存储库的 SharpSvn 库不使用基本凭据。不幸的是,这是 SharpSvn 的限制。您应该在 VisualSVN 服务器配置中为计算机帐户 (DOMAIN\TFSSERVER$) 提供对 SVN 存储库的读取访问权限(以继续使用 NTLM),或者在 VisualSVN 服务器上禁用 NTLM 以切换到基本身份验证。

[一些技术细节]您在 SVN 日志中看到的匿名请求是 SharpSvn 库中实现的正常 HTTP 请求流的一部分:

  • 图书馆首先向服务器提交匿名请求。
  • 如果服务器拒绝请求,库会检查 WWW-Authenticate 响应 header 以检测身份验证方案服务器请求。
  • 与 WWW-Authenticate: Basic 相比,WWW-Authenticate: NTLM header 具有更高的优先级。这就是为什么用户名和密码根本不使用连接端点中指定的。
  • 如果只有 WWW-Authenticate: Basic header 出现在响应中,则库使用客户端提供的回调函数请求凭证信息。此时用户名和连接端点中指定的密码提供给轮询作业的库。

[注意 1] 轮询作业不从 SVN 存储库下载任何源,它只请求自上次成功执行以来更改的文件列表,并决定是否安排构建。

[注释 2] 如果轮询作业由于相同原因连续失败,它会向 TFS 报告每第 100 次失败作为构建失败并提供失败原因。

亚历克斯

关于azure-devops - VSTS 构建失败并出现 SVN 禁止异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37688878/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com