버전·태그·릴리스 규약
SemVer A.B.C 판단 기준, 프로젝트별 태그 접두 유지, 릴리스 노트·라벨 관리 규칙.
버전 번호 — SemVer A.B.C
버전업이 필요할 만큼 큰 수정이면, 내용에 따라 어느 자리를 올릴지 판단합니다.
| 자리 | 언제 올리나 | 예 |
|---|---|---|
| A (major) | 호환이 깨지거나 구조가 바뀔 때 | 통신 전문의 필수 필드 변경, 설정 파일 형식 변경, 구조 전환 |
| B (minor) | 새 기능(큰 기능 단위)을 추가할 때 | 새 화면, 새 제어 기능 |
| C (patch) | 버그·보안 수정, 작은 개선 | 오표기 수정, 오판정 수정, 취약점 조치 |
- 사소한 수정(문구·스타일 등)은 그때마다 올리지 않고 다음 릴리스에 묶습니다.
- 상위 자리를 올리면 하위 자리는 0 으로 되돌립니다. (
1.4.7→ 새 기능 →1.5.0) - 버전 번호는 제품마다 따로 관리합니다. 한 제품의 번호를 다른 제품의 기본값으로 쓰지 않습니다.
왜 — 버전 번호만 보고도 "업데이트해도 기존 설정·연동이 그대로 동작하는가"를 판단할 수 있어야 합니다.
태그 — 프로젝트의 기존 접두를 유지
한 저장소에서 여러 산출물을 내거나 제품을 구분해야 하는 경우, 태그 앞에 프로젝트 고유 접두를 붙입니다. 이미 쓰고 있는 접두는 바꾸지 않습니다.
| 예 | 뜻 |
|---|---|
sv-v1.12.0 | 서버 릴리스 |
cl-v1.12.0 | 클라이언트(웹 화면) 릴리스 |
v2.3.1 | 접두가 없는 단일 제품 저장소 |
왜 — 접두가 중간에 바뀌면 태그 목록이 두 갈래로 나뉘어, 과거 릴리스를 찾거나 비교하기 어려워집니다.
릴리스 — 릴리스 노트 + CHANGELOG
릴리스할 때는 다음을 함께 남깁니다.
- 태그 — 위 접두 규칙대로
- 릴리스 노트 (예: GitHub Release) — 이번 버전에서 바뀐 점, 업데이트 시 주의점
- CHANGELOG — 저장소 안의 누적 변경 기록
릴리스 노트에는 사용자·협력사가 알아야 할 것을 씁니다.
## sv-v1.12.0 (2026-10-27)
### 새 기능
- 세척 설정 화면에서 로봇이 거부한 항목을 표시 (#120)
### 수정
- 예약세척 취소 후 우유밀기가 계속 막히던 오판정 수정 (#118)
### 업데이트 시 주의
- 없음 (기존 설정 그대로 동작)
- 큰 기능은 별도 기능 브랜치·별도 릴리스로 분리합니다 ('브랜치 운영' 문서 참조).
- 릴리스 노트·이슈 본문에 비밀값(비밀번호·토큰·키) 을 넣지 않습니다.
라벨
이슈·PR 에 라벨을 붙여 분류합니다.
| 라벨 묶음 | 용도 | 예 |
|---|---|---|
type/* | 변경 유형 | type/feat, type/fix, type/docs |
semver/* | 올릴 버전 자리 | semver/major, semver/minor, semver/patch |
area/* | 영향 영역 | area/server, area/client, area/protocol |
협업 저장소에는 그 저장소 고유의 라벨이 따로 있을 수 있습니다(예: 요청 방향을 나타내는 from:robot / from:server). 그 경우 저장소 규약이 우선합니다.
우선순위
- 각 프로젝트 고유 규칙(저장소의 README·에이전트 규약 문서)
- 푸시·외부 공개에 대한 승인, 자동 배포 트리거(예: 특정 브랜치 푸시 시 자동 배포) 확인
- 이 문서의 공통 규칙