Release Process¶
Guidelines for releasing new versions of Genifest.
Work in Progress
This documentation page is being developed. Please check back soon for complete content.
Release Workflow¶
Genifest follows semantic versioning and uses automated release processes.
Version Numbering¶
We follow Semantic Versioning:
- MAJOR - Incompatible API changes
- MINOR - New functionality (backward compatible)
- PATCH - Bug fixes (backward compatible)
Examples:
v1.0.0- Major releasev1.1.0- Minor release with new featuresv1.0.1- Patch release with bug fixesv1.0.0-rc1- Release candidate
Release Types¶
Release Candidates (-rc1, -rc2):
- Pre-release versions for testing
- Feature-complete but may have bugs
- Published for community testing
Stable Releases (v1.0.0):
- Production-ready versions
- Thoroughly tested
- Recommended for production use
Release Process¶
1. Preparation¶
-
Update documentation:
- Ensure all new features are documented
- Update CLI help text if needed
- Review and update README.md
-
Update version:
-
Update changelog:
2. Testing¶
-
Run full test suite:
-
Test release build:
-
Manual testing:
- Test guestbook example
- Verify CLI commands work
- Test on different platforms
3. Release Creation¶
-
Create release branch:
-
Create pull request:
- Review all changes
- Ensure CI passes
- Get approval from maintainers
-
Merge and tag:
4. Automated Release¶
GitHub Actions automatically:
- Builds binaries for all platforms
- Generates checksums
- Creates GitHub release
- Uploads release artifacts
5. Post-Release¶
-
Update documentation site:
- Documentation deploys automatically
- Verify genifest.qubling.com is updated
-
Announce release:
- GitHub release notes
- Update package managers (if applicable)
Release Checklist¶
Pre-Release¶
- All tests pass
- Documentation is updated
- Version number is updated
- Changelog is updated
- Breaking changes are documented
- Dependencies are updated if needed
Release¶
- Release branch created
- Pull request reviewed and approved
- Tag created and pushed
- GitHub release created
- Binaries are built and uploaded
Post-Release¶
- Documentation site updated
- Release announced
- Issues closed if fixed
- Next milestone planned
Branch Strategy¶
Master Branch:
- Always deployable
- All releases tagged from master
- Protected with required reviews
Feature Branches:
- Short-lived for specific features
- Merged via pull requests
- Deleted after merge
Release Branches:
- Created for release preparation
- Allows final fixes without blocking development
- Merged to master and deleted
Hotfix Process¶
For critical bugs in released versions:
-
Create hotfix branch from tag:
-
Fix the issue:
-
Release process:
-
Merge back:
Release Automation¶
GitHub Actions¶
The release process is automated with GitHub Actions:
# .github/workflows/release.yml
name: Release
on:
push:
tags:
- 'v*'
jobs:
release:
runs-on: ubuntu-latest
steps:
- name: Build release binaries
run: make release
- name: Create GitHub release
uses: actions/create-release@v1
Build Matrix¶
Release builds target multiple platforms:
- Linux (amd64, arm64)
- macOS (amd64, arm64)
- Windows (amd64)
Version Management¶
Version File¶
Version is stored in internal/cmd/version.txt:
Build Integration¶
Version is embedded during build:
Makefile Integration¶
VERSION := $(shell cat $(VERSION_FILE))
LDFLAGS := -ldflags "-X $(PACKAGE)/internal/cmd.Version=$(VERSION)"
See Also¶
- Contributing - Development workflow
- Testing - Testing requirements
- Changelog - Release history