Repository navigation
fix(e2e): honor PRODUCT_VERSION in chainsaw values and official image path - #108
Merged
Merged
Conversation
CI sets PRODUCT_VERSION per matrix leg, but chainsaw only resolves ($values.*) bindings from files passed via --values, so ($values.product_version) was always null and every matrix leg silently tested the operator's default product version. Generate test/e2e/.values.yaml from PRODUCT_VERSION before running chainsaw and pass it via --values. When PRODUCT_VERSION is unset the file contains null, which preserves the previous fallback to the operator default. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The CI matrix wires PRODUCT_VERSION into test/e2e/.values.yaml, but the DorisCluster manifests omitted spec.image entirely, so every matrix leg deployed the operator default (2.1.8) regardless of the leg's version. Set image.productVersion: ($values.product_version) in all e2e DorisCluster manifests and declare the doris_version binding in each chainsaw-test.yaml, following the zookeeper-operator pattern. When product_version is null (PRODUCT_VERSION unset) the field stays unset and the operator default still applies. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
GetImage routed any non-nil spec.image through TransformImage to the unified quay.io/zncdatadev/doris image, which is not published yet, so setting only image.productVersion in a CR produced an unpullable image. This blocked the e2e manifests from parameterizing the product version via chainsaw values. Until the unified image is production-ready, resolve to the official apache/doris per-component images whenever image.custom is unset, honoring productVersion, pullPolicy, and pullSecretName from the spec. A custom image still delegates to TransformImage. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
The chainsaw e2e product-version matrix is dead, for three stacked reasons:
test.yml/release.yml) sets aPRODUCT_VERSIONenv var per matrix leg, but chainsaw only populates$valuesfrom--valuesfiles and thechainsaw-e2eMakefile target never passed one — so($values.product_version)always resolved tonull.($values.product_version)inspec.image.productVersionto begin with.productVersion,GetImage()(internal/controller/common/image_helper.go) ignored it on the official-image path, so the field was silently dropped.Net effect: every matrix leg tested the operator's
DefaultProductVersionregardless of what CI requested.Fix
chainsaw-valuesMakefile target that generatestest/e2e/.values.yamlfrom$PRODUCT_VERSION(writesproduct_version: nullwhen unset, preserving the default fallback for local runs), pass--valuesinchainsaw-e2e, and gitignore the generated file.spec.image.productVersion: ($values.product_version)in the e2e CR manifests, with adoris_versionbinding per chainsaw-test.yaml (same pattern as zookeeper-operator).GetImage()resolveapache/doris:<component>-<productVersion>wheneverimage.customis unset, honoringpullPolicy/pullSecretName;image.customstill routes throughTransformImage. Table tests added inimage_helper_test.go.Verification
make lintandmake testpass.productVersion: 2.1.9produced StatefulSets runningapache/doris:{fe,be,broker}-2.1.9, confirming the values → CR → StatefulSet image chain end to end.🤖 Generated with Claude Code