UNPKG

ccgwz

Version:

Claude Code Git Worktree Zellij - CLI tool for parallel development with git worktrees and Claude Code in zellij panes

200 lines (155 loc) 5.39 kB
# Release Automation Design Document ## Overview CCGWZ パッケージのリリースプロセスを自動化し、Release Drafter、package.json、npm publish を連携させる設計です。 ## 現在の設定 ### Release Drafter - セマンティックバージョニング(semver)によるバージョン管理 - コミットメッセージに基づく自動ラベリング - プルリクエストの自動分類 - リリースノートの自動生成 ### Package.json - version: `0.1.0` - `prepublishOnly`: ビルド実行 - `publish`: npm publish 実行 ### CI/CD - CI: lint、typecheck、build - Release Drafter: リリースドラフト作成 ## 提案する自動化フロー ### 1. リリースプロセスの統合 ```mermaid graph TD A[PR Merge to main] --> B[Release Drafter] B --> C[Version Bump] C --> D[npm publish] D --> E[GitHub Release] E --> F[Git Tag] ``` ### 2. GitHub Actions Workflow 新しいワークフロー `release.yml` を作成: ```yaml name: Release on: release: types: [published] jobs: publish: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 - name: Setup Bun uses: oven-sh/setup-bun@v1 with: bun-version: latest - name: Install dependencies run: bun install - name: Update package.json version run: | VERSION=${GITHUB_REF#refs/tags/v} bun version --new-version $VERSION - name: Build run: bun run build - name: Publish to npm run: npm publish env: NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} ``` ### 3. Version Synchronization #### package.json の自動更新 - GitHub Release 作成時に package.json のバージョンを自動更新 - Release Drafter のバージョンと package.json のバージョンを同期 #### Implementation Options **Option A: Release時に自動更新** ```yaml - name: Update package.json version run: | VERSION=${GITHUB_REF#refs/tags/v} npm version $VERSION --no-git-tag-version ``` **Option B: 手動バージョン管理** ```yaml - name: Verify version consistency run: | PACKAGE_VERSION=$(node -p "require('./package.json').version") TAG_VERSION=${GITHUB_REF#refs/tags/v} if [ "$PACKAGE_VERSION" != "$TAG_VERSION" ]; then echo "Version mismatch: package.json=$PACKAGE_VERSION, tag=$TAG_VERSION" exit 1 fi ``` ### 4. リリースプロセス #### 開発者の作業フロー 1. **Feature開発**: ブランチでコミット 2. **PR作成**: コミットメッセージに適切なプレフィックス(feat:, fix:, etc.) 3. **PR Merge**: mainブランチにマージ 4. **Release Draft確認**: 自動生成されたリリースドラフトを確認 5. **Release公開**: GitHub上でリリースを公開 #### 自動化される作業 1. **PR分析**: コミットメッセージからラベル自動付与 2. **バージョン決定**: ラベルに基づくセマンティックバージョニング 3. **リリースノート生成**: PRからchangelog自動生成 4. **NPM公開**: GitHub Release公開をトリガーに自動公開 5. **Git Tag作成**: バージョンタグの自動作成 ### 5. セキュリティ考慮事項 #### NPM Token管理 - GitHub Secrets に `NPM_TOKEN` を設定 - 最小権限の原則に従い publish 権限のみ付与 #### リリース権限 - main ブランチの保護 - リリース公開権限の制限(管理者のみ) ### 6. 設定ファイルの変更 #### .github/workflows/release.yml (新規作成) 上記の Release workflow を実装 #### package.json (変更) ```json { "scripts": { "prepublishOnly": "npm run build && npm run test", "release": "npm run build && npm publish" } } ``` #### .github/release-drafter.yml (変更) ```yaml version-resolver: major: labels: - 'breaking' - 'major' minor: labels: - 'feature' - 'enhancement' - 'feat' default: patch # 自動公開設定(オプション) publish: enabled: true draft: false ``` ## 実装手順 ### Phase 1: 基本設定 1. NPM Token の設定 2. release.yml ワークフローの作成 3. package.json スクリプトの更新 ### Phase 2: バージョン同期 1. バージョン同期スクリプトの実装 2. CI/CD での整合性チェック 3. エラーハンドリングの追加 ### Phase 3: テスト・検証 1. テストリリースの実行 2. フローの動作確認 3. ドキュメントの更新 ## 利点 1. **自動化**: 手動リリース作業の削減 2. **一貫性**: バージョン管理の統一 3. **品質**: 自動テストとビルド 4. **追跡性**: 完全なリリース履歴 5. **効率性**: リリースプロセスの高速化 ## 注意点 1. **初回設定**: NPM Token等の設定が必要 2. **権限管理**: リリース権限の適切な設定 3. **テスト**: 本番環境でのテストが必要 4. **バックアップ**: 手動リリース手順の維持 ## まとめ この設計により、Release Drafter、package.json、npm publish を完全に連携させ、一貫性のある自動リリースプロセスを実現できます。開発者はコミットメッセージに注意を払うだけで、残りのリリース作業は自動化されます。