Release v0.19.0#4772
Conversation
Release-Triggered-By: JAORMX
Release-Triggered-By: JAORMX
Release-Triggered-By: JAORMX
Release-Triggered-By: JAORMX
Release-Triggered-By: JAORMX
Release-Triggered-By: JAORMX
Release-Triggered-By: JAORMX
Release-Triggered-By: JAORMX
Release-Triggered-By: JAORMX
Release-Triggered-By: JAORMX
Release-Triggered-By: JAORMX
Release-Triggered-By: JAORMX
Release-Triggered-By: JAORMX
Release-Triggered-By: JAORMX
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #4772 +/- ##
=======================================
Coverage 68.93% 68.93%
=======================================
Files 517 517
Lines 54635 54635
=======================================
+ Hits 37662 37665 +3
+ Misses 14089 14084 -5
- Partials 2884 2886 +2 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
There was a problem hiding this comment.
The inline comment covers the details, but merging this as-is will cause OpenShift users following the documented install path to silently deploy v0.15.0 images — please update values-openshift.yaml before merging.
Extended reasoning...
Overview
This is a standard release PR bumping ToolHive from v0.18.0 to v0.19.0. It updates VERSION, Chart.yaml versions/appVersions for both operator and operator-crds charts, image tags in values.yaml, and regenerated README docs via helm-docs. Six files are touched, all mechanical version bumps.
Bug: values-openshift.yaml not updated
The file deploy/charts/operator/values-openshift.yaml exists in the repo and pins image tags to v0.15.0. This PR's release automation did not include it in the files-to-update list. The README documents an OpenShift install path using --values values-openshift.yaml, and Helm's merge semantics mean those override values will shadow the correctly-updated defaults from values.yaml. This is a real, user-facing regression for OpenShift deployments.
Security risks
No security-sensitive code is touched. This is purely a version bump / release PR.
Level of scrutiny
Release PRs are normally low-risk and mechanical, but this one has a confirmed bug affecting a documented install path for a specific platform (OpenShift). The fix is straightforward (update three image tags and add the file to the release workflow's version_files list), but it needs to be made before merging.
Other factors
No prior reviews from me on this PR. The bug is well-evidenced by reading the file directly — values-openshift.yaml lines 29, 34, 37 still show v0.15.0.
| # -- Container image for the operator | ||
| image: ghcr.io/stacklok/toolhive/operator:v0.18.0 | ||
| image: ghcr.io/stacklok/toolhive/operator:v0.19.0 | ||
| # -- Image pull policy for the operator container | ||
| imagePullPolicy: IfNotPresent | ||
|
|
||
| # -- Image to use for Toolhive runners | ||
| toolhiveRunnerImage: ghcr.io/stacklok/toolhive/proxyrunner:v0.18.0 | ||
| toolhiveRunnerImage: ghcr.io/stacklok/toolhive/proxyrunner:v0.19.0 | ||
|
|
||
| # -- Image to use for Virtual MCP Server (vMCP) deployments | ||
| vmcpImage: ghcr.io/stacklok/toolhive/vmcp:v0.18.0 | ||
| vmcpImage: ghcr.io/stacklok/toolhive/vmcp:v0.19.0 |
There was a problem hiding this comment.
🔴 The file deploy/charts/operator/values-openshift.yaml was not updated by this release PR and still contains hardcoded image tags pinned at v0.15.0 (operator, proxyrunner, and vmcp). Users deploying on OpenShift following the documented workflow with --values values-openshift.yaml will have these stale tags override the v0.19.0 defaults from values.yaml, causing them to run images that are 4 minor versions behind. Two fixes are needed: (1) update values-openshift.yaml image tags to v0.19.0 in this PR, and (2) add values-openshift.yaml to the version_files list in .github/workflows/create-release-pr.yml so it is automatically updated in future releases.
Extended reasoning...
Bug: values-openshift.yaml image tags stuck at v0.15.0
What the bug is and how it manifests
The file deploy/charts/operator/values-openshift.yaml was introduced in PR #4713 (approximately 4 days before this release) and contains hardcoded image tags for three images: operator, proxyrunner, and vmcp. These tags are pinned at v0.15.0 and were not updated in this release PR. Meanwhile, deploy/charts/operator/values.yaml (the file that was updated) now correctly specifies v0.19.0 for all three images.
The specific code path that triggers it
The README.md for the operator chart explicitly documents using --values values-openshift.yaml when deploying on OpenShift:
helm upgrade -i toolhive-operator oci://ghcr.io/stacklok/toolhive/toolhive-operator -n toolhive-system --create-namespace --values values-openshift.yaml
When Helm merges values, values passed via --values override the chart's defaults. So the three image fields in values-openshift.yaml (operator.image, operator.toolhiveRunnerImage, operator.vmcpImage) will override the correctly updated values.yaml defaults, resulting in v0.15.0 images being deployed.
Why existing code doesn't prevent it
The release automation workflow .github/workflows/create-release-pr.yml only lists deploy/charts/operator/values.yaml in its version_files update targets. The values-openshift.yaml file was added to the repo after the workflow was last updated, so it was never included. This PR does not manually update values-openshift.yaml either, meaning the file is silently left behind at the old version.
Impact
Any OpenShift user who follows the documented installation instructions will deploy v0.15.0 images instead of v0.19.0, skipping 4 minor releases worth of changes. The operator, runner, and vMCP components will all be at the wrong version. This is a silent regression — the helm upgrade command will succeed without error but run stale images.
Step-by-step proof
- User runs the documented command:
helm upgrade -i toolhive-operator oci://... --values values-openshift.yaml - Helm loads chart defaults from
values.yaml:operator.image: ghcr.io/stacklok/toolhive/operator:v0.19.0 - Helm merges
values-openshift.yamlon top, which contains:operator.image: ghcr.io/stacklok/toolhive/operator:v0.15.0 - The merged value is
v0.15.0— the override wins. - Kubernetes pulls and runs
operator:v0.15.0,proxyrunner:v0.15.0, andvmcp:v0.15.0instead ofv0.19.0.
How to fix
- In this PR: update the three image tags in
deploy/charts/operator/values-openshift.yamlfromv0.15.0tov0.19.0. - For future releases: add
deploy/charts/operator/values-openshift.yamlto theversion_fileslist in.github/workflows/create-release-pr.ymlalongside the existingvalues.yamlentries (lines 88, 91, 94).
Release v0.19.0
Version Bump
minor release
Files Updated
VERSIONdeploy/charts/operator-crds/Chart.yaml(path:version)deploy/charts/operator-crds/Chart.yaml(path:appVersion)deploy/charts/operator/Chart.yaml(path:version)deploy/charts/operator/Chart.yaml(path:appVersion)deploy/charts/operator/values.yaml(path:operator.image)deploy/charts/operator/values.yaml(path:operator.toolhiveRunnerImage)deploy/charts/operator/values.yaml(path:operator.vmcpImage)Next Steps
Checklist