Local PV LVM tries to follow semantic versioning principles as specified here https://semver.org. It follows a on quarterly release cadence for minor version releases. The scope of the release is determined by contributor availability. The scope is published in the Release Tracker Projects.
Every release has a pre-release version that gets created on branch creation, explained further below. This pre-release version is meant for all the below action items throughout the release process:
- 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 are found during the above stages, they are fixed and the prerelease version is overridden by the newer changes and are up for above action items again.
Once all the above tests are completed, a main release is created.
Local PV LVM is released with container images and a respective helm chart as the only recommended way of installation. Even though the lvm-operator is also published, it is generated by templating the helm chart itself.
Before creating a release, the repo owner needs to create a separate branch from the active branch, which is develop
. Name of the branch should follow the naming convention of release/2.7
if release is for 2.7.x
.
Upon creation of a release branch ex. release/2.7
, two automated PRs open up to change the chart versions of the charts in release/2.7
branch to 2.7.0-prerelease
and develop
to 2.8.0-develop
. Post merge of these two PRs, the 2.7.0-prerelease
and 2.8.0-develop
versions are pushed to respective docker registries and also the respective helm charts against these versions are published. The prerelease versions increment via automated PRs on every release creation. For example once 2.7.0
is published a 2.7.1-prerelease
image and chart would be published to allow testing of further patch releases and so on.
The format of the release tag follows semver versioning. The final release tag is of format X.Y.Z
and the respective prerelease and develop versions are X.Y.Z-prerelease
and X.Y+1.0-develop
.
Once the release is triggered, the unchanged code undergoes stages as such linting, unit-tests and bdd-tests and the code coverage is updated accordingly. Post the former jobs, the image build is triggered with the specified tag, the images are published and the chart is run though scripts that update the image tags at the relevant places and eventually helm charts are published.
The helm charts are hosted on github deployments for the corresponding releases.
-
Automated Version Updates:
- Two automated PRs update chart versions:
release/2.7
branch →2.7.0-prerelease
develop
branch →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-develop
for 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-develop
for 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.