356 lines
9.5 KiB
Markdown
356 lines
9.5 KiB
Markdown
---
|
|
allowed-tools: Read, Write, Edit, Bash
|
|
argument-hint: [version-type] | patch | minor | major | --pre-release | --hotfix
|
|
description: Prepare and validate release packages with comprehensive testing, documentation, and automation
|
|
---
|
|
|
|
# Release Preparation
|
|
|
|
Prepare and validate release: $ARGUMENTS
|
|
|
|
## Current Release Context
|
|
|
|
- Current version: !`git describe --tags --abbrev=0 2>/dev/null || echo "No previous releases"`
|
|
- Package version: @package.json or @setup.py or @pyproject.toml or @go.mod (if exists)
|
|
- Unreleased changes: !`git log $(git describe --tags --abbrev=0)..HEAD --oneline 2>/dev/null | wc -l || echo "All commits"`
|
|
- Branch status: !`git status --porcelain | wc -l || echo "0"` uncommitted changes
|
|
- Build status: !`npm test 2>/dev/null || python -m pytest 2>/dev/null || go test ./... 2>/dev/null || echo "Test framework detection needed"`
|
|
|
|
## Task
|
|
|
|
Systematic release preparation: $ARGUMENTS
|
|
|
|
1. **Release Planning and Validation**
|
|
- Determine release version number (semantic versioning)
|
|
- Review and validate all features included in release
|
|
- Check that all planned issues and features are complete
|
|
- Verify release criteria and acceptance requirements
|
|
|
|
2. **Pre-Release Checklist**
|
|
- Ensure all tests are passing (unit, integration, E2E)
|
|
- Verify code coverage meets project standards
|
|
- Complete security vulnerability scanning
|
|
- Perform performance testing and validation
|
|
- Review and approve all pending pull requests
|
|
|
|
3. **Version Management**
|
|
```bash
|
|
# Check current version
|
|
git describe --tags --abbrev=0
|
|
|
|
# Determine next version (semantic versioning)
|
|
# MAJOR.MINOR.PATCH
|
|
# MAJOR: Breaking changes
|
|
# MINOR: New features (backward compatible)
|
|
# PATCH: Bug fixes (backward compatible)
|
|
|
|
# Example version updates
|
|
# 1.2.3 -> 1.2.4 (patch)
|
|
# 1.2.3 -> 1.3.0 (minor)
|
|
# 1.2.3 -> 2.0.0 (major)
|
|
```
|
|
|
|
4. **Code Freeze and Branch Management**
|
|
```bash
|
|
# Create release branch from main
|
|
git checkout main
|
|
git pull origin main
|
|
git checkout -b release/v1.2.3
|
|
|
|
# Alternative: Use main branch directly for smaller releases
|
|
# Ensure no new features are merged during release process
|
|
```
|
|
|
|
5. **Version Number Updates**
|
|
- Update package.json, setup.py, or equivalent version files
|
|
- Update version in application configuration
|
|
- Update version in documentation and README
|
|
- Update API version if applicable
|
|
|
|
```bash
|
|
# Node.js projects
|
|
npm version patch # or minor, major
|
|
|
|
# Python projects
|
|
# Update version in setup.py, __init__.py, or pyproject.toml
|
|
|
|
# Manual version update
|
|
sed -i 's/"version": "1.2.2"/"version": "1.2.3"/' package.json
|
|
```
|
|
|
|
6. **Changelog Generation**
|
|
```markdown
|
|
# CHANGELOG.md
|
|
|
|
## [1.2.3] - 2024-01-15
|
|
|
|
### Added
|
|
- New user authentication system
|
|
- Dark mode support for UI
|
|
- API rate limiting functionality
|
|
|
|
### Changed
|
|
- Improved database query performance
|
|
- Updated user interface design
|
|
- Enhanced error handling
|
|
|
|
### Fixed
|
|
- Fixed memory leak in background tasks
|
|
- Resolved issue with file upload validation
|
|
- Fixed timezone handling in date calculations
|
|
|
|
### Security
|
|
- Updated dependencies with security patches
|
|
- Improved input validation and sanitization
|
|
```
|
|
|
|
7. **Documentation Updates**
|
|
- Update API documentation with new endpoints
|
|
- Revise user documentation and guides
|
|
- Update installation and deployment instructions
|
|
- Review and update README.md
|
|
- Update migration guides if needed
|
|
|
|
8. **Dependency Management**
|
|
```bash
|
|
# Update and audit dependencies
|
|
npm audit fix
|
|
npm update
|
|
|
|
# Python
|
|
pip-audit
|
|
pip freeze > requirements.txt
|
|
|
|
# Review security vulnerabilities
|
|
npm audit
|
|
snyk test
|
|
```
|
|
|
|
9. **Build and Artifact Generation**
|
|
```bash
|
|
# Clean build environment
|
|
npm run clean
|
|
rm -rf dist/ build/
|
|
|
|
# Build production artifacts
|
|
npm run build
|
|
|
|
# Verify build artifacts
|
|
ls -la dist/
|
|
|
|
# Test built artifacts
|
|
npm run test:build
|
|
```
|
|
|
|
10. **Testing and Quality Assurance**
|
|
- Run comprehensive test suite
|
|
- Perform manual testing of critical features
|
|
- Execute regression testing
|
|
- Conduct user acceptance testing
|
|
- Validate in staging environment
|
|
|
|
```bash
|
|
# Run all tests
|
|
npm test
|
|
npm run test:integration
|
|
npm run test:e2e
|
|
|
|
# Check code coverage
|
|
npm run test:coverage
|
|
|
|
# Performance testing
|
|
npm run test:performance
|
|
```
|
|
|
|
11. **Security and Compliance Verification**
|
|
- Run security scans and penetration testing
|
|
- Verify compliance with security standards
|
|
- Check for exposed secrets or credentials
|
|
- Validate data protection and privacy measures
|
|
|
|
12. **Release Notes Preparation**
|
|
```markdown
|
|
# Release Notes v1.2.3
|
|
|
|
## 🎉 What's New
|
|
- **Dark Mode**: Users can now switch to dark mode in settings
|
|
- **Enhanced Security**: Improved authentication with 2FA support
|
|
- **Performance**: 40% faster page load times
|
|
|
|
## 🔧 Improvements
|
|
- Better error messages for form validation
|
|
- Improved mobile responsiveness
|
|
- Enhanced accessibility features
|
|
|
|
## 🐛 Bug Fixes
|
|
- Fixed issue with file downloads in Safari
|
|
- Resolved memory leak in background tasks
|
|
- Fixed timezone display issues
|
|
|
|
## 📚 Documentation
|
|
- Updated API documentation
|
|
- New user onboarding guide
|
|
- Enhanced troubleshooting section
|
|
|
|
## 🔄 Migration Guide
|
|
- No breaking changes in this release
|
|
- Automatic database migrations included
|
|
- See [Migration Guide](link) for details
|
|
```
|
|
|
|
13. **Release Tagging and Versioning**
|
|
```bash
|
|
# Create annotated tag
|
|
git add .
|
|
git commit -m "chore: prepare release v1.2.3"
|
|
git tag -a v1.2.3 -m "Release version 1.2.3
|
|
|
|
Features:
|
|
- Dark mode support
|
|
- Enhanced authentication
|
|
|
|
Bug fixes:
|
|
- Fixed file upload issues
|
|
- Resolved memory leaks"
|
|
|
|
# Push tag to remote
|
|
git push origin v1.2.3
|
|
git push origin release/v1.2.3
|
|
```
|
|
|
|
14. **Deployment Preparation**
|
|
- Prepare deployment scripts and configurations
|
|
- Update environment variables and secrets
|
|
- Plan deployment strategy (blue-green, rolling, canary)
|
|
- Set up monitoring and alerting for release
|
|
- Prepare rollback procedures
|
|
|
|
15. **Staging Environment Validation**
|
|
```bash
|
|
# Deploy to staging
|
|
./deploy-staging.sh v1.2.3
|
|
|
|
# Run smoke tests
|
|
npm run test:smoke:staging
|
|
|
|
# Manual validation checklist
|
|
# [ ] User login/logout
|
|
# [ ] Core functionality
|
|
# [ ] New features
|
|
# [ ] Performance metrics
|
|
# [ ] Security checks
|
|
```
|
|
|
|
16. **Production Deployment Planning**
|
|
- Schedule deployment window
|
|
- Notify stakeholders and users
|
|
- Prepare maintenance mode if needed
|
|
- Set up deployment monitoring
|
|
- Plan communication strategy
|
|
|
|
17. **Release Automation Setup**
|
|
```yaml
|
|
# GitHub Actions Release Workflow
|
|
name: Release
|
|
|
|
on:
|
|
push:
|
|
tags:
|
|
- 'v*'
|
|
|
|
jobs:
|
|
release:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- name: Setup Node.js
|
|
uses: actions/setup-node@v3
|
|
with:
|
|
node-version: '18'
|
|
|
|
- name: Install dependencies
|
|
run: npm ci
|
|
|
|
- name: Run tests
|
|
run: npm test
|
|
|
|
- name: Build
|
|
run: npm run build
|
|
|
|
- name: Create Release
|
|
uses: actions/create-release@v1
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
with:
|
|
tag_name: ${{ github.ref }}
|
|
release_name: Release ${{ github.ref }}
|
|
draft: false
|
|
prerelease: false
|
|
```
|
|
|
|
18. **Communication and Announcements**
|
|
- Prepare release announcement
|
|
- Update status page and documentation
|
|
- Notify customers and users
|
|
- Share on relevant communication channels
|
|
- Update social media and marketing materials
|
|
|
|
19. **Post-Release Monitoring**
|
|
- Monitor application performance and errors
|
|
- Track user adoption of new features
|
|
- Monitor system metrics and alerts
|
|
- Collect user feedback and issues
|
|
- Prepare hotfix procedures if needed
|
|
|
|
20. **Release Retrospective**
|
|
- Document lessons learned
|
|
- Review release process effectiveness
|
|
- Identify improvement opportunities
|
|
- Update release procedures
|
|
- Plan for next release cycle
|
|
|
|
**Release Types and Considerations:**
|
|
|
|
**Patch Release (1.2.3 → 1.2.4):**
|
|
- Bug fixes only
|
|
- No new features
|
|
- Minimal testing required
|
|
- Quick deployment
|
|
|
|
**Minor Release (1.2.3 → 1.3.0):**
|
|
- New features (backward compatible)
|
|
- Enhanced functionality
|
|
- Comprehensive testing
|
|
- User communication needed
|
|
|
|
**Major Release (1.2.3 → 2.0.0):**
|
|
- Breaking changes
|
|
- Significant new features
|
|
- Migration guide required
|
|
- Extended testing period
|
|
- User training and support
|
|
|
|
**Hotfix Release:**
|
|
```bash
|
|
# Emergency hotfix process
|
|
git checkout main
|
|
git pull origin main
|
|
git checkout -b hotfix/critical-bug-fix
|
|
|
|
# Make minimal fix
|
|
git add .
|
|
git commit -m "hotfix: fix critical security vulnerability"
|
|
|
|
# Fast-track testing and deployment
|
|
npm test
|
|
git tag -a v1.2.4-hotfix.1 -m "Hotfix for critical security issue"
|
|
git push origin hotfix/critical-bug-fix
|
|
git push origin v1.2.4-hotfix.1
|
|
```
|
|
|
|
Remember to:
|
|
- Test everything thoroughly before release
|
|
- Communicate clearly with all stakeholders
|
|
- Have rollback procedures ready
|
|
- Monitor the release closely after deployment
|
|
- Document everything for future releases |