This document describes the structured release process for Wareflow Employee Management System.
The release process is designed to be:
- Consistent: Every release follows the same steps
- Automated: Build and release notes are generated automatically
- Safe: Tests run before builds, checksums verify integrity
- Communicated: Users receive clear release notes and upgrade instructions
When: Major new features, breaking changes, API changes
Characteristics:
- Breaking changes allowed
- Migration required
- Extensive testing
- Long support cycle for previous version (6 months)
Examples:
- Configuration format changes (JSON → YAML)
- Database schema changes
- Removed features
Process:
- Create release branch:
release/v2.0.0 - Complete all planned features
- Update migration scripts
- Test migration from previous version
- Beta testing (2 weeks)
- Release candidate (1 week)
- Stable release
When: New features, backward compatible
Characteristics:
- No breaking changes
- New functionality added
- Standard testing
- No migration required
Process:
- Develop on main branch
- Test all new features
- Update documentation
- Tag and release
When: Bug fixes only
Characteristics:
- No new features
- Critical bug fixes
- Security fixes
- Quick turnaround
Process:
- Fix on main branch
- Quick smoke test
- Tag and release
Before creating a release, ensure:
- All tests pass (
pytestwith ≥70% coverage) - No critical bugs open
- No security vulnerabilities
- Performance acceptable
- Code review completed
- Release notes written (or generated)
- Breaking changes documented
- Migration guide created (if breaking changes)
- API documentation updated (if API changes)
- User guide updated (if UI changes)
- Build script works locally:
python build/build.py - Executable runs without errors
- Checksums generated correctly
- All artifacts created
- Migration script tested (if needed)
- Rollback tested (if breaking changes)
- Backup/restore tested
For automated release with GitHub Actions:
# 1. Ensure main is up to date
git checkout main
git pull origin main
# 2. Create and push tag
git tag v1.2.3
git push origin v1.2.3
# That's it! GitHub Actions will:
# - Run tests
# - Build executables
# - Generate checksums
# - Generate release notes
# - Create GitHub release
# - Update CHANGELOG.mdFor on-demand builds without tags:
- Go to GitHub Actions tab
- Select "Build and Release" workflow
- Click "Run workflow"
- Enter version (e.g., v1.2.3)
- Enable "Create GitHub release" if desired
- Click "Run workflow"
For testing or custom builds:
# Standard build
python build/build.py
# Clean build
python build/build.py --clean
# Custom version
python build/build.py --version v1.2.3
# Skip tests
python build/build.py --skip-tests-
Verify release on GitHub
- Check release notes are correct
- Download and test executables
- Verify checksums
-
Update documentation links
- Update download links in README
- Update version references in docs
-
Announcements
- Post announcement in GitHub Discussions
- Send email to users (if mailing list)
- Update website/changelog
-
Monitor for issues
- Track upgrade problems
- Respond to GitHub issues
- Fix critical bugs quickly
-
Gather feedback
- User experience with upgrade
- Performance issues
- Feature requests
-
Metrics
- Track upgrade adoption
- Monitor error rates
- Review crash reports
Wareflow EMS follows Semantic Versioning:
MAJOR.MINOR.PATCH
Examples:
- 2.0.0 - Major release (breaking changes)
- 1.2.0 - Minor release (new features)
- 1.2.3 - Patch release (bug fixes)
Increment MAJOR (X.0.0) when:
- Breaking changes introduced
- Configuration format changes
- Database schema changes
- Features removed
Increment MINOR (0.X.0) when:
- New features added
- Backward compatible changes
- New functionality
- Performance improvements
Increment PATCH (0.0.X) when:
- Bug fixes
- Security fixes
- Non-breaking changes
- Documentation updates
Release notes are automatically generated from git commits using conventional commit format.
For proper release notes, use conventional commits:
type(scope): description
# Types:
feat: New feature
fix: Bug fix
docs: Documentation only
style: Code style changes (formatting)
refactor: Code refactoring
perf: Performance improvements
test: Adding or updating tests
chore: Maintenance tasks
build: Build system changes
ci: CI/CD changes
security: Security vulnerability fix
# Examples:
feat: add bulk Excel import
fix(auth): resolve login timeout issue
docs: update installation guide
security: patch file upload vulnerability
Release notes include these sections:
- ✨ New Features (feat:)
- 🐛 Bug Fixes (fix:)
- 🔒 Security Updates (security:)
- 📚 Documentation (docs:)
- ⚡ Performance (perf:)
⚠️ Breaking Changes (breaking commits)
For complex releases, you can manually edit the generated release notes on GitHub before publishing.
The CHANGELOG.md file is maintained automatically with each release.
Follows Keep a Changelog format:
# Changelog
## [Unreleased]
### Added
- New features (not yet released)
## [2.0.0] - 2025-01-23
### Added
- Released features
### Fixed
- Bug fixesAutomatically updated by GitHub Actions when releasing. Can be manually updated with:
# Generate changelog from latest tag
python build/generate_changelog.py --update-file
# Generate for specific version
python build/generate_changelog.py --version v1.2.3 --update-fileWhen introducing breaking changes:
-
Document breaking changes
- Update CHANGELOG.md
- Add migration guide
- Document old → new behavior
-
Implement migration
- Create migration script
- Test migration from old version
- Provide rollback mechanism
-
Deprecation period (if possible)
- Mark as deprecated in previous release
- Provide migration guide
- Allow time for users to migrate
Clearly communicate breaking changes:
## ⚠️ Breaking Changes
### Configuration format changed
The configuration file format has changed from JSON to YAML.
**Migration**:
Automatic migration is provided. Run:
```bash
wems upgradeManual steps: If migration fails, manually convert config.json to config.yaml:
{"alerts": {"critical_days": 7}}Becomes:
alerts:
critical_days: 7See Migration Guide for details.
## Security Updates
For security vulnerabilities:
### Release Process
1. **Fix privately** (in security branch if needed)
2. **Test thoroughly**
3. **Release as patch** (0.0.X)
4. **Clear communication**
- Use "🔒 SECURITY UPDATE" in release notes
- Include CVE number if assigned
- Indicate severity (CRITICAL, HIGH, MEDIUM, LOW)
- Recommend immediate upgrade
### Example Release Notes
```markdown
## 🔒 Security Updates
### Critical: File Upload Vulnerability (CVE-XXXX-XXXX)
**Severity**: CRITICAL (CVSS 9.1)
**Upgrade**: IMMEDIATELY
A path traversal vulnerability in file upload has been fixed.
**Impact**: Attackers could read arbitrary files
**Fix**: Proper path validation added
**Credit**: Reported by @researcher
All users should upgrade immediately.
Always have a rollback plan:
-
Backup previous version
- Tag rollback point:
v1.2.3-rollback - Keep old release available
- Tag rollback point:
-
Test rollback
- Verify users can downgrade
- Test database rollback
- Document rollback process
- Delete release on GitHub
- Create hotfix patch
- Release new version quickly
- Communicate with users
Planned release schedule:
- Schedule: Every 6 months
- Months: January, July
- Planning: Starts 2 months before
- Beta: 2 weeks before release
- RC: 1 week before release
- Schedule: Monthly
- Day: First Monday of month
- Features: Feature freeze 1 week before
- Schedule: As needed
- Trigger: Critical bugs, security issues
- Turnaround: Within 48 hours for security
-
GitHub Release (automatic)
- Release notes
- Download links
- Checksums
-
GitHub Discussions
- Announcement post
- Discussion thread
-
Email (if mailing list)
- Release announcement
- Upgrade instructions
Subject: 🎉 Wareflow EMS v1.2.0 Released!
Hi everyone,
We're excited to announce Wareflow EMS v1.2.0!
**What's New**:
- ✨ Bulk Excel import for employees
- 🐛 Critical bug fixes
- 🔒 Security improvements
**Why Upgrade**:
- Security vulnerability fixed (upgrade recommended)
- New features save time
- Improved reliability
**How to Upgrade**:
1. Open application
2. Click "Update" when prompted
3. Follow migration wizard if needed
4. Done!
**Upgrade Time**: ~5 minutes
**Breaking Changes**: None
[Read Release Notes](link)
[Get Help](link)
Questions? Reply to this email or open a GitHub Issue.
Best regards,
Wareflow TeamProblem: GitHub Actions build fails
Solutions:
- Check tests are passing locally
- Verify PyInstaller spec is correct
- Check for syntax errors in workflows
- View workflow logs for errors
Problem: Release notes not generated
Solutions:
- Check commit messages follow conventional format
- Verify tags are correctly formatted (vX.Y.Z)
- Check generate_changelog.py runs locally
- View workflow logs for changelog generation errors
Problem: CHANGELOG.md not committed after release
Solutions:
- Check GitHub Actions permissions (contents: write)
- Verify commit step in workflow
- Manually update with:
python build/generate_changelog.py --update-file - Commit and push manually
- ✅ Follow semantic versioning
- ✅ Use conventional commit messages
- ✅ Write tests for new features
- ✅ Document breaking changes
- ✅ Test migrations
- ✅ Communicate clearly
- ✅ Monitor after release
- ✅ Have rollback plan
- ❌ Release without testing
- ❌ Skip migration for breaking changes
- ❌ Hide breaking changes
- ❌ Release on Friday (unless critical)
- ❌ Ignore security issues
- ❌ Forget to update docs
- ❌ Release major version without beta testing
git tag v1.2.3
git push origin v1.2.3python build/generate_changelog.py
python build/generate_changelog.py --update-filepython build/build.py
python build/build.py --cleangit describe --tags --always- CHANGELOG.md - Complete change history
- build/README.md - Build system documentation
- CONTRIBUTING.md - Contribution guidelines