-
Notifications
You must be signed in to change notification settings - Fork 6
시멘틱 버저닝
KIM DAEUN edited this page Aug 22, 2024
·
1 revision
시멘틱 버저닝(Semantic Versioning)은 소프트웨어의 버전을 관리하는 체계적인 방법입니다. 이는 MAJOR.MINOR.PATCH
형식을 따르며, 각 숫자는 다음과 같은 의미를 가집니다:
- MAJOR: 호환되지 않는 API 변경
- MINOR: 이전 버전과 호환되는 기능 추가
- PATCH: 이전 버전과 호환되는 버그 수정
예를 들어, 버전 2.3.1
은 두 번째 주요 릴리스의 세 번째 minor 업데이트이며, 그 이후 한 번의 패치가 적용되었음을 의미합니다.
시멘틱 버저닝은 다음과 같은 이유로 중요합니다:
- 명확한 의사소통: 소프트웨어의 변경 사항을 명확하게 전달합니다.
- 안정성: 사용자가 업데이트로 인한 영향을 예측할 수 있게 해줍니다.
- 개발 흐름: 프로젝트의 진행 상황과 중요한 변경 사항을 쉽게 추적할 수 있습니다.
사용자의 서비스 이용 흐름에 현저한 변화가 생긴 경우
- Domain을 기준으로, 새로운 API 연결 및 Endpoint 생성이 이루어졌을 때
- 신규 route 혹은 기능 추가
- 기존 기능/페이지의 완전한 대체
사용자의 서비스 이용 흐름에 큰 변화는 없으나 기능적인 변경사항을 실감할 수 있는 경우
- 기존 Domain에 기능이 추가된 경우
- 기존 페이지, 컴포넌트에 기능 혹은 스타일 변경이 적용된 경우
- 스타일 변경
- 웹 접근성 개선
- 전체적인 서비스에 크게 영향을 미치진 않으나 자잘한 컴포넌트/훅이 추가
사용자가 기능적인 변경사항을 실감할 수 없는 경우
- 보안 개선사항
- 리팩토링
- 렌더링 성능 개선
- 빌드 속도 개선
- 의존성 패키지의 마이너/패치 업데이트
- 오타 수정
- 버그 수정
우리 팀은 develop
과 main
두 개의 주요 브랜치를 운영하고 있습니다. 각 브랜치는 다른 환경에 배포되므로, 다음과 같은 버저닝 전략을 적용합니다:
4.1 main 브랜치 (www.cruru.kr)
- 공식 릴리스 버전을 나타내는 시멘틱 버저닝을 사용합니다.
- 예:
1.2.3
,2.0.0
- 이 버전은 안정적이고 사용자에게 공개된 버전을 의미합니다.
- MAJOR, MINOR, PATCH 업데이트는 이 브랜치를 기준으로 결정됩니다.
4.2 develop 브랜치 (beta.cruru.kr)
- 이 버전은 다음 릴리스를 위해 개발 중인 버전을 의미합니다.
- 프리릴리스 버전을 나타내는 접미사를 사용합니다.
- 예:
1.3.0-beta.1
- 베타 버전:
beta.1
,beta.2
등
-
develop
브랜치에서 새로운 기능 개발 시작:- 현재
main
버전이1.2.3
이라면,develop
은1.3.0-beta.1
로 시작
- 현재
-
develop
에서 릴리스 준비가 완료되면:-
1.3.0-beta.1
로 변경하고 최종 테스트 진행
-
- 릴리스 승인 후
main
으로 병합:-
main
브랜치의 버전을1.3.0
으로 업데이트 - 태그 생성 및 CHANGELOG 업데이트
-
-
main
에서 새로운develop
으로 분기:-
develop
브랜치의 버전을 다음 개발 버전(예:1.4.0-beta.1
)으로 설정
-
- 긴급한 버그 수정이 필요한 경우,
main
에서 직접 핫픽스 브랜치를 생성합니다. - 수정 후
main
으로 병합하면서 PATCH 버전을 증가시킵니다. (예:1.3.1
) - 이후
develop
에도 해당 수정사항을 병합합니다.
-
develop
브랜치의 코드가main
브랜치로 병합되면, 해당 병합 커밋에 버전 번호가 포함된 Git 태그를 추가합니다. 예를 들어,v1.3.0
과 같은 형식으로 태그를 생성합니다. - 이렇게 생성된 태그를 기준으로 릴리즈 노트를 작성합니다. 릴리즈 노트를 자동으로 생성할 수 있도록 스크립트나 도구를 설정하여, 수작업 없이 릴리즈 노트가 자동으로 작성되도록 합니다. (GitHub Docs - 자동으로 생성된 릴리스 정보 참고)