我有两个安装TFS 2017更新1安装。
TFS1:它位于我公司的Intranet上。只有我们的开发者才能访问它。
TFS2:它位于公共互联网上。这适用于为我们推送代码的外部提供商和供应商。
TFS1可以连接到TFS2,但没有反之亦然。
我在TFS2(HTTPS)中有一个Git仓库。
我可以从内部网克隆回购。使用TFS2中的正确凭据,我可以毫无问题地提取和推送代码。我正在使用在TFS2上本地创建的帐户。
我在TFS1中创建了一个从外部TFS2获取的构建。我使用在开发环境中使用的相同凭据创建了一个新的服务端点(外部Git)。
构建无法克隆存储库,但出现以下错误:
2017-05-18T22:34:28.2542280Z Syncing repository: Header TfsGit external (Git)
2017-05-18T22:34:28.3323346Z Starting clone
2017-05-18T22:34:40.3485989Z ##[error]LibGit2Sharp.LibGit2SharpException: Too many redirects or authentication replays
2017-05-18T22:34:40.3485989Z ##[error] at LibGit2Sharp.Core.Ensure.HandleError(Int32 result)
2017-05-18T22:34:40.3485989Z ##[error] at LibGit2Sharp.Core.Proxy.git_clone(String url, String workdir, GitCloneOptions& opts)
2017-05-18T22:34:40.3642360Z ##[error] at LibGit2Sharp.Repository.Clone(String sourceUrl, String workdirPath, CloneOptions options)
2017-05-18T22:34:40.3642360Z ##[error] at Microsoft.TeamFoundation.DistributedTask.Task.Internal.Core.GitHelper.CloneRepository(String repositoryPath, Uri repositoryUrl, Boolean checkoutSubmodules, String username, String password)
2017-05-18T22:34:40.3642360Z ##[error] at Microsoft.TeamFoundation.DistributedTask.Task.Internal.Core.GitHelper.SyncRepository(Uri repositoryUrl, String rootPath, Boolean cleanRepository, Boolean checkoutSubmodules, String sourceVersion, String username, String password)
2017-05-18T22:34:40.3642360Z ##[error] at Microsoft.TeamFoundation.DistributedTask.Task.Internal.Core.GitHelper.SyncRepository(ITaskEndpoint endpoint, String rootPath, Boolean cleanRepository, Boolean checkoutSubmodules, String sourceVersion)
2017-05-18T22:34:40.3642360Z ##[error] at Microsoft.TeamFoundation.DistributedTask.Task.Internal.Core.GitHelper.SyncAndCheckout(Boolean cleanRepository, String sourceBranch, String sourceVersion, Boolean checkoutSubmodules, CancellationToken cancellationToken)
2017-05-18T22:34:40.3642360Z ##[error] at Microsoft.TeamFoundation.DistributedTask.Plugin.Build.GitSourceProvider.<>c__DisplayClass3_0.<PrepareRepositoryAsync>b__0()
我在Jenkins中创建了一个内置版,它成功获取了Git仓库。
我尝试了一些我在网上找到的解决方案。我在TFS2(IIS服务器)上启用了基本身份验证,我在TFS2中尝试了两种身份验证模式:NTLM和Negotiate。
如何在使用位于另一台TFS服务器上的存储库的TFS中进行构建?
答案 0 :(得分:1)
好的,问题已解决。
我们在一年多前使用TFS代理安装了TFS 2015平台。我们删除并安装了最新版本的TFS代理(https://go.microsoft.com/fwlink/?linkid=842100)
配置需要一段时间,我必须应用此链接上建议的修补程序:https://github.com/Microsoft/vsts-agent/issues/759
Bottomline,如果使用TFS 2017,请使用最新版本的TFS代理。
答案 1 :(得分:0)
我认为你从问题的第3行开始:“TFS1可以连接到TFS2,但没有反之亦然。”错误消息表明身份验证失败,因此听起来TFS1上的构建在定义中有一些组件,其中TFS2正在检索TFS1的凭据。关于这可能是什么,我的第一个想法是尝试混合(我假设)TFS1的AD和单个构建中的非AD用户可能会导致着名的“未记录的功能”。我是网络基础设施的新手,所以如果我离我很近的话,请保持温和。希望它至少会为你触发一些其他想法。
编辑因为它在Jenkins中工作,所以更有可能与IIS相关。