Issue #679: Add unit tests + fixtures for release process documentation
This document defines the complete release process for Sanctifier, ensuring reliable, predictable, and safe releases.
Sanctifier follows Semantic Versioning 2.0.0:
MAJOR.MINOR.PATCH[-PRERELEASE][+BUILD]
Examples:
- 1.0.0 (initial release)
- 1.1.0 (minor feature addition)
- 1.1.1 (patch/bugfix)
- 2.0.0-rc.1 (release candidate)
- 2.0.0-beta.1 (beta release)
- MAJOR: Breaking API changes, security fixes requiring migration
- MINOR: New features, non-breaking enhancements
- PATCH: Bug fixes, documentation updates, performance improvements
- Create release branch:
release/v{VERSION} - Update
CHANGELOG.mdwith all changes since last release - Update version in
Cargo.toml,package.json - Review all commits since last release
- Run full test suite:
cargo test --all - Run security checks:
cargo audit - Build all contracts for testnet
- Generate API documentation
- Run integration tests on testnet
- Verify contract deployments work
- Test frontend against testnet contracts
- Run load tests (if applicable)
- Security review of changes
- Documentation review
- Create annotated git tag:
git tag -a v{VERSION} -m "Release {VERSION}" - Push tag to upstream:
git push origin v{VERSION} - Create GitHub release with changelog
- Build final release artifacts
- Publish to crates.io (if applicable)
- Deploy to production (if automated)
- Verify production deployment
- Announce release on forums/socials
- Monitor production metrics
- Respond to early user feedback
- Prepare patch release if critical issues found
- Document any deployment issues
- Archive release artifacts
Before any release, ensure:
-
Unit Tests:
cargo test --lib- Minimum 80% code coverage
- All error paths tested
- Edge cases covered
-
Integration Tests:
cargo test --test '*'- End-to-end workflows
- Contract deployment and execution
- API functionality
- Error handling
-
Contract Tests:
cd contracts && cargo test --all- Each contract built and tested
- Testnet deployment validated
- Cross-contract interactions (if applicable)
-
Frontend Tests:
cd frontend && npm run test- Unit tests pass
- Integration tests pass
- E2E tests on testnet
-
Security Tests:
cargo audit,npm audit- No high/critical vulnerabilities
- Dependencies up to date
- License compliance check
If a critical issue is discovered post-release:
- Immediate: Announce on security channels
- Within 1 hour: Publish patch release (e.g., 1.0.1)
- Instructions: Provide downgrade instructions to users
- Post-mortem: Document incident and prevention measures
## [1.0.0] - 2024-04-25
### Added
- New feature description
- API endpoint addition
### Fixed
- Bug fix description
- Security issue fixed
### Changed
- Breaking change description
- Dependency updates
### Security
- Security advisory (if applicable)
### Deprecated
- API deprecation notices# Release v{VERSION}
**Release Date**: YYYY-MM-DD
## Summary
Brief overview of this release's focus and key achievements.
## Major Features
- Feature 1 description
- Feature 2 description
## Bug Fixes
- Bug fix 1
- Bug fix 2
## Security Updates
- Security fix 1 (CVE if applicable)
## Breaking Changes
- Breaking change with migration guide
## Upgrade Instructions
Steps for users to upgrade from previous version.
## Contributors
- @contributor1
- @contributor2
## Links
- [Full Changelog](../CHANGELOG.md)
- [Documentation](../DOCUMENTATION_INDEX.md)The release process is partially automated:
- CI/CD Pipeline: Runs on every tag push
- Automated Tests: All test suites execute
- Artifact Building: Contracts and binaries built
- GitHub Release: Automatically created from annotated tags
See .github/workflows/release.yml for automation details.
For release-related questions:
- See DOCUMENTATION_INDEX.md
- Review previous releases: GitHub Releases
- Contact maintainers on security channel for security-related releases