Understanding Module Releases
What is a Release?
A release represents a specific version of your module that's ready for distribution. It includes:
- Versioned Code: Tagged snapshot of your codebase
- Built Artifacts: Compiled and signed
.modl
file - Documentation: Changes and upgrade notes
- Distribution: Published package
Version Numbers
We use Semantic Versioning (SemVer):
MAJOR.MINOR.PATCH
| | |
| | └─ Bug fixes
| └─ New features (backwards compatible)
└─ Breaking changes
Example version flow:
Version Choice
- Increment PATCH for bug fixes: 1.0.0 → 1.0.1
- Increment MINOR for new features: 1.0.1 → 1.1.0
- Increment MAJOR for breaking changes: 1.1.0 → 2.0.0
Release Process
1. Preparation
Update version in build.gradle.kts
:
allprojects {
version = "1.0.0" // Remove -SNAPSHOT suffix
}
2. Documentation
Changelog entry:
## [1.0.0] - 2024-11-14
### Added
- New feature X
- Support for Y
### Changed
- Improved performance of Z
### Fixed
- Bug in component A
3. Testing
Pre-release checklist:
- All tests pass
- Documentation updated
- Breaking changes noted
- Backwards compatibility verified
- Module builds correctly
- Signing works
4. Creating the Release
Manual process:
# Create release branch
git checkout -b release/1.0.0
# Commit version changes
git add .
git commit -m "chore: prepare release 1.0.0"
# Tag release
git tag -a 1.0.0 -m "Release version 1.0.0"
# Push to trigger CI/CD
git push origin 1.0.0
5. Post-Release
Update to next version:
allprojects {
version = "1.1.0-SNAPSHOT"
}
Release Types
Development (-SNAPSHOT)
- Unstable builds
- Work in progress
- Not for production
Release Candidates (RC)
- Feature complete
- Testing phase
- Almost ready
Final Release
- Stable version
- Production ready
- Fully tested
Distribution
GitHub Releases
- Automated by CI/CD
- Includes built module
- Contains release notes
Module Distribution
- Signed
.modl
file - Release documentation
- Installation instructions
- Upgrade notes
Best Practices
-
Version Control
- Clear commit messages
- Proper tags
- Clean history
-
Documentation
- Detailed changelog
- Migration guides
- Known issues
-
Testing
- Comprehensive testing
- Multiple Ignition versions
- Different environments
Common Scenarios
Hotfix Release
For urgent fixes:
- Branch from release tag
- Fix issue
- Increment patch version
- Create new release
Feature Release
For new features:
- Complete feature development
- Increment minor version
- Update documentation
- Create release
Breaking Change
When breaking compatibility:
- Document changes thoroughly
- Increment major version
- Provide migration guide
- Extra testing
Release Checklist
Before any release:
- Version updated
- Changelog complete
- Tests passing
- Documentation updated
- Breaking changes documented