Skip to content

ci: Add bundle-sync verification to operator PR workflow - #6751

Open
ntkathole wants to merge 5 commits into
feast-dev:masterfrom
ntkathole:ci/operator-bundle-verify
Open

ci: Add bundle-sync verification to operator PR workflow#6751
ntkathole wants to merge 5 commits into
feast-dev:masterfrom
ntkathole:ci/operator-bundle-verify

Conversation

@ntkathole

@ntkathole ntkathole commented Aug 18, 2026

Copy link
Copy Markdown
Member

Summary

  • Added bundle verification steps that regenerate the bundle via make bundle and fail the check if the committed CSV diverges from what controller-gen + operator-sdk produce.

This adds a gate so future RBAC or kustomize changes that are not reflected in the CSV will be caught at PR time.

@ntkathole
ntkathole force-pushed the ci/operator-bundle-verify branch 3 times, most recently from 8ead3ee to 60b156e Compare August 18, 2026 10:26
@codecov-commenter

codecov-commenter commented Aug 18, 2026

Copy link
Copy Markdown

⚠️ Please install the 'codecov app svg image' to ensure uploads and comments are reliably processed by Codecov.

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 46.96%. Comparing base (6a4690a) to head (cb42ed8).
❗ Your organization needs to install the Codecov GitHub app to enable full functionality.

Additional details and impacted files

Impacted file tree graph

@@           Coverage Diff           @@
##           master    #6751   +/-   ##
=======================================
  Coverage   46.96%   46.96%           
=======================================
  Files         418      418           
  Lines       51675    51675           
  Branches     7485     7485           
=======================================
  Hits        24268    24268           
  Misses      25673    25673           
  Partials     1734     1734           
Flag Coverage Δ
go-feature-server 30.58% <ø> (ø)
python-unit 48.26% <ø> (ø)

Continue to review full report in Codecov by Harness.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 6a4690a...cb42ed8. Read the comment docs.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@ntkathole
ntkathole force-pushed the ci/operator-bundle-verify branch from 60b156e to 9b7201d Compare August 18, 2026 10:57
@ntkathole
ntkathole requested a review from a team as a code owner August 18, 2026 11:08
@ntkathole
ntkathole force-pushed the ci/operator-bundle-verify branch from 0946fe1 to 573bd48 Compare August 18, 2026 11:10
Signed-off-by: ntkathole <nikhilkathole2683@gmail.com>
Run `make bundle` to pick up refined clusterrole/clusterrolebinding
RBAC rules and drop stale subjectaccessreviews permission.

Signed-off-by: ntkathole <nikhilkathole2683@gmail.com>
@ntkathole
ntkathole force-pushed the ci/operator-bundle-verify branch from 573bd48 to 8df91f1 Compare August 18, 2026 15:44
ntkathole and others added 2 commits August 18, 2026 21:42
retry.RetryOnConflict only handles Conflict (resource version mismatch).
When concurrent reconcile loops both GET a NotFound resource and race
to Create it, the loser gets AlreadyExists which was not retried.

Switch to retry.OnError with a predicate covering both IsConflict and
IsAlreadyExists so the retry re-GETs the now-existing resource and
proceeds with an update.

Signed-off-by: ntkathole <nikhilkathole2683@gmail.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Run make bundle to pick up the clusterrole get/list RBAC verbs and
updated CRD field descriptions.

Signed-off-by: ntkathole <nikhilkathole2683@gmail.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
@ntkathole ntkathole changed the title ci: Add bundle-sync verification and path filter to operator PR workflow ci: Add bundle-sync verification to operator PR workflow Aug 18, 2026
The controller-runtime cached client can return stale NotFound for
cluster-scoped resources when the informer cache has not yet synced.
This causes CreateOrUpdate to attempt a Create that fails with
AlreadyExists. Retrying does not help because the cache remains
stale during the short retry window.

Treat AlreadyExists and Conflict as non-errors since the resource
exists in the desired state. The next reconcile cycle will update
its contents once the cache has synced. This follows the standard
Kubernetes operator eventual-consistency pattern.

Signed-off-by: ntkathole <nikhilkathole2683@gmail.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants