This document provides an overview of the release process followed in the OpenDataHub (ODH) operator development lifecycle. It explains how upstream and downstream repositories are managed, including the branching strategy, code synchronization, and backporting workflows.
The OpenDataHub operator development and release process spans two main repositories:
- Upstream Repository: opendatahub-io/opendatahub-operator
- Downstream Repository: red-hat-data-services/rhods-operator
There are two long-lived branches:
mainthe primary development branch where all changes land firstrhoaithe branch tracking downstream (productization) changes
- All new features and bug fixes are first merged into the
mainbranch.
- A dedicated
rhoaibranch exists to track downstream-related changes.
- Release branches (
odh-x.y, e.g.,odh-2.26.0) are created from themainbranch when a new upstream release is planned.
Changes to the operator should land in both main and the downstream rhoai branch.
gitGraph
branch rhoai order: 4
checkout main
commit
checkout rhoai
commit
checkout main
branch feature
commit id: "2-0a10a11"
checkout main
merge feature
checkout rhoai
branch cherry-pick-feature
cherry-pick id:"2-0a10a11"
checkout rhoai
merge cherry-pick-feature
- Merge PR to
main. Follow the process in CONTRIBUTING.md. - Create a downstream sync PR:
The PR author should then create another PR targeting the
rhoaibranch. CI automation typically creates the cherry-pick PR. Add a/cherry-pick rhoaicomment to the original PR; CI will report success or failure. If it fails, manually cherry-pick the commits into a new branch and open a new PR. - Edit the cherry-pick PR: Edit the title to include the prefix
[sync]. If the PR is associated with any Jira ticket, edit the description to include the ticket link. - Merge sync PR:
After the sync PR has passed GitHub checks and is reviewed and approved, CI will merge it into the
rhoaibranch.
- Changes from the upstream
rhoaibranch are synced into the downstreammainbranch.
- From the downstream
mainbranch, changes are backported to release-specific branches (rhoai-x.y, e.g.,rhoai-2.21). - These branches represent versions that are under active development or maintenance.
sequenceDiagram
actor engineer
participant main as opendatahub-io/main
participant rhoai as opendatahub-io/rhoai
participant rhds as red-hat-data-services/main
participant rhoaixy as red-hat-data-services/rhoai-x.y
engineer ->> main: pull request
engineer ->> rhoai: cherry-pick & pull request
rhoai ->> rhds: merge (via CI)
alt landing a change in the next rhoai release
rhds ->> rhoaixy: merge (via CI)
else fixing a blocker issue in a frozen release branch/fixing an issue in a z-stream release
engineer ->> rhoaixy: cherry-pick & pull request
end
A change that lands in the odh-operator main branch ends up in the next rhoai-x.y branch as follows:
- CI automation periodically merges the opendatahub-operator
rhoaibranch into the rhods-operatormainbranch. - CI automation periodically merges the rhods-operator
mainbranch into the active rhods-operatorrhoai-x.yrelease branch.
If a change is needed in a frozen/z-stream downstream release branch, an engineer opens a pull request against that specific release branch. The following illustration shows the three stages of downstream branches:
rhoai-2.22– Active development branchrhoai-2.21– Frozen branch in blocker-only phaserhoai-2.19– Released branch receiving only z-stream (critical) fixes
- Automatic backports from
maintorhoai-2.21are stopped. - A new development branch such as
rhoai-2.22is created, which starts receiving backports frommain. rhoai-2.21becomes a frozen branch, entering the blocker-only phase, where only critical, approved fixes are permitted.- Any fix targeting
rhoai-2.21must be approved as a blocker. - Older branches (e.g.,
rhoai-2.19) represent previously released versions and are maintained through z-stream (micro) releases, which accept only critical fixes. - These frozen/z-stream fixes are typically cherry-picked manually from the
mainbranch to the appropriate branches.
The Open Data Hub (ODH) follows a 3-week release cycle. This document outlines the standard steps involved in preparing and executing an ODH release.
Remember to notify this slack channel regarding any updates/issues regarding the release.
At the beginning of the week (Monday) following the release cycle, each team must:
- Post a comment on the tracker issue (created for every release)
- The comment must include the following format:
#Release# component-name|branch-url|tag-url
Note: The comment format must comply with the expected structure to be parsed by the release automation tool.
The actual release occurs on the following Tuesday.
A set of workflows/tasks using GitHub Actions (GHA) and Konflux Pipelines assists in automating the release process:
In the operator repository:
- Trigger the
release-stagingGHA workflow by providing:- Tracker issue URL eg: opendatahub-io/opendatahub-community#176
- Release version eg: 2.30.0(Strictly semver)
This workflow performs the following steps:
-
Validation:
- Validates the tracker URL format
- Validates the version number follows semver
-
Issue Number Extraction:
- Extracts the issue number from the tracker URL for later use
-
Release Branch:
- Creates or updates the release branch (
odh-x.y.z) - If the branch exists, it's checked out and updated
- If the branch doesn't exist, it's created from main
- Creates or updates the release branch (
-
Version Updates:
- Updates versions in relevant files
- Runs make manifests and bundle
- Cleans up bundle files
- Updates manifest branches
-
Pre-Release:
- Creates and pushes a tag (v{x.y.z})
- Generates release notes
- Creates a GitHub pre-release with:
- Tag: v{x.y.z}
- Pre-release status: true
-
Tracker Update:
- Comments on the tracker issue with the release information of the opendatahub-operator
-
Konflux Integration:
- Triggers the Konflux release onboarder workflow
odh-konflux-central: odh-konflux-release-onboarder
This workflow is automatically triggered by the release-staging workflow and it:
- Creates a PR to the release branch
- Adds the Tekton files required for the Konflux build process
- The workflow is triggered with:
- component: opendatahub-operator
- release_branch: odh-{version}
- version: v{version}
Once the above PR is merged, the Konflux pipeline starts and:
- Builds the operator image
- Builds the operator bundle
The initial catalog build will fail as there will be no catalog.yaml present, the next step will take care of the failure by generating the catalog and retriggering the catalog build.
opendatahub: fbc-processor
Triggered at the end of the operator bundle pipeline:
- Generates
catalog.yamlrequired for the catalog build - Pushes commit to the release branch
- Initiates a Konflux build to create the catalog image
The Quality Engineering (QE) team performs:
- A set of ODS-CI tests using the catalog image generated from the above step
- The tests will run for fresh installation and upgrade case
- Once QE provides final sign-off, the release can proceed
- Create a PR to the
community-operators-prodrepository with updated manifests (example PR) - Once merged:
- Set the GitHub release to final (latest) state
- Update and close the tracker issue with:
- Link to the merged PR in
community-operators-prod(example comment)
- Link to the merged PR in
ODH Release Process is now complete.
- The overall process involves four branches across two repos.
- First, a change lands in the opendatahub-io/opendatahub-operator repo according to the Basic Upstream Workflow.
- Then, downstream work happens in the red-hat-data-services/rhods-operator repo according to the Basic Downstream Workflow.