본문 바로가기
DevOps

MinVer(Semantic Versioning) 사용법

by 문찬웅 2023. 9. 25.

MinVer 란?

Git Tag 를 이용해 프로젝트의 Version 을 관리하기 위한 Minimal .NET 패키지

CLI 도구도 지원

요구사항

설치 도구

  • .NET SDK 6.0 이상
  • Git

빠른 시작

  1. 프로젝트에 MinVer 패키지 설치
  2. 프로젝트 빌드

프로젝트는 Commit 기록에 있는 최신 태그에 따라 버전 자동 지정

사용법

pre-release, RTM(Release to Manufacturing), Patch 등 소프트웨어 버전을 릴리즈하려는 경우 유효한 SemVer 2.x 버전의 태그를 릴리즈하려는 커밋에 생성하기만 하면 됩니다.

예를 들어

git tag 1.2.3
git push --tags

해당 태그를 사용해 커밋에서 소프트웨어를 빌드하면 MinVer는 해당 버전을 어셈블리와 패키지에 적용합니다.

이후 프로젝트를 빌드하여 Nuget Package 등을 만들게 되면 태그에서 계산된 버전이 자동으로 적용됩니다. (csproj 파일 내에 등의 태그가 없어도 됨)

동작 원리

현재 커밋에 버전 태그가 있는 경우:

버전이 태그에 지정된 그대로 사용됨

현재 커밋에 버전 태그가 없는 경우:

  1. 커밋을 검색해 버전 태그가 있는 커밋이 발견된 경우:
    • 발견된 태그의 버전이 시험판(ex 0.0.1-alpha.2)인 경우:
      • 높이(Height)가 증가된 버전이 사용됩니다.(0.0.1-alpha.2 -> 0.0.1-alpha.3)
    • 발견된 태그의 버전이 RTM(ex 0.0.1)인 경우:
      • 패치 버전이 자동으로 증가합니다.
      • 기본 시험판 식별자가 추가됩니다. 기본 식별자는 alpha.0 이지만 사용자 정의 할 수 있습니다.
      • 예를 들어 최신 버전 태그가 0.0.1이면 현재 버전은 0.0.2-alpha.0 입니다
  2. 버전 태그가 있는 커밋이 발견되지 않은 경우
    • 높이가 추가된 기본 버전으로 0.0.0-alpha.0이 사용됩니다.

예시 커밋 그래프

gitGraph commit id: "{1} v0.0.1" tag: "0.0.1" branch dev commit id: "{2} v0.0.1" commit id: "{3} v0.0.2-preview.1" commit id: "{4} v0.0.2-preview.2" commit id: "{5} v0.0.4" tag: "0.0.4" checkout main merge dev id: "{6} 0.0.4" commit id: "{7} v0.0.5-preview.1"