VMPilot Release Process
This document outlines the process for creating and publishing VMPilot releases.
Branching Strategy
VMPilot follows a simplified Git Flow branching strategy:
main
- Production-ready code, deployed to usersdev
- Integration branch for development work- Feature branches - Individual features branched from
dev
All development work happens in feature branches, which are merged into dev
via pull requests. When ready for release, dev
is merged into main
.
Release Preparation
Before triggering the release workflow, run the local preparation script to ensure everything is ready:
Bash | |
---|---|
This script will:
- Verify you're on the
dev
branch with no uncommitted changes - Pull the latest changes from the remote repository
- Extract the version number from the milestone
- Run tests to ensure everything is working
- Generate draft release notes for review
- Open the notes in your editor for customization
- Check if there are any open issues in the milestone
- Provide instructions for triggering the release workflow
Release Workflow
The actual release is handled by a GitHub Actions workflow that:
- Merges
dev
intomain
- Creates a GitHub release with version tag
- Builds and pushes the Docker image to GitHub Container Registry
- Closes the milestone
To trigger the release workflow:
- Go to the Actions tab
- Click "Run workflow"
- Enter the milestone number
- Optionally select "Create a draft release" if you want to review before publishing
- Click "Run workflow"
Versioning
VMPilot uses semantic versioning (MAJOR.MINOR.PATCH):
- MAJOR: Incompatible API changes
- MINOR: Backwards-compatible functionality
- PATCH: Backwards-compatible bug fixes
Version numbers are stored in milestone titles.
Post-Release
After a successful release:
- Verify the Docker image is available on GitHub Container Registry
- Check that the GitHub release was created correctly
- Ensure the milestone was closed
- Announce the release to users
Hotfixes
For critical issues that need immediate fixes:
- Create a hotfix branch from
main
- Fix the issue and test thoroughly
- Create a PR to merge back to both
main
anddev
- Create a new patch version release