Introduction¶
This file documents the methods and standards that should be applied by the maintainers of this project. For example: how to create a new release.
Standards used¶
Commits¶
We adhere to the Conventional Commits v1.0 standard.
Versioning¶
For versioning purposes, we adhere to the SemVer v2.0.0 standard with a side note that we always prefix the semantic version number with the character 'v'. This stands for "version".
As a quick summary, this means we use version numbers in the style of vX.Y.Z. With:
- X being major, including breaking, changes;
- Y being minor, possibly including patch but never breaking, changes;
- Z being a patch, but never breaking, changes;
Methods used¶
Creating a Release¶
We release from main. All changes to main are made through PRs. Merging a PR
triggers the release drafter action to create a draft release.
The process to create a release is mostly automated. To start it:
- Merge one or more PRs to
main; - Ensure completeness;
- Edit the draft release and publish it.
Publishing the release triggers the automated release workflows. In particular:
- the operator image is built and published as
ghcr.io/belastingdienst/opr-paas:vX.Y.Z; - the
install.yamlartifact is generated and attached to the GitHub release; - one immutable OLM bundle image is built and published as
ghcr.io/belastingdienst/opr-paas-bundle:vX.Y.Z; - the source-controlled file-based catalog under
catalog/is updated to add the release to thecandidatechannel; - that catalog change is committed back to the default branch;
- a catalog image is built from the committed catalog source and published.
The catalog image is published using:
- an immutable
git-<sha>tag for traceability; and - the moving
latesttag as the current catalog delivery reference.
The rollout semantics for OLM do not come from image tags. They come from OLM channel subscriptions:
candidatefor development clusters;fastfor pre-production clusters; andstablefor production clusters.
OLM promotion flow¶
OLM promotion is handled through the Promote OLM catalog workflow.
This workflow:
- reuses the already published immutable bundle image for the requested release;
- updates the source-controlled catalog metadata in
catalog/; - promotes that version into
fastorstable; - commits the catalog change back to the default branch; and
- rebuilds and republishes the catalog image from that committed source.
Promotion does not rebuild the bundle. It only changes catalog metadata.
Operational model¶
The intended release flow is:
- Publish a GitHub release.
- The release workflow publishes the immutable operator and bundle images.
- The same workflow updates the source-controlled catalog and adds the new release
to
candidate. - Development clusters subscribed to
candidatecan upgrade. - After validation, run the promotion workflow to add the same bundle version to
fast. - After validation in pre-production, run the promotion workflow again to add the same bundle
version to
stable.
No new bundle is built during promotion. Promotion changes catalog metadata only.
Important: No Backports Policy¶
We do not support backports to previous release versions. Fixes are only provided for the current main release series. For example, if version 2.x.x is the active release series, no fixes will be made or backported to the 1.x.x line.
We follow a roll-forward support model:
- All users are expected to upgrade to the latest available release to receive fixes.
- Fix releases (patch versions) are provided for the current main release series only.
- Users remaining on older versions do so at their own risk, as we do not provide maintenance or security updates for them.
This approach allows us to focus our efforts on improving the latest version without fragmenting support across multiple release lines.
Creating a Hotfix Release¶
Hotfix releases are created from the relevant tag. The process is similar to creating a regular release.
The process is as follows:
- Create a new branch based on the latest release tag of the current main release series that needs the fix;
- Merge one or more PRs to this branch;
- Ensure completeness;
- Edit the draft release and publish it; Ensure the release only contains the hotfix!
- Merge the hotfix branch back into
mainto keepmainup to date.
Note: Hotfix releases are only supported for the actively maintained release series. We do not create hotfixes for previous major versions.