Local PV ZFS follows semantic versioning principles and aims for a quarterly minor version release cadence. The scope of each release depends on contributor availability and is tracked in the Release Tracker Projects.
Each release has a pre-release version, created upon branch creation (explained further below). This pre-release version is used for the following validation steps:
- Platform Verification
- Automated Regression & Feature Testing
- Exploratory Testing by QA engineers
- Strict Security Scanning on container images
- Upgrade Testing from previous releases
- Beta Testing by users on relevant issues
If any issues arise during these stages, they are fixed, and the pre-release version is updated for further validation. This cycle continues until all tests are successfully completed, after which a main release is created.
Local PV ZFS is released as container images and a corresponding Helm chart, which is the recommended installation method. Although the zfs-operator is also published, it is generated by templating the Helm chart.
The release tags follow semantic versioning:
- Final release tag:
X.Y.Z - Pre-release version:
X.Y.Z-prerelease - Development version:
X.Y+1.0-develop
Note: The
prereleaseanddevelopversions are intermediate versions that get overridden with each change merged into their respective branches. These versions are only for testing and are not associated with any Git tags.
-
Branch Creation:
- The repo owner creates a release branch from
develop, named in the formatrelease/X.Y(e.g.,release/2.7for version2.7.x).
- The repo owner creates a release branch from
-
Automated Version Updates:
- Two automated PRs update chart versions:
release/2.7branch →2.7.0-prereleasedevelopbranch →2.8.0-develop
- Once merged, the updated images and Helm charts are published for testing.
- Two automated PRs update chart versions:
-
Final Release Creation:
- When the release branch is ready, the repo owner creates a release with tag
X.Y.Z(e.g.,2.7.0). - The release process includes:
- Linting, unit tests, and BDD tests
- Code coverage updates
- Image builds with the specific tag (e.g.,
2.7.0) - Helm chart updates and publishing
- When the release branch is ready, the repo owner creates a release with tag
-
Post-GA Version Increments:
- After the release is GA (General Availability):
- The next pre-release version (
2.7.1-prerelease) is published. - The develop branch continues with
2.8.0-developfor the next major/minor release cycle.
- The next pre-release version (
- After the release is GA (General Availability):
-
Branching & Changes:
- Patch releases are made against the existing release branch (e.g.,
release/2.7). - All merged changes are available for testing via the prerelease version (
2.7.1-prerelease).
- Patch releases are made against the existing release branch (e.g.,
-
Final Patch Release Creation:
- When ready, the repo owner creates a release with tag
X.Y.Z+1(e.g.,2.7.1). - The release process includes:
- Linting, unit tests, and BDD tests
- Code coverage updates
- Image builds with the specific tag (e.g.,
2.7.1) - Helm chart updates and publishing
- When ready, the repo owner creates a release with tag
-
Post-GA Version Increments:
- Once the patch is GA:
- The next pre-release version (
2.7.2-prerelease) is published. - The develop branch continues with
2.8.0-developfor the next major/minor release cycle.
- The next pre-release version (
- Once the patch is GA:
- Container Images: Published at Docker Hub
- Helm Charts: Hosted on GitHub Deployments
Before finalizing a release or patch release, it is ensured that all significant changes are documented in CHANGELOG.md.
This document streamlines the release process it ensuring all necessary details remain intact.