mirror of
https://github.com/asyouplz/SpeechNote.git
synced 2026-07-22 06:43:33 +00:00
* refactor(ui): consolidate settings architecture and review fixes Remove redundant settings/provider implementations to reduce maintenance overhead and align the UI with Obsidian helpers and English-only labels. Also ignore local review docs and update the release guide header section to English. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * chore(repo): ignore local claude and changelog docs --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
202 lines
5.1 KiB
Markdown
202 lines
5.1 KiB
Markdown
# Release and Version Management Guide
|
|
|
|
This document describes the release process and version management approach for the SpeechNote plugin.
|
|
|
|
## Versioning System
|
|
|
|
### Version Format
|
|
|
|
Use Semantic Versioning (`x.y.z`):
|
|
|
|
- **Major (x)**: Breaking changes
|
|
- **Minor (y)**: New backward-compatible features
|
|
- **Patch (z)**: Bug fixes
|
|
|
|
### Versioned Files
|
|
|
|
The following files contain version information and are updated automatically during a version bump:
|
|
|
|
- `manifest.json` - Obsidian plugin version
|
|
- `package.json` - npm package version
|
|
- `versions.json` - Obsidian version compatibility map
|
|
|
|
## 릴리즈 방법
|
|
|
|
### 방법 1: 자동 버전 Bump (PR 라벨)
|
|
|
|
PR에 라벨을 추가하여 merge 시 자동으로 버전이 증가합니다.
|
|
|
|
1. PR 생성
|
|
2. 다음 라벨 중 하나 추가:
|
|
- `bump:patch` - 3.0.9 → 3.0.10
|
|
- `bump:minor` - 3.0.9 → 3.1.0
|
|
- `bump:major` - 3.0.9 → 4.0.0
|
|
3. PR merge
|
|
4. 자동으로 버전 증가 및 tag 생성
|
|
5. Tag push로 Release 워크플로우 자동 실행
|
|
|
|
### 방법 2: 수동 버전 Bump (로컬 스크립트)
|
|
|
|
로컬에서 버전을 증가시키고 릴리즈를 생성하는 방법:
|
|
|
|
```bash
|
|
# Patch 버전 증가 (3.0.9 → 3.0.10)
|
|
./scripts/release.sh patch
|
|
|
|
# Minor 버전 증가 (3.0.9 → 3.1.0)
|
|
./scripts/release.sh minor
|
|
|
|
# Major 버전 증가 (3.0.9 → 4.0.0)
|
|
./scripts/release.sh major
|
|
|
|
# 특정 버전으로 설정 (3.2.5)
|
|
./scripts/release.sh 3.2.5
|
|
```
|
|
|
|
스크립트는 다음을 자동으로 수행합니다:
|
|
|
|
1. ✅ 현재 브랜치 확인 (main 권장)
|
|
2. ✅ 최신 코드 pull
|
|
3. ✅ Lint, TypeScript, Build 체크
|
|
4. ✅ 버전 파일 업데이트
|
|
5. ✅ Commit 생성
|
|
6. ✅ Tag 생성
|
|
7. ✅ Push (선택 가능)
|
|
|
|
### 방법 3: GitHub Actions 수동 트리거
|
|
|
|
1. [Actions tab](https://github.com/asyouplz/SpeechNote/actions/workflows/version-bump.yml) 이동
|
|
2. "Run workflow" 클릭
|
|
3. 버전 bump 타입 선택 또는 커스텀 버전 입력
|
|
4. "Run workflow" 실행
|
|
|
|
## CI/CD 파이프라인
|
|
|
|
### CI Pipeline (자동 실행)
|
|
|
|
모든 PR 및 main 브랜치 push 시 자동 실행:
|
|
|
|
```
|
|
1. Code Quality Check (필수)
|
|
├─ ESLint (Obsidian plugin review bot compatible)
|
|
├─ Prettier format check
|
|
└─ TypeScript type check
|
|
|
|
2. Tests (병렬 실행, 선택적)
|
|
├─ Unit Tests
|
|
└─ Integration Tests
|
|
|
|
3. Build Test (필수)
|
|
└─ Production build
|
|
|
|
4. Final Status Check
|
|
└─ 모든 필수 체크 통과 확인
|
|
```
|
|
|
|
### Release Pipeline (Tag push 시 자동 실행)
|
|
|
|
버전 tag (v*.*.\*)가 push되면 자동으로 릴리즈 생성:
|
|
|
|
```
|
|
1. Validate Release
|
|
└─ 버전 형식 검증
|
|
|
|
2. Build & Package
|
|
├─ Production build
|
|
└─ Release archive 생성
|
|
|
|
3. Generate Release Notes
|
|
└─ Git 커밋 기반 자동 생성
|
|
|
|
4. Create GitHub Release
|
|
├─ Tag 생성
|
|
├─ Release notes 첨부
|
|
└─ Assets 업로드 (main.js, manifest.json, zip)
|
|
|
|
5. Send Notifications
|
|
└─ Discord webhook (설정된 경우)
|
|
```
|
|
|
|
## Pre-commit Hooks
|
|
|
|
로컬에서 commit 전 자동으로 체크:
|
|
|
|
```bash
|
|
# Husky를 사용하여 commit 전 자동 실행
|
|
.husky/pre-commit:
|
|
- npm test
|
|
- npm run lint
|
|
- npm run format:check
|
|
```
|
|
|
|
설치 후 자동으로 활성화됩니다:
|
|
|
|
```bash
|
|
npm install # prepare 스크립트가 자동으로 husky 설정
|
|
```
|
|
|
|
## Branch Protection Rules
|
|
|
|
main 브랜치 보호 규칙 (GitHub Settings에서 설정 권장):
|
|
|
|
- ✅ Require pull request before merging
|
|
- ✅ Require status checks to pass:
|
|
- `Code Quality Check`
|
|
- `Build Test`
|
|
- ✅ Require branches to be up to date
|
|
- ✅ Do not allow bypassing the above settings
|
|
|
|
## 릴리즈 체크리스트
|
|
|
|
릴리즈 전 확인사항:
|
|
|
|
- [ ] 모든 코드 변경사항이 commit됨
|
|
- [ ] CI 파이프라인 통과
|
|
- [ ] CHANGELOG 또는 release notes 작성
|
|
- [ ] 버전 번호가 Semantic Versioning 준수
|
|
- [ ] Breaking changes가 있다면 문서화됨
|
|
- [ ] Obsidian 최소 버전 호환성 확인
|
|
|
|
## 트러블슈팅
|
|
|
|
### 버전 bump 실패
|
|
|
|
**문제**: `version-bump.yml` 워크플로우가 실패함
|
|
|
|
**해결**:
|
|
|
|
1. PR에 올바른 라벨이 있는지 확인 (`bump:patch`, `bump:minor`, `bump:major`)
|
|
2. GitHub Actions 권한 확인 (Settings → Actions → Workflow permissions)
|
|
3. `manifest.json`, `package.json`, `versions.json` 형식 확인
|
|
|
|
### Release 생성 실패
|
|
|
|
**문제**: Tag는 생성되었으나 Release가 생성되지 않음
|
|
|
|
**해결**:
|
|
|
|
1. [Release 워크플로우 로그](https://github.com/asyouplz/SpeechNote/actions/workflows/release.yml) 확인
|
|
2. Tag 형식이 `v0.0.0` 형식인지 확인
|
|
3. Build 실패 시 lint/typecheck 오류 확인
|
|
|
|
### Pre-commit Hook이 실행되지 않음
|
|
|
|
**문제**: Commit 시 lint가 자동으로 실행되지 않음
|
|
|
|
**해결**:
|
|
|
|
```bash
|
|
# Husky 재설정
|
|
npm run prepare
|
|
|
|
# 또는 수동으로 hook 설정
|
|
npx husky init
|
|
chmod +x .husky/pre-commit
|
|
```
|
|
|
|
## 참고 자료
|
|
|
|
- [Semantic Versioning](https://semver.org/)
|
|
- [Obsidian Plugin Guidelines](https://docs.obsidian.md/Plugins/Releasing/Plugin+guidelines)
|
|
- [GitHub Actions Documentation](https://docs.github.com/en/actions)
|
|
- [Husky Documentation](https://typicode.github.io/husky/)
|