Skip to content

fix(e2e): honor PRODUCT_VERSION in chainsaw values and official image path - #108

Merged
whg517 merged 5 commits into
zncdatadev:mainfrom
whg517:fix/e2e-product-version
Jul 19, 2026
Merged

whg517 merged 5 commits into
zncdatadev:mainfrom
whg517:fix/e2e-product-version

Conversation

@whg517

@whg517 whg517 commented Jul 14, 2026

Copy link
Copy Markdown
Member

Problem

The chainsaw e2e product-version matrix is dead, for three stacked reasons:

  1. CI (test.yml / release.yml) sets a PRODUCT_VERSION env var per matrix leg, but chainsaw only populates $values from --values files and the chainsaw-e2e Makefile target never passed one — so ($values.product_version) always resolved to null.
  2. The e2e CR manifests never referenced ($values.product_version) in spec.image.productVersion to begin with.
  3. Even with a CR carrying 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 DefaultProductVersion regardless of what CI requested.

Fix

  • Add a chainsaw-values Makefile target that generates test/e2e/.values.yaml from $PRODUCT_VERSION (writes product_version: null when unset, preserving the default fallback for local runs), pass --values in chainsaw-e2e, and gitignore the generated file.
  • Parameterize spec.image.productVersion: ($values.product_version) in the e2e CR manifests, with a doris_version binding per chainsaw-test.yaml (same pattern as zookeeper-operator).
  • Make GetImage() resolve apache/doris:<component>-<productVersion> whenever image.custom is unset, honoring pullPolicy/pullSecretName; image.custom still routes through TransformImage. Table tests added in image_helper_test.go.

Verification

  • make lint and make test pass.
  • Verified live in a kind cluster with the operator built from this branch: a CR with productVersion: 2.1.9 produced StatefulSets running apache/doris:{fe,be,broker}-2.1.9, confirming the values → CR → StatefulSet image chain end to end.

🤖 Generated with Claude Code

whg517 and others added 5 commits July 14, 2026 21:43
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>
@whg517
whg517 merged commit 8d95679 into zncdatadev:main Jul 19, 2026
8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant