2016-08-31 2 views
0

내장 된 TFS 빌드 체크 인 정책은 구성 할 수 없습니다. 마지막 빌드가 실패했는지 여부를 확인하기 만하면 정책 경고가 표시됩니다. 비주얼 스튜디오. 불행하게도, "마지막"빌드는 가장 최근의 변경 집합으로 끝내는 마지막 시간이 아니라 마지막으로 완료된 시간으로 간주합니다. 결과적으로 사태가 발생해도 정책이 명확해질 수 있습니다. 이 같은 경우를 생각해 볼 수 있습니다 :TFS 사용자 지정 "빌드"체크 인 정책 만들기

조 변경 집합 1234에서 코드를 커밋하고 그것은뿐만 아니라 존이 변경 집합 1235에서 코드를 커밋하고 "최고 빌드"를 구축 시작 "최고 빌드"를 구축 시작하지만 변화는 1235 휴식을 포함 설정

여러 빌드 에이전트가 있기 때문에 두 빌드가 동시에 실행됩니다.

이제 John의 빌드가 완료되었다고 가정 해 봅시다. 빌드 정책이 현재 손상된 상태입니다. 예상 한대로 체크인 할 수 없다는 경고입니다.

Joe의 빌드가 두 번째로 완료되고 성공합니다.이 시점에서 빌드 정책은 취소 상태로 되돌아 가고 경고가 표시되지 않습니다. (예상하지 못했지만 마지막 변경 집합은 여전히 ​​손상되어 수정해야합니다.)

TFS를 사용하면 'Microsoft.TeamFoundation.VersionControl.Client.PolicyBase'를 구현하는 클래스를 컴파일하여 내 자신의 사용자 지정 체크 인 정책을 만들 수 있습니다. 내가 찾을 수

  1. 유일한 공식 문서는 여기 (https://msdn.microsoft.com/en-us/library/bb668980.aspx)이며, 페이지에서 알 수 있듯이,이 내용은 더 이상 사용되지 않으며 더 이상 유지 :이 몇 가지 질문은 여기에 비록입니다. 이것은 사용자 정의 체크인 정책을 구현하는 새롭고/더 나은/더 쉬운 방법을 의미합니까?

  2. 누구나 위에서 설명한 문제를 해결하기 위해이 정책을 작성하는 데 필요한 문서, 특히 "빌드"정책을 어디서 찾을 수 있는지 알고 있습니다. 가장 최근의 빌드 타임이 아닌 최신 변경 세트를 기반으로 체크인 정책을 적용하고 싶습니다.

도움이된다면 도움이 될 것입니다. 이 정책 수정은 대규모 개발 그룹에서 많은 골칫거리를 수정합니다.

+0

왜 게이팅 된 체크 인 (TFVC)이나 요청을 끌어 오기 + 지점 정책 (Git)을 사용하지 않는 것이 좋을까요? 체크인 정책은 유지 관리 및 배포가 쉽지 않으며 Visual Studio를 사용하지 않거나 정책 어셈블리를 완전히 삭제하여 쉽게 회피 할 수 있습니다. –

+0

TFS 게이팅 된 체크인 기능은 작동하지만 이미 과세 된 빌드 에이전트에 부담이되며 도입 할 준비가 된 것보다 많은 오버 헤드가 추가됩니다. 나는 Git을 선호하지만 아직 VC 시스템을 변경할 준비가되어 있지 않습니다.나는 체크인 정책에 대한 팬이 아니지만 이것이 내가 풀어야 할 과제이다. 의견을 보내 주셔서 감사합니다. – jobo54321

답변

0

당신이 제공 한 기사는 더 간단하고 더 좋은 방법이며 상위 버전에 적용됩니다. 레지스터 키 경로는 VS (8.0, 12.0 등 ...) 버전에 따라 다르며 64 비트 컴퓨터의 경우 HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Microsoft \ VisualStudio {VisualStudioVersion} \ TeamFoundation \ SourceControl \ Checkin 정책을 클릭합니다.

맞춤 체크인 정책에서 TFS API (평가 방법)를 통해 최신 빌드 결과를 확인할 수 있습니다. 예를 들어 :

TeamFoundationServer tfs = new TeamFoundationServer("http://tfsserver:8080/tfs"); 
IBuildServer buildServer = (IBuildServer) tfs.GetService(typeof(IBuildServer)); 
IBuildDetailSpec buildDetailSpec = buildServer.CreateBuildDetailSpec("Team Project", "Build Definition Name"); 
buildDetailSpec.MaxBuildsPerDefinition = 1; 
buildDetailSpec.QueryOrder = BuildQueryOrder.FinishTimeDescending; 
IBuildQueryResult results = buildServer.QueryBuilds(buildDetailSpec); 

방금 ​​반드시 변경해야하는 경우

다니엘 체크인 (TFVC을) 문 사용하여 해당 말했듯이, (빌드가 성공 될 수 있습니다) 문제를하지 않았거나 (자식을 가지 정책 요구를 당겨) 대신.