Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
194 changes: 105 additions & 89 deletions doc/contribution/baseline-management-kr.md
Original file line number Diff line number Diff line change
@@ -1,19 +1,26 @@
<!--

* SPDX-FileCopyrightText: Copyright 2024 LG Electronics Inc.
* SPDX-License-Identifier: Apache-2.0
-->
-->

# 베이스라인 관리 규칙

**최종 업데이트**: 2026-05-22

**작성일**: 2026-04-30
**작성자**: Pullpiri CM팀



## 목차

1. [개요](#1-개요)
2. [베이스라인 유형](#2-베이스라인-유형)
3. [베이스라인 설정 기준](#3-베이스라인-설정-기준)
4. [베이스라인 설정 절차](#4-베이스라인-설정-절차)
5. [베이스라인 이후 변경 관리](#5-베이스라인-이후-변경-관리)
6. [베이스라인 태그 명명 규칙](#6-베이스라인-태그-명명-규칙)
2. [베이스라인 태그 명명 규칙](#2-베이스라인-태그-명명-규칙)
3. [베이스라인 유형](#3-베이스라인-유형)
4. [베이스라인 설정 기준](#4-베이스라인-설정-기준)
5. [베이스라인 설정 절차](#5-베이스라인-설정-절차)
6. [베이스라인 이후 변경 관리](#6-베이스라인-이후-변경-관리)
7. [담당자 및 이해관계자](#7-담당자-및-이해관계자)
8. [베이스라인 관리 다이어그램](#8-베이스라인-관리-다이어그램)

Expand All @@ -22,13 +29,43 @@
## 1. 개요

베이스라인(Baseline)은 프로젝트 개발 과정의 특정 시점을 나타내는 기준점으로, CM(Configuration Management) 담당자에 의해 설정된다.
베이스라인 설정 이후 작업 산출물에 변경이 발생하는 경우, 해당 변경사항은 이해관계자의 **승인 및 공지** 절차를 반드시 거쳐야 한다.

---
베이스라인 설정 이후 코드에 변경이 발생하는 경우, 해당 변경사항은 이해관계자의 **승인 및 공지** 절차를 반드시 거쳐야 한다.



## 2. 베이스라인 태그 명명 규칙

[Semantic Versioning 2.0.0](https://semver.org/lang/ko/) 규칙을 기본으로 자체 규칙을 따른다.

```
v<MAJOR>.<MINOR>.<PATCH>[-<식별자>]
```

| 구성 요소 | 설명 |
| --------- | ------------------------------------------------------------ |
| `MAJOR` | 외부 조직 인도를 위한 목적으로 하위 호환성이 깨지는 변경 시 증가 |
| `MINOR` | 하위 호환성을 유지하는 신규 기능 추가 시 증가 |
| `PATCH` | 하위 호환성을 유지하는 버그 수정 시 증가 |
| `식별자` | 기타 비공식 베이스라인 구분자 (alpha, beta, rc1, milestone1 등) |

### 예시

| 태그 | 의미 |
| ------------------- | ------------------------------------------------ |
| `v1.0.0` | 첫 번째 공식 릴리즈 |
| `v1.1.0` | 하위 호환 신규 기능 추가 공식 릴리즈 |
| `v1.1.1` | 버그 수정 패치 공식 릴리즈 |
| `v2.0.0` | 하위 비호환 주요 변경 공식 릴리즈 |
| `v1.2.0-alpha` | 내부 알파 테스트용 비공식 베이스라인 |
| `v1.2.0-rc1` | 릴리즈 후보(Release Candidate) 비공식 베이스라인 |
| `v1.2.0-milestone1` | 내부 마일스톤용 비공식 베이스라인 |


## 2. 베이스라인 유형

### 2.1 공식 베이스라인 (Official Baseline)
## 3. 베이스라인 유형

### 3.1 메이저 베이스라인 (Major Baseline)

- **정의**: 외부 조직(고객사, 파트너 등)에 릴리즈하기 위한 베이스라인
- **대상 브랜치**: `main`
Expand All @@ -37,32 +74,40 @@
- **GitHub 태그 형식**: `v<MAJOR>.<MINOR>.<PATCH>` (예: `v1.0.0`)
- **GitHub Release**: 공식 베이스라인 설정 시 GitHub Release 페이지에 릴리즈 노트 작성 필수

### 2.2 비공식 베이스라인 (Unofficial Baseline)
### 3.2 마이너 베이스라인 (Minor Baseline)

- **정의**: LGE 내부 목표 달성 또는 개발 마일스톤 표시를 위한 베이스라인
- **대상 브랜치**: `main` 또는 특정 기능 브랜치
- **생성 주체**: CM 담당자 또는 개발 리드
- **승인 요건**: 팀 내 관련 담당자 승인
- **GitHub 태그 형식**: `v<MAJOR>.<MINOR>.<PATCH> (예: `v1.1.0`, `v1.2.1`)

### 3.3 비공식 베이스라인 (Unofficial Baseline)

- **정의**: Non-safety 영역을 다루는 범위 내에서 기능 안전과 관련 없는 목적을 위해 긴급히 수정을 반영하기 위한 베이스라인. 목적 달성 후 폐기 원칙
- **대상 브랜치**: 특정 기능 브랜치
- **생성 주체**: CM 담당자
- **승인 요건**: CM 담당자 승인
- **GitHub 태그 형식**: `v<MAJOR>.<MINOR>.<PATCH>-<식별자>` (예: `v1.0.0-alpha`, `v1.1.0-milestone1`)

---

## 3. 베이스라인 설정 기준

### 3.1 공식 베이스라인 설정 기준
## 4. 베이스라인 설정 기준

### 4.1 메이저 베이스라인 설정 기준

다음 조건이 모두 충족될 때 공식 베이스라인을 설정한다.

| 조건 | 세부 내용 |
|------|----------|
| 기능 구현 완료 | 해당 릴리즈의 모든 필수 기능(FEATURE 이슈) 구현 및 PR 머지 완료 |
| 테스트 통과 | 단위 테스트, 통합 테스트 모두 통과 (`test:passed` 라벨 확인) |
| 코드 리뷰 완료 | 모든 변경사항에 대해 리뷰어 1인 이상 승인 완료 |
| 빌드 성공 | CI 파이프라인 빌드 성공 확인 |
| 문서 업데이트 | `CHANGELOG`, `README`, API 문서 등 관련 문서 최신화 |
| 이해관계자 승인 | 외부 릴리즈 전 이해관계자 전원 서면(또는 이슈) 승인 |
| 조건 | 세부 내용 |
| --------------- | ------------------------------------------------------------ |
| 기능 구현 완료 | 해당 릴리즈의 모든 필수 기능(FEATURE 이슈) 구현 및 PR 머지 완료 |
| 테스트 통과 | 단위 테스트, 통합 테스트 모두 통과 (`test:passed` 라벨 확인) |
| 코드 리뷰 완료 | 모든 변경사항에 대해 리뷰어 1인 이상 승인 완료 |
| 빌드 성공 | CI 파이프라인 빌드 성공 확인 |
| 문서 업데이트 | `CHANGELOG`, `README`, API 문서 등 관련 문서 최신화 |
| 이해관계자 승인 | 외부 릴리즈 전 이해관계자 전원 서면(또는 이슈) 승인 |

### 3.2 비공식 베이스라인 설정 기준
### 4.2 마이너 베이스라인 설정 기준

다음 중 하나 이상의 조건에 해당할 때 비공식 베이스라인을 설정한다.

Expand All @@ -71,114 +116,84 @@
- 팀 내 점검 또는 데모를 위한 스냅샷 필요
- 외부 릴리즈 전 사전 검증(RC, alpha, beta) 목적

---

## 4. 베이스라인 설정 절차

### 4.1 공식 베이스라인 설정 절차
## 5. 베이스라인 설정 절차

### 5.1 메이저 베이스라인 설정 절차

1. **사전 검토**: CM 담당자가 [4.1 설정 기준](#41-메이저-베이스라인-설정-기준)의 모든 항목을 확인

1. **사전 검토**: CM 담당자가 [3.1 설정 기준](#31-공식-베이스라인-설정-기준)의 모든 항목을 확인
2. **이슈 등록**: GitHub에 베이스라인 설정 이슈 등록

- 제목: `[TASK] v<버전> 공식 베이스라인 설정`
- 라벨: `type:task`, `priority:critical`

3. **이해관계자 승인**: 이슈 또는 별도 채널을 통해 이해관계자 승인 획득

4. **태그 생성 및 푸시**:

```bash
git tag v<MAJOR>.<MINOR>.<PATCH>
git push origin v<MAJOR>.<MINOR>.<PATCH>
```

5. **GitHub Release 작성**: GitHub Release 페이지에서 해당 태그로 릴리즈 노트 작성

6. **공지**: 이해관계자 및 개발팀 전체에 베이스라인 설정 완료 공지

7. **이슈 종료**: 베이스라인 설정 이슈 종료

### 4.2 비공식 베이스라인 설정 절차
### 5.2 비공식 베이스라인 설정 절차

1. **사전 검토**: 팀 내 담당자 승인 확인

2. **태그 생성 및 푸시**:

```bash
git tag v<MAJOR>.<MINOR>.<PATCH>-<식별자>
git push origin v<MAJOR>.<MINOR>.<PATCH>-<식별자>
```

3. **공지**: 팀 내 관련 담당자에게 베이스라인 설정 공지 (이슈 코멘트 또는 메신저)

---

## 5. 베이스라인 이후 변경 관리

## 6. 베이스라인 이후 변경 관리

베이스라인 설정 이후에는 해당 베이스라인 기준의 작업 산출물에 변경이 발생하더라도 **반드시 아래 절차를 준수**해야 한다.

### 5.1 변경 요청 절차
### 6.1 변경 요청 절차

1. **변경 이슈 등록**: 변경이 필요한 내용을 GitHub 이슈로 등록
- 제목: `[BUG]` 또는 `[FEATURE]` 유형으로 등록
- 본문에 변경 이유, 영향 범위, 위험도 명시
2. **영향 분석**: CM 담당자 및 관련 개발자가 변경의 영향 범위 분석
3. **이해관계자 승인**:
- 공식 베이스라인 대상 변경: 이해관계자 전원 승인 필수
- 비공식 베이스라인 대상 변경: 팀 내 담당자 승인
- 메이저 베이스라인 대상 변경: 이해관계자 전원 승인 필수
- 마이너 베이스라인 대상 변경: 팀 내 담당자 승인
4. **변경 구현**: 승인된 이슈 기반으로 기능 브랜치에서 개발 및 PR 생성
5. **검토 및 머지**: 코드 리뷰 및 CI 통과 후 머지
6. **새 베이스라인 설정** (필요 시): 패치 버전을 올려 새 베이스라인 설정

### 5.2 핫픽스(Hotfix) 처리

공식 베이스라인 배포 후 긴급 결함 발생 시:

1. `fix/<이슈번호>-<설명>` 브랜치를 해당 베이스라인 태그에서 생성:
```bash
git checkout -b fix/<이슈번호>-<설명> <베이스라인-태그>
```
2. 버그 수정 후 PR 생성, 긴급 리뷰 진행
3. `main` 브랜치에 머지 후 패치 버전 베이스라인(`v<MAJOR>.<MINOR>.<PATCH+1>`) 설정
4. 이해관계자 및 고객사 공지

### 5.3 변경 금지 사항
### 6.2 변경 금지 사항

- 승인 없이 공식 베이스라인 태그 삭제 또는 재작성(force push) 금지
- 베이스라인 태그가 가리키는 커밋의 히스토리 변경 금지
- 이해관계자 승인 없이 공식 베이스라인 산출물 배포 금지

---

## 6. 베이스라인 태그 명명 규칙

[Semantic Versioning 2.0.0](https://semver.org/lang/ko/) 규칙을 따른다.

```
v<MAJOR>.<MINOR>.<PATCH>[-<식별자>]
```

| 구성 요소 | 설명 |
|-----------|------|
| `MAJOR` | 하위 호환성이 깨지는 변경 시 증가 |
| `MINOR` | 하위 호환성을 유지하는 신규 기능 추가 시 증가 |
| `PATCH` | 하위 호환성을 유지하는 버그 수정 시 증가 |
| `식별자` | 비공식 베이스라인 구분자 (alpha, beta, rc1, milestone1 등) |

### 예시

| 태그 | 의미 |
|------|------|
| `v1.0.0` | 첫 번째 공식 릴리즈 |
| `v1.1.0` | 하위 호환 신규 기능 추가 공식 릴리즈 |
| `v1.1.1` | 버그 수정 패치 공식 릴리즈 |
| `v2.0.0` | 하위 비호환 주요 변경 공식 릴리즈 |
| `v1.2.0-alpha` | 내부 알파 테스트용 비공식 베이스라인 |
| `v1.2.0-rc1` | 릴리즈 후보(Release Candidate) 비공식 베이스라인 |
| `v1.2.0-milestone1` | 내부 마일스톤용 비공식 베이스라인 |

---

## 7. 담당자 및 이해관계자

| 역할 | 책임 |
|------|------|
| **CM 담당자** | 베이스라인 설정·태그 생성·공지, 변경 요청 접수 및 영향 분석 주도 |
| **개발 리드** | 기능 완료 및 품질 기준 충족 확인, 비공식 베이스라인 승인 |
| **이해관계자** | 공식 베이스라인 설정 및 변경 승인 |
| **개발자** | 변경 이슈 등록, 변경 구현 및 PR 생성 |
| 역할 | 책임 |
| -------------- | ------------------------------------------------------------ |
| **CM 담당자** | 베이스라인 설정·태그 생성·공지, 변경 요청 접수 및 영향 분석 주도 |
| **개발 리드** | 기능 완료 및 품질 기준 충족 확인, 비공식 베이스라인 승인 |
| **이해관계자** | 공식 베이스라인 설정 및 변경 승인 |
| **개발자** | 변경 이슈 등록, 변경 구현 및 PR 생성 |


---

## 8. 베이스라인 관리 다이어그램

Expand All @@ -189,7 +204,7 @@ v<MAJOR>.<MINOR>.<PATCH>[-<식별자>]
CM 담당자 사전 검토 (기준 항목 확인)
베이스라인 설정 이슈 등록
베이스라인 설정 이슈 Open
이해관계자 승인 획득
Expand All @@ -201,9 +216,11 @@ GitHub Release 작성 (공식 베이스라인만 해당)
이해관계자 공지
이슈 종료
베이스라인 설정 이슈 Close
```



### 베이스라인 이후 변경 흐름

```
Expand All @@ -229,12 +246,11 @@ main 브랜치 머지
### 버전 이력 예시

```
main ──●──────●────────────────────────────────────►
│ │
v1.0.0 v1.1.0 v1.1.1
(공식BL) (공식BL) (핫픽스BL)
main ──●──────●────────────────────────────────────►
│ │
v1.0.0 v1.1.0
(공식BL) (공식BL)
└──► model/vehicle-x1 (모델 브랜치)
```

---
Loading
Loading