요약
이 모듈에서는 패키징에 대한 버전 관리 전략 , 버전 관리 모범 사례 및 패키지 승격 워크플로에 대해 설명했습니다. 소프트웨어 개발 수명 주기 내내 패키지 버전을 관리하기 위한 필수 개념을 배웠습니다.
학습 내용
다음의 이점 및 사용을 설명하는 방법을 학습했습니다.
버전 관리 전략 구현
- 버전 중요도: 종속성 관리 및 소프트웨어 안정성에 적절한 버전 관리가 중요한 이유를 인식합니다.
- 변경할 수 없는 패키지: 게시된 패키지는 변경할 수 없음을 이해합니다. 새 버전만 릴리스할 수 있습니다.
- 버전 유형: 주 버전, 부 버전 및 패치 버전 증가 및 각 버전 사용 시기를 이해합니다.
- 패키지별 버전 관리: 다양한 패키지 유형(NuGet, npm, Maven, Python, 유니버설 패키지)에 대한 버전 관리를 구현합니다.
시맨틱 버전 이해
- SemVer 2.0 형식: 일관된 통신을 위해 Major.Minor.Patch 버전 관리 적용
- 주요 변경 내용: 주 버전을 사용하여 호환되지 않는 API 변경 내용을 알릴 수 있습니다.
- 새로운 기능: 하위 호환성을 위한 추가 기능에는 경미한 버전을 사용합니다.
- 버그 수정: 이전 버전과 호환되는 수정에 패치 버전을 사용합니다.
- 시험판 레이블: 레이블(알파, 베타, rc)을 사용하여 시험판 품질을 나타냅니다.
- 버전 우선 순위: 버전을 비교하고 정렬하는 방법을 이해합니다.
Azure Artifacts 뷰 사용
- 세 가지 기본 보기:@Local 보기, @Prerelease 보기, 및 @Release 보기를 활용합니다.
- @Local 보기: 업스트림 소스를 포함한 모든 패키지를 포함합니다.
- @Prerelease 보기: 시험판 레이블이 있는 패키지로 필터링합니다.
- @Release 보기: 프로덕션 준비 패키지만 표시합니다.
- 뷰별 URI: 특정 보기를 사용하도록 패키지 소비자를 구성합니다.
- 사용자 지정 보기: 세분화된 품질 수준에 대한 추가 보기를 만듭니다.
패키지 홍보
- 품질 게이트: 프로모션을 사용하여 품질 수준을 통해 패키지를 이동합니다.
- 프로모션 워크플로: → @Local → @Prerelease 진행을 구현 @Release 합니다.
- 자동화된 프로모션: Azure Pipelines 작업을 사용하여 테스트 결과에 따라 승격을 자동화합니다.
- 수동 승격: 중요한 패키지에 대해 수동 승인 게이트를 적용합니다.
- 보존 보호: 승격된 패키지는 삭제로부터 보호된다는 것을 이해합니다.
- 업스트림 패키지: 캐시된 업스트림 패키지의 승격을 관리합니다.
파이프라인에서 패키지 전송하기
- 자동화된 게시: 피드에 패키지를 자동으로 게시하도록 빌드 파이프라인을 구성합니다.
- 버전 생성: CI/CD에서 자동화된 버전 번호 생성을 구현합니다.
- 패키지 메타데이터: 패키지에 포괄적인 메타데이터를 포함합니다.
- 원본 태그 지정: 추적 기능을 위해 소스 코드에 패키지 버전 태그를 지정합니다.
모범 사례 적용
- 문서화된 전략: 서면 버전 관리 전략 설명서를 유지 관리합니다.
- SemVer 채택: 의미 체계 버전 관리 2.0에서 표준화합니다.
- 리포지토리당 단일 피드: 피드를 하나만 참조하도록 각 리포지토리를 구성합니다.
- 자동화된 게시: 만들 때 패키지를 자동으로 게시합니다.
- 승격하기 전에 테스트: 상위 보기로 승격하기 전에 항상 패키지를 테스트합니다.
- 팀 조정: 버전 관리를 완료 정의에 통합하십시오.
주요 개념 요약
버전 불변성
- 게시된 버전을 변경하지 마세요. 게시된 패키지는 변경할 수 없습니다.
- 항상 새 버전을 만듭니다. 변경하려면 새 버전 번호가 필요합니다.
- 신뢰 및 안정성: 소비자는 버전이 변경되지 않는다고 신뢰합니다.
의미 체계 버전 관리 원칙
- Major.Minor.Patch: 세 부분으로 구성된 버전 번호입니다.
- 명확한 통신: 버전 번호는 변경 범위를 나타냅니다.
- 이전 버전과의 호환성: 마이너 및 패치는 호환성을 유지합니다.
- 시험판 레이블: 레이블을 사용하여 품질 수준을 나타냅니다.
Azure Artifacts 뷰
- 품질 지표: 뷰는 품질 수준별로 패키지를 구분합니다.
- 프로모션 워크플로: 명시적 프로모션은 뷰를 통해 패키지를 이동합니다.
- 소비자 선택: 소비자는 위험 감수에 따라 선택을 합니다.
- 보존 보호: 삭제로부터 보호되는 승격된 패키지입니다.
자동화의 이점
- 일관성: 자동화된 프로세스는 사람의 오류를 줄입니다.
- 속도: 자동화를 사용하여 더 빠른 릴리스 주기.
- 품질 게이트: 승격 전에 자동화된 테스트입니다.
- 추적: 모든 빌드는 추적 가능한 아티팩트가 생성됩니다.
다음 단계
학습 계속
버전 관리 기술 향상:
- 고급 승격 워크플로: 승인 게이트를 사용하여 다단계 승격을 구현합니다.
- 버전 범위 관리: 종속성 버전 범위 및 제약 조건을 이해합니다.
- 분기 전략: 분기 전략(Gitflow, 트렁크 기반)에 버전 관리를 맞춥니다.
- 핫픽스 버전 관리: 핫픽스 및 백포트를 올바르게 처리합니다.
고급 시나리오 살펴보기:
- Monorepo 버전 관리: monorepo 리포지토리의 버전 패키지입니다.
- 중대한 변경 관리: 기능을 중단하고 제거하는 전략.
- 버전 고정: 소비자가 새 버전을 채택하는 시기를 제어합니다.
- Changelog 자동화: 커밋에서 자동으로 변경 로그를 생성합니다.
실용적인 응용 프로그램
구현 시작:
- 전략을 문서화합니다. 팀에 대한 버전 관리 지침을 작성합니다.
- SemVer 2.0 채택: 의미 체계 버전 관리에서 표준화합니다.
- 피드 및 뷰 구성:@Local, @Prerelease, 및 @Release 뷰를 설정합니다.
- 버전 관리 자동화: 빌드 파이프라인에서 자동화된 버전 생성을 구현합니다.
- 승격 워크플로 설정: 패키지 승격을 정의하고 자동화합니다.
- 팀 교육: 모든 사용자가 버전 관리 전략을 이해하고 따르도록 합니다.
DevOps 사례와 통합
DevOps 워크플로의 버전 관리:
- 연속 통합: 패키지 빌드 및 게시를 자동화합니다.
- 지속적인 업데이트: 제어된 릴리스에 프로모션 워크플로를 사용합니다.
- 코드로서의 인프라: 애플리케이션 패키지와 함께 버전 인프라 패키지.
- 기능 플래그: 점진적 출시를 위해 버전 관리와 기능 플래그를 결합합니다.
자세히 알아보기
공식 설명서
- Azure Artifacts의 주요 개념 - 패키지 불변성을 포함한 Azure Artifacts 개념에 대한 포괄적인 가이드입니다.
- 유니버설 패키지 게시 및 다운로드 - Azure Artifacts | Microsoft Learn - Azure Artifacts의 유니버설 패키지에 대한 빠른 시작 가이드입니다.
- NuGet 패키지 시작 - Azure Artifacts | Microsoft Learn - Azure Artifacts의 NuGet 패키지 관리에 대한 전체 가이드입니다.
추가 리소스
- 의미 체계 버전 관리 2.0.0 - 공식 의미 체계 버전 관리 사양입니다.
- Azure Artifacts 뷰 - 피드 뷰 및 프로모션에 대한 자세한 설명입니다.
- Azure Artifacts 사용에 대한 모범 사례 - Azure Artifacts 에 대한 포괄적인 모범 사례입니다.
- Azure Pipelines의 패키지 버전 관리 - CI/CD 파이프라인의 패키지 버전 관리 가이드입니다.
- 패키지 승격을 위한 피드 보기 - 뷰와 패키지 품질을 전달하는 방법
패키지 유형별 가이드
- NuGet 패키지 버전 관리 - NuGet 관련 버전 관리 지침입니다.
- npm 의미 체계 버전 관리 - npm 및 의미 체계 버전 관리.
- Maven 버전 관리 - Maven 프로젝트 버전 관리.
- Python 패키징 버전 지정자 - PEP 440 버전 지정자.
도구 및 자동화
- GitVersion - Git 기록에서 자동화된 버전 관리
- semantic-release - 버전 관리 및 패키지 게시를 완전히 자동화하는 시스템.
- Azure DevOps CLI - Azure Artifacts 자동화를 위한 명령줄 도구입니다.
커뮤니티 및 지원
- Azure DevOps 설명서: 포괄적인 가이드 및 자습서를 살펴보세요.
- Microsoft Q&A: 질문하고 커뮤니티에서 답변을 얻습니다.
- Azure DevOps 블로그: 최신 기능 및 모범 사례를 계속 업데이트하세요.
- GitHub 샘플: 예제 파이프라인 및 구성을 살펴봅니다.