마이그레이션을 위한 서버 환경 유효성 검사 및 준비
유효성 검사에는 마이그레이션을 위해 업그레이드된 Azure DevOps Server 환경을 준비하는 작업이 포함됩니다. 이 문서는 일반적인 문제를 해결하는 데 도움이 됩니다. 오류가 없고 모든 유효성 검사가 통과된 경우 팀 프로젝트 컬렉션이 준비되고 다음 단계로 넘어갈 수 있습니다. 모든 검사가 통과되지 않은 경우 로그 파일을 확인하여 오류를 찾습니다.
필수 조건
프로세스 유효성 검사 유형 알아보기
유효성 검사 중에 데이터 마이그레이션 도구는 각 프로젝트의 대상 프로세스 모델을 결정합니다. 컬렉션의 각 프로젝트에 다음 두 프로세스 모델 중 하나를 자동으로 할당합니다.
- 상속된 프로세스 모델: 프로젝트가 AGILE, 스크럼 또는 CMMI(Capability Maturity Model Integration) 프로세스 템플릿을 사용하여 만들어졌으며 사용자 지정되지 않은 경우
- 호스트된 XML 프로세스 모델: 프로젝트 프로세스가 사용자 지정된 것으로 표시되는 경우 사용자 지정 프로세스에는 사용자 지정 필드, 작업 항목 형식 또는 기타 유형의 사용자 지정이 포함됩니다.
Hosted XML 프로세스가 대상 프로세스 모델인 경우 데이터 마이그레이션 도구는 사용자 지정을 마이그레이션할 수 있는지 유효성을 검사합니다. 데이터 마이그레이션 도구는 유효성 검사 중에 다음 두 개의 파일을 생성합니다.
- DataMigrationTool.log: 컬렉션에 있는 프로세스 유효성 검사 오류 집합을 포함합니다. 마이그레이션을 진행하기 위해 발견된 모든 프로세스 오류를 수정합니다.
- TryMatchOobProcesses.log: 대상 프로세스 모델인 상속 또는 호스트된 XML을 각 프로젝트에 대해 나열합니다. 호스트된 XML 프로세스 모델을 대상으로 설정되는 프로젝트의 경우 사용자 지정으로 간주되는 이유를 설명합니다. 이러한 오류를 수정할 필요는 없지만 상속 프로세스 모델로 마이그레이션하려는 경우 수행할 작업을 지침으로 제공합니다. 컬렉션이 마이그레이션되면 프로젝트를 상속 프로세스 모델로 마이그레이션할 수 있습니다.
팀 프로젝트 컬렉션 유효성 검사
각 팀 프로젝트 컬렉션은 자체 SQL 데이터베이스에 해당하므로 유효성 검사 프로세스는 다음을 포함하여 컬렉션의 다양한 측면을 검사합니다.
- 컬렉션 데이터베이스의 크기
- SQL 데이터베이스의 데이터 정렬
- 컬렉션에 있는 사용자의 ID
- 템플릿 사용자 지정(프로세스)
유효성 검사를 시작하려면 마이그레이션기 도구를 사용합니다. Azure DevOps Server 환경의 AT(애플리케이션 계층) 서버 중 하나에서 마이그레이션기 도구를 실행하는 것이 좋습니다.
특정 명령줄 옵션의 경우 다음 명령을 사용하여 도움말 텍스트를 요청합니다.
Migrator validate /help
유효성 검사를 시작하는 가장 일반적인 방법은 다음 구조로 팀 프로젝트 컬렉션의 URL을 지정하는 것입니다.
Migrator validate /collection:http://localhost:8080/tfs/DefaultCollection
유효성 검사 경고 및 오류 보기
마이그레이션 도구가 완료되면 명령 프롬프트 화면에 표시되는 로그 파일 및 결과를 생성합니다. 오류가 발생하지 않고 모든 유효성 검사가 통과하면 팀 프로젝트 컬렉션이 다음 단계로 준비됩니다. 유효성 검사에 실패하는 경우 로그 파일을 검토하여 오류를 식별한 다음 해결합니다.
유효성 검사에 Migrator.log
대한 필수 세부 정보를 포함하고 사용자 지정을 유지하는 데 도움이 되는 파일에 집중합니다. 다른 파일은 이름에 따라 특정 유효성 검사 오류에 해당합니다. "유효성 검사 - 프로젝트 1의 유효성 검사 시작" 문자열을 검색합니다. 각 프로젝트의 유효성이 검사됩니다. 모든 프로젝트를 검색하고 접두사를 포함하는 줄을 검색합니다. [Error...
TryMatchOobProcesses.log
또한 OOB(Out-of-Box) 프로세스(예: Agile, 스크럼 또는 CMMI)를 사용하는 프로젝트와 관련된 오류를 나열합니다. 프로젝트에서 사용자 지정 없이 OOB 프로세스를 사용하는 경우 프로젝트는 상속된 모델에 포함됩니다. 중요한 것은 이 파일의 오류가 마이그레이션 프로세스를 방해하지 않는다는 것입니다.
유효성 검사 오류 목록은 유효성 검사 오류 해결을 참조 하세요. 각 유효성 검사 오류에 대해 오류 번호, 설명 및 해결할 메서드를 제공했습니다. 유효성 검사 로그에 다양한 오류 유형이 나타날 수 있습니다. 발생한 오류를 해결하기 위해 학습된 DevOps 파트너, Microsoft Consulting Services 또는 Microsoft 프리미어 지원에서 지원을 요청합니다.
프로세스 템플릿 오류 해결
가장 큰 오류는 프로세스 템플릿 문제입니다. 이러한 문제는 Azure DevOps Server의 최신 기능을 통합하지 않는 오래된 팀 프로젝트 또는 Azure DevOps Services에서 지원되지 않는 사용자 지정에서 비롯됩니다. 그러나 Azure DevOps Services는 다양한 사용자 지정을 지원하며 유효성 검사에서는 해결 허용이 필요한 사용자만 플래그를 지정합니다. 데이터 마이그레이션 도구는 Azure DevOps Services 호환성을 위해 템플릿을 포괄적으로 검사하지만 일부 수정이 필요할 수 있습니다.
- 사용자 지정된 프로세스 템플릿 또는 오래된 템플릿은 마이그레이션 중에 프로세스 유효성 검사 오류를 일으킬 수 있습니다.
- OOB Agile, 스크럼 또는 CMMI 프로세스를 사용하는 경우 오류를 확인
TryMatchOobProcesses.log
합니다. 오류가 없는 프로젝트는 OOB 프로세스에 매핑됩니다. - 일부 사용자 지정은 Azure DevOps Services에서 작동하지 않습니다. 지원되는 사용자 지정 목록을 검토합니다.
- 이전 템플릿을 사용하는 프로젝트의 경우 기능 구성 마법사를 실행하여 최근 기능으로 템플릿을 업데이트하고 오류 수를 줄입니다.
- 프로세스 오류를 수정하는 컴퓨터에서 사용할 수 있는지 확인
witadmin
합니다. 프로세스 템플릿을 변경하는 데 필수적입니다. - For 및 Not 규칙은 마이그레이션을 시도하기 전에 프로세스 템플릿에서 주석 처리하거나 제거해야 합니다. 이러한 규칙은 Azure DevOps Service에서 지원되지만 마이그레이션 프로세스의 일부로 지원되지 않습니다. 컬렉션이 마이그레이션되면 이러한 규칙을 프로세스 템플릿에 다시 추가할 수 있습니다.
프로세스 오류를 해결하기 위해 다음 도구를 고려합니다.
- Visual Studio 설치에 포함된 witadmin.exe 명령줄 도구를 활용합니다. 이러한 오류 해결에 대한 자세한 기술 설명서는 이 링크에서 확인할 수 있습니다.
- 문서화되지 않은 마이그레이션자 도구 명령을 사용하여 각 팀 프로젝트에 대한 프로세스 템플릿 내보내기를 자동화합니다. Migrator는 /collection:http://localhost:8080/tfs/DefaultCollection /SaveProcesses의 유효성을 검사합니다.
- GitHub(링크)에서 TFS 팀 프로젝트 관리자를 탐색합니다. 이를 통해 기본 제공 템플릿을 포함하여 알려진 프로세스 템플릿과 팀 프로젝트를 비교할 수 있습니다.
오류를 해결하려면 XML 구문을 변경하고 변경 내용을 프로젝트에 다시 적용합니다.
팁
TFS Power Tools를 사용하는 대신 XML을 수동으로 수정하는 것이 좋습니다.
프로젝트에서 프로세스 템플릿을 얻으려면 데이터 마이그레이션 도구 명령을 실행할 때 매개 변수를 추가 /SaveProcesses
합니다.
Migrator validate /collection:{collection URL} /tenantDomainName:{name} /region:{region} /SaveProcesses
이 명령은 프로젝트에서 XML을 추출하고 로그와 동일한 폴더에 배치합니다. 파일을 편집할 수 있도록 로컬 컴퓨터에 zip 파일을 추출합니다.
이제 XML을 수정합니다. DataMigrationTool.log 파일의 로그를 사용하여 각 프로젝트의 오류를 확인합니다.
일부 오류는 명령을 사용해야 witadmin changefield
합니다. 필드 이름을 변경하는 것이 가장 일반적인 예입니다. 시간을 절약하려면 witadmin changefield
명령을 실행한 다음 데이터 마이그레이션 도구를 다시 실행하는 것이 좋습니다. 이렇게 하면 수정된 이름으로 XML을 다시 내보냅니다. 그렇지 않으면 XML 구문의 필드도 수동으로 수정합니다.
수정한 후에는 변경 내용을 Azure DevOps Server에 다시 적용합니다. 변경한 내용에 따라 하나 이상의 witadmin 명령을 실행해야 합니다. 이 프로세스를 자동화하기 위해 PowerShell 스크립트를 만들었습니다. 스크립트에는 전체 프로세스를 확인하는 데 필요한 모든 witadmin 명령이 포함됩니다.
프로세스 사용자 지정 스크립트에서 스크립트를 가져올 수 있습니다. import/ConformProject.ps1 스크립트를 사용합니다.
.\conformproject.ps1 "<collection url>" "<project name>" "<process template folder>"
스크립트가 완료되면 데이터 마이그레이션 도구를 다시 실행하여 컬렉션의 유효성을 검사합니다. 데이터 마이그레이션 도구가 더 이상 유효성 검사 오류를 생성하지 않을 때까지 1~3단계를 수행합니다.
팁
XML 및 witadmin을 처음으로 사용하는 경우 한 번에 하나씩 수정한 다음 이를 준수하는 것이 좋습니다. 모든 오류가 해결될 때까지 이 루프를 계속합니다.
시스템 프로세스 업데이트
이전 버전의 Azure DevOps Server로 시작한 경우 프로젝트에서 이전 프로세스 템플릿을 사용할 가능성이 높습니다. 이러한 프로젝트가 기능 구성 마법사를 사용하여 업데이트되지 않은 경우 데이터 마이그레이션 도구는 프로세스 오류를 검색합니다. 드문 경우라도 마법사가 이전 프로세스 관련 문제를 해결하지 못할 수 있습니다.
다음 샘플 오류 메시지 중 일부를 수신할 수 있습니다.
Invalid process template: WorkItem Tracking\Process\ProcessConfiguration.xml:: TF402571: Required element PortfolioBacklog is missing from Process Configuration.
Invalid process template: WorkItem Tracking\Process\ProcessConfiguration.xml:: TF402571: Required element BugWorkItems is missing from Process Configuration.
Invalid process template: WorkItem Tracking\Process\ProcessConfiguration.xml:: TF402571: Required element FeedbackRequestWorkItems is missing from Process Configuration.
Invalid process template: WorkItem Tracking\Process\ProcessConfiguration.xml:: TF402571: Required element FeedbackResponseWorkItems is missing from Process Configuration.
Invalid process template: WorkItem Tracking\Process\ProcessConfiguration.xml:: TF402574: ProcessConfiguration doesn't specify required TypeField Team.
Invalid process template: WorkItem Tracking\Process\ProcessConfiguration.xml:: TF402574: ProcessConfiguration doesn't specify required TypeField RemainingWork.
Invalid process template: WorkItem Tracking\Process\ProcessConfiguration.xml:: TF402574: ProcessConfiguration doesn't specify required TypeField Order.
Invalid process template: WorkItem Tracking\Process\ProcessConfiguration.xml:: TF402574: ProcessConfiguration doesn't specify required TypeField Effort.
Invalid process template: WorkItem Tracking\Process\ProcessConfiguration.xml:: TF402574: ProcessConfiguration doesn't specify required TypeField Activity.
Invalid process template: WorkItem Tracking\Process\ProcessConfiguration.xml:: TF402574: ProcessConfiguration doesn't specify required TypeField ApplicationStartInformation.
Invalid process template: WorkItem Tracking\Process\ProcessConfiguration.xml:: TF402574: ProcessConfiguration doesn't specify required TypeField ApplicationLaunchInstructions.
Invalid process template: WorkItem Tracking\Process\ProcessConfiguration.xml:: TF402574: ProcessConfiguration doesn't specify required TypeField ApplicationType.
Invalid process template: WorkItem Tracking\Process\ProcessConfiguration.xml:: TF400572: The Project Process Settings must be configured for this feature to be used.
프로젝트를 사용자 지정하지 않은 경우(예: 추가된 필드, 작업 항목 유형 등) 이러한 오류를 수정하는 것은 간단합니다. 그러나 프로세스를 사용자 지정한 경우 이 접근 방식은 충분하지 않습니다. 사용자 지정을 덮어쓰지 않도록 프로세스 템플릿을 수동으로 조정해야 합니다.
각 프로젝트에 대해 다음 단계를 수행하여 프로세스를 정렬합니다.
- 프로젝트가 시작된 초기 프로세스(스크럼, Agile 또는 CMMI)를 식별합니다.
- GitHub의 프로세스 사용자 지정 스크립트를 방문하여 리포지토리를 다운로드합니다.
- 마이그레이션 폴더의 내용에 집중합니다.
- 다음
ConformProject.ps1
스크립트를 활용하여 선택한 프로젝트를 Agile 시스템 프로세스에 맞춥니다. 이 작업은 전체 프로젝트를 Agile로 업데이트합니다.
.\ConformProject.ps1 "<collection url>" "<project name>" "c:\process-customization-scripts\import\agile"
일반적인 유효성 검사 오류
VS402841: 작업 항목 형식의 필드 X에 syncnamechanges=false가 있지만 ID 필드로 만드는 규칙이 있습니다. ID 필드에 syncnamechanges=true가 있어야 합니다. 이 변경 내용을 포함하도록 프로세스 템플릿을 업데이트하세요.
Azure DevOps Services에서 모든 ID 필드에 특성이 있어야 syncnamechanges=true
하는 규칙을 추가했습니다. Azure DevOps Server에서는 해당 규칙이 적용되지 않습니다. 따라서 데이터 마이그레이션 도구는 이를 문제로 식별합니다. Azure DevOps Server 온-프레미스에서 이러한 변경을 수행해도 아무런 피해가 발생하지 않습니다.
witadmin changefield
명령을 실행합니다. 명령 구문은 다음 예제와 같습니다.
witadmin changefield /collection:http://AdventureWorksServer:8080/tfs/DefaultCollection /n:fieldname /syncnamechanges:true
witadmin changefield
명령에 대한 자세한 내용은 작업 항목 필드 관리를 참조 하세요.
TF402556: System.IterationId 필드가 잘 정의되려면 반복 ID의 이름을 지정하고 해당 형식을 정수로 설정해야 합니다.
이 오류는 종종 오래된 프로세스 템플릿과 연결됩니다. 이 문제를 해결하려면 각 프로젝트에 대해 기능 구성 마법사를 실행할 수 있습니다. 또는 다음 명령을 실행하여 프로세스를 자동화할 수 있습니다.
witadmin changefield /collection:http://AdventureWorksServer:8080/tfs/DefaultCollection /n:fieldname /name:newname
TF402571: 프로세스 구성에서 필요한 요소 BugWorkItems가 없습니다.
이 오류는 프로세스가 일정 시간 동안 업데이트되지 않은 경우에 일반적으로 표시됩니다. 이 문제를 해결하려면 각 프로젝트에 대한 기능 구성 마법사를 실행합니다.
TF402564: XX 전역 목록을 정의했습니다. 64개만 허용됩니다.
Azure DevOps Services는 기본적으로 64개의 글로벌 목록을 지원합니다. 이 오류는 일반적으로 각 새 파이프라인이 명명 Builds - TeamProjectName
된 전역 목록을 만들 때 광범위한 빌드 파이프라인이 있을 때 발생합니다. 이 오류를 해결하려면 오래된 전역 목록을 제거합니다.
유효성 검사 반복
각 반복에서 오류를 해결하고 유효성 검사 검사를 수행하여 유효성 검사 로그 파일에 표시된 대로 오류를 해결합니다. 모든 오류가 수정되고 컬렉션 유효성 검사에 성공했음을 확인할 때까지 이 주기를 유지합니다.