Reese-log
  • About
  • Blog

© 2025 Reese. All rights reserved.

2023년 7월 3일

semver - Semantic Versioning

#Etc

소프트웨어 버전 작성 (Software Versioning)

소프트웨어 버전 작성은 소프트웨어의 특정 상태를 식별하고 추적하기 위한 체계적인 방법입니다. 개발 과정에서 발생할 수 있는 혼란을 줄이고, 사용자 및 개발자 간의 소통을 원활하게 하기 위해서 일관된 버전 작성 기준이 필요합니다.

여러 버전 관리 방법 중 Semantic Versioning (유의적 버전 관리)이 가장 널리 사용되고 있습니다. 이번 글에서는 Semantic Versioning의 개념과 규칙을 자세히 알아보겠습니다.

Semantic Versioning이란?

Semantic Versioning(세만틱 버저닝)은 GitHub 공동 창립자인 Tom Preston-Werner가 제안한 소프트웨어 버전 관리 규칙입니다. 현재 공식 사양은 2.0.0 버전입니다.

버전은 주.부.수 (MAJOR.MINOR.PATCH) 형식으로 관리하며, 공개 API의 변경 사항에 따라 규칙적으로 버전을 증가시킵니다.

예: 1.4.2

🔢 버전 번호의 의미

버전의미예시
MAJOR하위 호환되지 않는 변경 발생 시1.0.0 → 2.0.0
MINOR하위 호환되는 기능 추가/개선 시1.0.0 → 1.1.0
PATCH버그 수정 등 사소한 변경 시1.0.0 → 1.0.1

상세 규칙 정리

  • 공개 API 정의 필수
  • 버전 형식
  • 증가 규칙
  • 불변성 (Immutability)
  • 0.x 버전의 의미
  • 버전 변화 기준
  • 선행(pre-release) 버전
  • 빌드 메타데이터
  • 예시로 이해하기

    bash
    11.0.0        # 첫 번째 안정 버전
    21.0.1        # 버그 수정
    31.1.0        # 새로운 기능 추가
    42.0.0        # 하위 호환되지 않는 변경
    52.0.0-alpha  # 다음 주요 버전의 사전 배포
    62.0.0+202308 # 빌드 메타 정보 포함

    요약

  • 버전은 주(主).부(部).수(修) 형식 (MAJOR.MINOR.PATCH)
  • 하위 호환을 깨뜨리는 변경 → MAJOR
  • 새로운 기능, 개선 (호환 유지) → MINOR
  • 버그 수정 → PATCH
  • 사전 배포 / 메타 정보는 및 +로 추가
  • 🔗 참고 자료

  • SemVer 공식 문서 (한국어)