-
Notifications
You must be signed in to change notification settings - Fork 1
Closed
Description
🎯 목표
vue3-pivottable 프로젝트의 릴리즈 프로세스를 개선하여 main 브랜치 보호를 유지하면서도 자동화된 릴리즈를 가능하게 합니다.
📋 최종 릴리즈 전략
릴리즈 플로우
feature → develop (Beta 배포) → main → release/vX.X.X (Stable 배포) → PR back to main
브랜치별 역할
-
develop 브랜치
- 모든 feature 브랜치가 머지되는 통합 브랜치
- Changesets 소비 및 버전 업데이트
- Beta suffix 추가 (timestamp 기반)
- 품질 검증 (ESLint, TypeScript, Build)
- npm @beta 태그로 자동 배포
-
main 브랜치
- Production-ready 코드만 존재
- 브랜치 보호 규칙 적용 (직접 push 불가)
- release 브랜치 자동 생성 트리거
-
release/vX.X.X 브랜치
- main 브랜치 보호를 위한 임시 브랜치
- Beta suffix 제거 (코드 변경 없음)
- 품질 검증 후 npm @latest 배포
- main으로 PR 생성하여 동기화
하위 패키지 독립성
각 패키지는 독립적으로 버전 관리 및 배포:
- vue-pivottable (메인 패키지)
- @vue-pivottable/plotly-renderer
- @vue-pivottable/lazy-table-renderer
Changesets 설정 ("linked": [], "fixed": [])으로 독립성 보장
상세 문서
- 릴리즈 전략 문서 - 전체 플로우, 설정, 트러블슈팅 포함
✅ 완료된 작업
1. 기존 정리
- 불필요한 브랜치 삭제 (release, main-to-release)
- semantic-release 완전 제거
- TypeScript 버전 유지 (cb4590c 커밋 기준)
2. Changesets 구현
- Changesets 설치 및 설정
- 독립적 패키지 버전 관리 설정
- 가이드 문서 작성
3. 워크플로우 구현
-
PR 검증 (pr-check.yml)
- 모든 패키지 lint/typecheck
- 빌드 검증
- Changeset 존재 확인
-
Beta 배포 (release-develop.yml)
- develop push 시 자동 실행
- Changesets 소비
- 품질 검증 추가
- Beta 버전 npm 배포
-
Stable 배포 (release.yml)
- main push 시 자동 실행
- Beta suffix 제거만 수행
- 품질 검증 추가
- release 브랜치에서 배포
- main으로 PR 생성
4. 품질 개선
- 모든 워크스페이스 패키지 검증 추가
- Husky pre-commit 훅 설정
- TypeScript 체크 lint-staged 추가
5. 빌드 오류 수정
- 하위 패키지의 vue-pivottable 참조 문제 해결
- node_modules에서 참조하도록 vite.config.ts 수정
6. 문서화
- RELEASE_STRATEGY.md 작성
- Mermaid 다이어그램으로 플로우 시각화
- 트러블슈팅 가이드 포함
🎉 기대 효과
- 자동화: develop/main push만으로 자동 배포
- 품질 보장: 모든 단계에서 lint/typecheck/build 검증
- 독립성: 각 패키지가 필요할 때만 배포
- 투명성: Beta 테스트 후 동일 코드가 stable로 승격
- 보안: main 브랜치 보호 규칙 유지
📝 참고사항
- GitHub App 불필요 (APP_ID, APP_PRIVATE_KEY 삭제 가능)
- 각 패키지는 독립적인 changeset으로 관리
- Beta 버전으로 충분한 테스트 후 stable 배포
Metadata
Metadata
Assignees
Labels
No labels