Skip to content

Commit b87be9a

Browse files
Seungwoo321claude
andcommitted
docs: 수민님께 공유할 베타 릴리스 워크플로우 개선 내용
- 기존 워크플로우와 새 워크플로우 비교 (Mermaid 다이어그램) - TypeScript 전환 시 발생한 실제 문제 설명 - Changesets와 베타 릴리스 도입 효과 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]>
1 parent c2d09a4 commit b87be9a

File tree

1 file changed

+103
-0
lines changed

1 file changed

+103
-0
lines changed

TO_SUMIN.md

Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
# To. 수민님
2+
3+
베타 릴리스 워크플로우 도입 배경과 개선사항을 공유드립니다.
4+
5+
## 📋 핵심 요구사항
6+
- main 브랜치 보호 (직접 push 불가, 1명 이상 승인 필수)
7+
- 자동 버전 관리 및 체인지로그 업데이트
8+
- 모노레포 내 독립적 패키지 버전 관리
9+
- 보호 규칙 우회 없이 release 브랜치에서 배포 후 main 동기화
10+
11+
## 🔄 기존 워크플로우
12+
13+
```mermaid
14+
sequenceDiagram
15+
participant F as feature/*
16+
participant D as develop
17+
participant M as main
18+
participant R as release
19+
participant NPM as npm
20+
21+
F->>D: PR 요청
22+
D->>D: 머지
23+
D->>M: PR 요청 (1차 승인)
24+
M->>M: 머지 승인
25+
M->>R: 자동 push
26+
R->>R: 시멘틱 릴리즈
27+
R->>NPM: publish
28+
R->>M: PR 요청 (main-to-release)
29+
M->>M: 동기화 승인 (2차 승인)
30+
31+
Note over F,NPM: 총 3회 승인 필요<br/>베타 테스트 불가<br/>실패 시 롤백 어려움
32+
```
33+
34+
## ❌ 실제 발생한 문제
35+
36+
### TypeScript 전환 시 대참사
37+
1. **빌드 실패 무시** → 하위 패키지 빌드 실패했지만 "메인은 괜찮겠지"하고 진행
38+
2. **리버트 시도** → 시멘틱 릴리즈가 오작동하여 lazy-table-renderer 버전 의도치 않게 업데이트
39+
3. **보호 규칙 해제** → main에 강제 push했지만 JS/TS 버전 충돌
40+
4. **완전히 꼬임** → release와 main-to-release 브랜치 간 충돌로 JS 버전이 다시 릴리즈
41+
42+
## ✨ 새로운 워크플로우
43+
44+
```mermaid
45+
sequenceDiagram
46+
participant F as feature/*
47+
participant D as develop
48+
participant M as main
49+
participant R as release/vX.X.X
50+
participant NPM as npm
51+
52+
Note over F,D: 1. 개발
53+
F->>D: PR + changeset
54+
D->>D: 머지
55+
56+
Note over D,NPM: 2. 베타 릴리스 (자동)
57+
D->>D: changeset 소비
58+
D->>D: 버전 bump + beta
59+
D->>NPM: 베타 퍼블리시
60+
D->>D: 커밋
61+
62+
Note over D,M: 3. 프로덕션 준비
63+
D->>M: PR (베타 테스트 완료)
64+
M->>M: 승인 (1차)
65+
66+
Note over M,NPM: 4. 정식 릴리스 (자동)
67+
M->>R: release 브랜치 생성
68+
R->>R: beta 제거
69+
R->>NPM: 정식 퍼블리시
70+
R->>M: PR로 동기화
71+
M->>M: 자동 머지
72+
73+
Note over F,NPM: 총 2회 승인<br/>베타로 사전 테스트<br/>실패 시 롤백 용이
74+
```
75+
76+
## 🚀 주요 개선점
77+
78+
### 1. **Changesets 도입**
79+
- 각 PR에 변경사항 명시
80+
- 모노레포 패키지별 독립 버전 관리
81+
- 시멘틱 릴리즈의 오작동 방지
82+
83+
### 2. **베타 릴리스**
84+
- develop에서 자동으로 베타 버전 생성
85+
- 실제 npm에 퍼블리시하여 테스트 가능
86+
- 문제 발견 시 main 머지 전 수정 가능
87+
88+
### 3. **프로세스 단순화**
89+
- 승인 횟수: 3회 → 2회
90+
- 각 단계별 자동화
91+
- 명확한 롤백 전략
92+
93+
### 4. **안정성 향상**
94+
- 빌드 실패 시 즉시 중단 (`set -e`)
95+
- GitHub Release 생성 후 npm 퍼블리시
96+
- 타입 선언 파일 문제 해결 (빌드 순서 조정)
97+
98+
## 📊 결과
99+
- ✅ 베타 릴리스 성공
100+
- ✅ 빌드 오류 감지 및 차단
101+
- ✅ 안정적인 배포 프로세스 구축
102+
103+
이제 TypeScript 버전도 안전하게 배포할 수 있습니다! 🎉

0 commit comments

Comments
 (0)