The project uses semantic versioning with a v prefix: v{MAJOR}.{MINOR}.{PATCH} (e.g. v0.3.0).
main— Active development. All PRs targetmain.release-{MAJOR}.{MINOR}— Maintenance branches for each minor version (e.g.release-0.3). Created when a minor version is ready to ship.
- Create a
release-{MAJOR}.{MINOR}branch frommainand push it - The
manage-release-tagsworkflow detects the new branch and automatically creates thev{MAJOR}.{MINOR}.0tag - The
releaseworkflow triggers, builds multi-arch images, and creates the GitHub release
Patch releases are automated:
- Cherry-pick fixes to the
release-{MAJOR}.{MINOR}branch (manually, or via/cherry-pick release-X.Ycomment on a merged PR) - Every Tuesday at 08:00 UTC, the
manage-release-tagsworkflow checks all release branches for new commits since the last tag - If new commits exist, it increments the patch version (e.g.
v0.3.0→v0.3.1) and creates a new tag - The
releaseworkflow builds and publishes the patch release
To trigger a patch release immediately (without waiting for Tuesday), manually run the manage-release-tags workflow via GitHub Actions.
For each tag, the release workflow:
-
Builds multi-arch container images (
linux/amd64,linux/arm64) and pushes to GHCR:ghcr.io/functions-dev/func-operator:{VERSION}ghcr.io/functions-dev/func-operator:{MAJOR}.{MINOR}ghcr.io/functions-dev/func-operator:{MAJOR}ghcr.io/functions-dev/func-operator:latest(only for the newest version)
-
Generates an install manifest (
func-operator.yaml) with CRDs, RBAC, and deployment (using image digest for reproducibility) -
Builds an OLM bundle image for catalog distribution:
ghcr.io/functions-dev/func-operator-bundle:{VERSION}
-
Creates a GitHub release with auto-generated release notes and the install manifest attached
The nightly-build workflow runs daily at 00:00 UTC and pushes images from main tagged as :main.
The cherry-pick workflow supports automated backporting:
- Comment
/cherry-pick release-X.Yon a merged PR - A new PR with the cherry-picked changes is automatically created against the target branch
For urgent fixes outside the Tuesday schedule:
- Merge the fix to the release branch
- Either manually trigger
manage-release-tagsvia GitHub Actions, or push a tag directly:git tag v{MAJOR}.{MINOR}.{PATCH} git push origin v{MAJOR}.{MINOR}.{PATCH} - The
releaseworkflow triggers automatically on tag push