UNPKG

github-pr-automation

Version:

MCP server and CLI for automated GitHub PR management, review resolution, and workflow optimization

253 lines (195 loc) 5.91 kB
# Release Workflow This document describes the comprehensive release workflow for GitHub PR Automation, including automated publishing to npm and MCP marketplaces. ## Overview The release workflow follows MCP (Model Context Protocol) best practices and includes: - **Automated version management** with semantic versioning - **GitHub Actions workflows** for CI/CD - **npm publishing** with proper MCP metadata - **Pre-release support** for testing - **Automated changelog updates** - **Git tag management** ## Release Types ### 1. Patch Release (0.1.0 → 0.1.1) For bug fixes and minor improvements: ```bash npm run release:patch ``` ### 2. Minor Release (0.1.0 → 0.2.0) For new features and enhancements: ```bash npm run release:minor ``` ### 3. Major Release (0.1.0 → 1.0.0) For breaking changes and major updates: ```bash npm run release:major ``` ### 4. Pre-release (0.1.0 → 0.1.1-alpha.1) For testing and validation: ```bash npm run release:prerelease ``` ## Release Process ### Automated Release Steps 1. **Version Update**: Updates `package.json` with new version 2. **Changelog Update**: Updates `docs/CHANGELOG.md` with release notes 3. **Testing**: Runs full test suite with coverage 4. **Linting**: Validates code quality 5. **Build**: Compiles TypeScript to JavaScript 6. **Git Operations**: Creates commit and tag 7. **GitHub Actions**: Triggers automated publishing ### Manual Release Steps 1. **Run Release Script**: ```bash npm run release:patch # or minor/major/prerelease ``` 2. **GitHub Actions Automatically**: - Publishes to npm registry - Creates GitHub release - Updates package metadata ## GitHub Actions Workflows ### Release Workflow (`.github/workflows/release.yml`) - Triggers on version tags (e.g., `v1.0.0`) - Runs tests and linting - Publishes to npm registry - Creates GitHub release with changelog ### Pre-release Workflow (`.github/workflows/prerelease.yml`) - Triggers on pre-release tags (e.g., `v1.0.0-alpha.1`) - Publishes to npm with `beta` tag - Creates GitHub pre-release ## Package Configuration ### MCP Metadata The `package.json` includes MCP-specific metadata: ```json { "mcp": { "version": "1.0.0", "protocol": "stdio", "server": "dist/index.js", "tools": [ "get_failing_tests", "find_unresolved_comments", "manage_stacked_prs", "detect_merge_conflicts", "check_merge_readiness", "analyze_pr_impact", "get_review_suggestions", "rebase_after_squash_merge", "resolve_review_thread" ], "capabilities": { "tools": true, "resources": false, "prompts": false } } } ``` ### Keywords for Discovery Enhanced keywords for MCP marketplace discovery: - `mcp`, `mcp-server`, `model-context-protocol` - `github`, `pull-request`, `automation` - `claude`, `ai-tools`, `github-api` ## Release Scripts ### Main Release Script (`scripts/release.js`) Handles the complete release process: ```bash # Usage node scripts/release.js <major|minor|patch|prerelease> # Examples node scripts/release.js patch # 0.1.0 → 0.1.1 node scripts/release.js minor # 0.1.0 → 0.2.0 node scripts/release.js major # 0.1.0 → 1.0.0 node scripts/release.js prerelease # 0.1.0 → 0.1.1-alpha.1 ``` ### NPM Scripts Convenient npm scripts for common operations: ```bash npm run release:patch # Patch release npm run release:minor # Minor release npm run release:major # Major release npm run release:prerelease # Pre-release ``` ## Prerequisites ### Required Secrets Set up these GitHub secrets: 1. **NPM_TOKEN**: npm authentication token ```bash # Get token from https://www.npmjs.com/settings/tokens # Add to GitHub repository secrets ``` 2. **GITHUB_TOKEN**: Automatically provided by GitHub Actions ### Required Permissions - npm package publishing permissions - GitHub repository write permissions - Git tag creation permissions ## MCP Marketplace Publishing ### npm Registry (Primary) - Most MCP clients look for packages on npm - Automatic publishing via GitHub Actions - Proper MCP metadata for discovery ### MCP Marketplaces (Secondary) Manual registration on: - MCP Market - MCP.so - Smithery - Pulse MCP - Cursor MCP Registry ## Release Checklist ### Before Release - [ ] All tests passing - [ ] Code linting clean - [ ] Documentation updated - [ ] Changelog updated - [ ] Version compatibility checked ### During Release - [ ] Run appropriate release script - [ ] Verify GitHub Actions triggered - [ ] Check npm publication - [ ] Verify GitHub release created ### After Release - [ ] Test installation from npm - [ ] Verify MCP client compatibility - [ ] Update marketplace listings - [ ] Announce release to community ## Troubleshooting ### Common Issues 1. **npm Publishing Fails** - Check NPM_TOKEN secret - Verify package name availability - Check npm permissions 2. **GitHub Actions Fails** - Check workflow syntax - Verify secrets configuration - Check repository permissions 3. **Version Conflicts** - Ensure version not already published - Check git tag conflicts - Verify package.json version ### Debug Commands ```bash # Check current version npm version # Test build locally npm run build # Test package locally npm pack # Check git status git status # List git tags git tag -l ``` ## Best Practices 1. **Semantic Versioning**: Follow SemVer strictly 2. **Changelog**: Keep detailed changelog 3. **Testing**: Always test before release 4. **Documentation**: Update docs with changes 5. **Community**: Announce releases appropriately ## Support For release-related issues: - Check GitHub Actions logs - Review npm package status - Consult MCP documentation - Open GitHub issue for help --- This release workflow ensures consistent, automated, and professional releases that meet MCP marketplace standards and community expectations.