RavenDB-26535 Kubernetes Operator: Release Process#31
Merged
Conversation
f4a5e57 to
3ed28d0
Compare
c690ad9 to
a166ab8
Compare
Contributor
Author
|
@TheGoldenPlatypus i'd say it's ready to review. Fixed the description by hand, so it's actually useful. Enjoy & ask me anything! :) |
| build-installer: manifests generate kustomize ## Generate a consolidated YAML with CRDs and deployment. | ||
| mkdir -p dist | ||
| cd config/manager && $(KUSTOMIZE) edit set image controller=${IMG} | ||
| @trap 'git checkout -- config/manager/kustomization.yaml 2>/dev/null || true' EXIT; \ |
| @@ -0,0 +1,67 @@ | |||
| # RavenDB Operator — Claude context | |||
Contributor
There was a problem hiding this comment.
love it, I also have mega one locally. might merge both into one in the future
| # Enable per-host containerd registry config via /etc/containerd/certs.d. | ||
| # We populate certs.d/localhost:5000/hosts.toml after cluster startup so pulls of | ||
| # `localhost:5000/...` redirect to http://kind-registry:5000 (the registry container | ||
| # attached to the kind Docker network). Standard kind+local-registry pattern: |
Contributor
There was a problem hiding this comment.
nice - our very own local registery
TheGoldenPlatypus
approved these changes
May 7, 2026
a166ab8 to
138b59a
Compare
138b59a to
fa39647
Compare
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.
This PR brings up the operator's CD. Click Prepare Release in the Actions tab, merge the auto-generated PR, and it ships a multi-arch image, GitHub Release, and OLM bundle. The flow is complex and error-prone (mostly OLM - every new field needs tags), so plenty of room for manual mistakes - that's why I picked to go for a standardized process & CD automation.
How the pipeline fits together
pre-release-reportskillrelease-artifacts-ci.ymlkindcluster the same way OperatorHub would (catalog → Subscription → CSV), waits until the operator pod comes up healthy, and apply-validates the sample CRs. Catches "the bundle is broken" on the PR that breaks it.prepare-release.ymlrelease:auto.release.ymlrelease:autoPRkind, then pushes multi-arch, tagsvX.Y.Z, drafts a Release.How the OLM bundle is built
The bundle is generated from the Go types in
api/v1/. Each field carries+operator-sdk:csv:...annotations; operator-sdk reads those plus the operator-level metadata inconfig/manifests/bases/...csv.yaml(description, icon, keywords, links, maintainers, minKubeVersion) and emits the CSV.make release-bundleruns the full pipeline (operator-sdk generate → relocate into the nested per-version layout → post-process the CSV for OperatorHub conventions).make bundleandmake build-installerclean up after themselves on exit (revert the kustomize image-tag rewrite), so you can run them locally without dirtying your working tree.How we know it works
Three layers of confidence, before anything ships:
release-artifacts-ci.yml): the bundle pipeline runs end-to-end against the real Makefile version, including akind-based OLM install - the same path an OperatorHub user takes.release.yml): a 30-second pre-flight checks DockerHub and GitHub credentials before any expensive build. Akindsmoke installs the releasedinstall.yaml. Push, tag, and Release happen only after smoke passes.make verify-samples): strict-unmarshals every sample CR against the current Go types. Catches stale samples after a CRD field rename. Lives intest/samples/; noenvtestrequired.Fixes to things broken on main
config/samples/kustomization.yamlreferenced a non-existent file (v1 migration leftover).bundle-buildhad a broken docker context.alpha→stable.Releasing in 7 steps
pre-release-reportskill.prepare-releasefrom the Actions tab with the target version.release:autolabel still attached →release.ymlauto-fires (tests, pushes the image, tags, drafts the Release).bundle/ravendb-operator/<version>/→ fork'soperators/ravendb-operator/<version>/. Copybundle/ravendb-operator/ci.yamlif it changed.Good foundation for future releases.