2017-05-19 5 views
0

온 TFS 2017 업데이트 1 설치 2 개가 있습니다.TFS 2017에서 생성 된 빌드가 복제되지 않음 오류가있는 다른 TFS 2017 서버에서 생성 된 Git 리포지토리 : 리디렉션 또는 인증 재생이 너무 많음

TFS1 : 회사의 인트라넷에 있습니다. 우리 개발자 만 액세스 할 수 있습니다.

TFS2 : 공용 인터넷에 있습니다. 이것은 우리를 위해 코드를 추진하는 외부 공급 업체 및 공급 업체를위한 것입니다.

TFS1은 TFS2에 연결할 수 있지만 반대는 없습니다.

나는 TFS2 (HTTPS)에있는 Git repo가 ​​있습니다.

인트라넷에서 복제본을 복제 할 수 있습니다. TFS2에서 올바른 자격 증명을 사용하여 문제없이 코드를 가져오고 푸시 할 수 있습니다. TFS2에서 로컬로 생성 된 계정을 사용하고 있습니다.

외부 TFS2에서 가져 오는 빌드를 TFS1에서 만들었습니다. 나는 내 dev 환경에서 사용하는 것과 동일한 자격 증명을 사용하여 새로운 Service Endpoint (External Git)를 만들었습니다.

빌드는 다음과 같은 오류로 REPO를 복제 실패

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() 

내가 젠킨스에 빌드를 생성하고 성공적으로 망할 놈의 repo를 가져옵니다.

온라인에서 찾은 몇 가지 해결책을 시도했습니다. TFS2 (IIS 서버)에서 기본 인증을 사용할 수 있도록 TFS2에서 두 인증 모드 (NTLM 및 협상)를 시도했습니다.

다른 TFS 서버에있는 리포지토리를 사용하는 TFS에서 빌드를 만들려면 어떻게해야합니까?

+0

사용자 이름과 암호로 TFS2의 Git 저장소를 복제하려면 TFS1의 에이전트 서버를 빌드 할 때 git clone 명령을 실행하십시오. 성공적으로 실행할 수 있습니까? –

+0

문제가 해결되었습니다. TFS 2017 업데이트 1을 설치했지만 TFS 에이전트를 업데이트하지 않았습니다. 우리는 이전 버전을 실행하고있었습니다. 나는 최신 버전을 다운로드했다. 구성에 시간이 걸렸고이 링크에서 제안 된 수정 프로그램을 적용해야했습니다 (https://github.com/Microsoft/vsts-agent/issues/759). –

답변

1

좋아, 문제가 해결되었습니다. 우리는 TFS 에이전트를 사용하고

우리는 제거 TFS 2015과 플랫폼에 대한보다 년 전에 설치 (https://go.microsoft.com/fwlink/?linkid=842100)

구성 잠시했다 TFS 에이전트의 최신 버전을 설치하고 난 수정 제안 신청했다 https://github.com/Microsoft/vsts-agent/issues/759

하단 라인, TFS 2017을 사용하는 경우 최신 버전의 TFS 에이전트를 사용하십시오.

+0

해답으로 표시하십시오. –

0

"TFS1은 TFS2에 연결할 수 있지만 반대는 없습니다."라는 질문에 3 호부터 시작한다고 생각합니다. 오류 메시지는 인증 실패를 나타내므로 TFS1의 빌드가 TFS2의 자격 증명을 검색하는 정의에 일부 구성 요소가있는 것처럼 들립니다. 이것이 무엇 일지에 관해서는, 나의 첫 번째 생각은 TFS1과 비 AD 사용자를 하나의 빌드로 섞으려고 시도하는 것이 유명한 '문서화되지 않은 기능'을 야기 할 수 있다는 것입니다. 나는 네트워크 기반 시설의 신참이기 때문에 가까운 곳에 있지 않으면 부드럽게 지내라. 다행히도 그것은 적어도 당신을 위해 다른 아이디어를 유발할 것입니다.

편집 젠킨스에서 작동하기 때문에 IIS 관련 가능성이 높습니다.

+0

나는 네트워크 구성에 대해 잘 설명하지 못했다. 나는 TFS1이 인트라넷 안에 있다고 말하려고했다. TFS1은 TFS2에 연결할 수 있습니다. 즉, TFS2 HTTPS 끝점에 도달 할 수 있습니다. TFS2는 외부 (공개 인터넷)입니다. TFS2는 TFS1에 연결할 수 없습니다. (그러고 싶지 않습니다.) 내가 원하는 건 외부 자식이 TFS2 인 TFS1에서 빌드를 만드는 것이다. TFS2에서 IIS 문제가있는 것 같지만 이미 발견 된 모든 해결책을 시도해 보았습니다. –