프로그래밍에 대한 고찰 및 생각

[1] Semantic Version 본문

카테고리 없음

[1] Semantic Version

Source 2022. 4. 17. 15:20

Spring boot 를 사용하면서 아래와 같은 다양한 버전들을 보게되는데 버전 이름 생성하는 규칙과 옆에 붙어있는 태그들(CURRENT, GA...) 이 정확히 어떻게 붙여지고 어떤것을 의미하는지 정리를 한번 해봐야겠다는 생각이 들었다.

 

 

그 중 5.6.2 5.2.15 처럼 숫자로 이루어진 형태의 버전들에 대해 먼저 알아보았다.

 

01.  소프트웨어 개발에서 Versioning이 중요한 이유?


소프트웨어 Version 은 특정한 이름/번호를 통해 소프트웨어나 패키지의 상태를 구분할 수 있게 해준다.

여기에는 다양한 Versioning Schemes 가 있지만 그중 유명한 것중 하나는 Semantic Versioning (SemVer) 이다.

 

 

 

02. SemVer ?


출처. https://www.baeldung.com/cs/semantic-versioning

 

SemVer 의 기본적인 포맷은 위와 같다. X Y Z 는 순차적으로 증가하는 정수로 각각 Major, Minor, Patch 를 나타낸다.

 

  • Major
    • Major Version은 기존 API 를 break 하는 기능을 새로 개발할 때, 즉 프로젝트에 하위 호환성이 없는 변경사항을 추가할 때 증가되어야 한다.
    • 이때 Minor, Patch 는 0으로 초기화 되어야한다.
    • 예를 들어, 3.5.2 버전에서 Major 버전을 올린다면 4.0.0 이 될것이다.
  • Minor 
    • Minor Version은 기존 API를 기능적으로 변경하였지만 하위 호환성이 존재하는 변경일 때 증가된다. 또는 내부 코드의 상당한 수정이 있었다면 증가할 수 있다.
    • 이때 Patch 는 0으로 초기화 되어야한다.
  • Patch
    • 이전 버전과 호환되는 버그 수정을 할 때 증가된다.
    • Patch 업데이트 시에는 API가 변경되어서는 안된다. 

 

추가 라벨

  • Pre-Release
    • 1.0.0-alpha.1 은 1.0.0 버전의 사전 릴리즈 버전임을 나타낸다. 이 버전은 불안정하며, 사용할 경우 위험성이 높음을 의미한다.
  • Build

 

출처. https://www.baeldung.com/cs/semantic-versioning