GitOps/ArgoCD 환경에서 자동 버전 태깅, CHANGELOG 생성, CI 트리거 조건 등에 활용되는 커밋 메시지 규칙입니다.
기본 구조
<type>(<scope>): <subject>
<body>
<footer>
주요 type Prefix
| Prefix | 의미 | 예시 |
|---|---|---|
feat | 새 기능 추가 | feat(rag-api): add SimHash dedup stage |
fix | 버그 수정 | fix(reranker): correct RRF fusion weight calc |
refactor | 동작 변화 없는 코드 개선 | refactor(dagster): split ingestion ops |
docs | 문서만 변경 | docs(readme): update Qdrant setup guide |
chore | 빌드/설정/잡일 | chore(helm): bump chart version to 1.4.0 |
test | 테스트 추가/수정 | test(dedup): add embedding-stage unit tests |
style | 포맷팅, 세미콜론 등 (로직 무관) | style(api): apply black formatting |
perf | 성능 개선 | perf(qdrant): batch upsert instead of per-doc |
ci | CI/CD 설정 변경 | ci(argocd): add sync-wave annotation |
build | 빌드 시스템/의존성 | build(deps): upgrade llama-index to 0.11 |
revert | 이전 커밋 되돌리기 | revert: feat(rag-api) add SimHash dedup stage |
Breaking Change 표시
feat(api)!: change embedding model to BGE-M3
BREAKING CHANGE: requires re-indexing all existing collections
!를 type 뒤에 붙이거나 footer에 BREAKING CHANGE:를 명시 — semantic-release 같은 도구가 이를 보고 major 버전을 올립니다.
Scope 활용 예 (CNAP RAG 파이프라인 기준)
feat(minio): add event-driven ingestion trigger
fix(keycloak-spi): resolve duplicate prevention race condition
chore(k3s): update CloudNativePG to 1.24
자동화와 연계
- semantic-release / commitizen:
feat→ minor,fix→ patch,BREAKING CHANGE→ major 버전 자동 결정 - commitlint: PR/커밋 단계에서 prefix 규칙 강제 (pre-commit hook 또는 CI에서)
- CHANGELOG 자동 생성: type별로 섹션 분류
GitOps 적용 팁
ArgoCD GitOps 리포에서는 매니페스트 변경(chore/fix)과 애플리케이션 코드 변경(feat)을 구분해서 commitlint + pre-commit hook으로 강제하는 패턴이 일반적입니다.