4.8 KiB
4.8 KiB
📘 SMART IMS 버전 관리 규정 (Versioning Rules)
SMART IMS 플랫폼의 모든 배포와 업데이트는 아래의 MAJOR.MINOR.PATCH.BUILD 4자리 버전 관리 체계를 엄격히 준수합니다.
1️⃣ MAJOR (첫 번째 자리)
대규모 변경, 하위 호환성 붕괴
- 의미: 시스템의 근간이 바뀌거나 기존 데이터/연동 체계와의 호환성이 파괴될 때 증가합니다.
- 상황: API 구조 전면 개편, 데이터베이스 아키텍처 변경, 통신 프로토콜 교체 등.
- 규칙:
- 절대 자주 올리지 않으며, "제품의 세대 교체" 수준에서만 사용합니다.
- 사용자는 업데이트 전 반드시 호환성 여부를 검토해야 합니다.
- 예시:
1.x.x.x→2.0.0.0
2️⃣ MINOR (두 번째 자리)
기능 추가, 호환성 유지
- 의미: 기존 시스템과 호환성을 유지하면서 새로운 기능이 추가되거나 UI가 대폭 개선될 때 증가합니다.
- 상황: 신규 모듈 추가, 기존 기능 확장, 설정 옵션 대량 추가 등.
- 규칙:
- 기능 단위의 주요 배포 시 사용합니다.
- 고객에게 "업데이트 권장" 수준의 변화를 의미합니다.
- 예시:
1.2.x.x→1.3.0.0
3️⃣ PATCH (세 번째 자리)
버그 수정, 품질 개선
- 의미: 새로운 기능 추가 없이 기존 기능의 버그를 수정하거나 성능을 개선할 때 증가합니다.
- 상황: 보안 패치, 성능 최적화, 로직 오류 수정 등.
- 규칙:
- 기능 추가는 엄격히 금지됩니다.
- 긴급한 오류 수정 및 정기 유지보수 배포에 주로 사용됩니다.
- 예시:
1.2.3.x→1.2.4.0
4️⃣ BUILD / REVISION (네 번째 자리)
빌드 번호 또는 미세 변경
- 의미: 사용자에게 기능적/시각적 변화를 거의 주지 않는 기술적 수정 시 증가합니다.
- 상황:
- 빌드 번호: CI/CD 파이프라인의 빌드 식별자.
- 핫픽스: 오타 수정, 로그 문구 변경, 주석 업데이트 등.
- 규칙:
- 사용자에게 "버전 변경 체감"을 주지 않는 수준의 작업입니다.
- 릴리스 노트(Changelog) 작성을 생략할 수 있습니다.
- 예시:
1.2.3.45(45번째 빌드)
💡 버전 비교 및 업데이트 공지 원칙
- 플랫폼은 원격 저장소의 최신 태그 버전과 현재 설치된 버전의 4자리를 순차적으로 비교합니다.
- 상위 자리수가 더 높을 경우 즉시 시스템 업데이트 안내를 발생시킵니다.
- 모든 버전은
v접두사를 포함하여 관리하나, 비교 시에는 숫자로 정규화하여 처리합니다.
🚀 배포 및 태그 생성 절차 (Standard Deployment Procedure)
경고: 이 절차를 위반할 경우 운영 서버에서 업데이트가 누락되거나 버전 불일치가 발생할 수 있습니다.
[Step 1] 사전 검증 (Pre-check)
-
작업 내용 커밋 확인:
git status명령어로 커밋되지 않은(Unstaged/Modified) 파일이 없는지 확인합니다.- ❌ 실수 패턴: 코드를 수정하고 저장만 한 뒤, 커밋 없이 태그를 생성하면 구버전 코드가 배포됩니다.
-
버전 번호 동기화 (필수): 아래 2개 파일의
version필드를 배포할 버전 번호(예:0.4.3.5)로 직접 수정합니다.root/package.jsonroot/server/package.json- 이 작업이 누락되면 시스템은 업데이트 후에도 "구버전"으로 인식합니다.
[Step 2] 커밋 및 태그 생성 (Commit & Tag)
반드시 소스코드 커밋을 먼저 수행하고, 그 커밋에 태그를 붙여야 합니다.
# 1. 버전 파일 및 변경 사항 커밋
git add .
git commit -m "[BUILD] v0.4.3.5 - 배포 내용 요약"
# 2. 원격 저장소로 코드 푸시 (먼저!)
git push origin main
# 3. 태그 생성 (경량 태그 권장)
git tag v0.4.3.5
# 4. 태그 푸시 (배포 트리거)
git push origin v0.4.3.5
[Step 3] 운영 서버 배포 확인
- 운영 서버(NAS)에서 업데이트 스크립트 실행
- 업데이트 완료 후 브라우저에서 '새로고침(Ctrl+F5)' 또는 캐시 비우기 수행
- [시스템 관리] > [버전 정보] 메뉴에서 표시되는 버전 번호와 빌드 일자가 최신인지 확인
🚫 절대 금지 사항 (Do Not)
- 커밋 없이 태그만 생성 금지: 운영 서버는 태그가 가리키는 시점의 코드를 가져옵니다. 변경 사항이 커밋되지 않았다면 아무것도 변하지 않습니다.
package.json수정 누락: 코드는 바꼈는데 명찰(버전 번호)을 안 바꾸면, 시스템은 "이미 최신 버전"이라 판단하고 업데이트 알림을 띄우지 않습니다.