Skip to main content

version-update

Release workflow: refresh stable related images and generate a selected v1 classic or v2 agentic OLM bundle. Equivalent to /update-bundle release <v1|v2> <X.Y.Z>.

Source facts

Repository
openshift/lightspeed-operator
Last source activity
September 23, 2026 at 17:02
Detected SKILL.md language
English
Stars
17
Forks
59

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
version-update
description
Release workflow: refresh stable related images and generate a selected v1 classic or v2 agentic OLM bundle. Equivalent to /update-bundle release <v1|v2> <X.Y.Z>.
disable-model-invocation
true
# Version Update (Release) Invoke with: ```text /version-update <v1|v2> <X.Y.Z> /update-bundle release <v1|v2> <X.Y.Z> ``` Examples: ```text /version-update v1 1.2.1 /version-update v2 2.0.0 ``` Not for PR/CI — use `/update-bundle dev`. ## Variant contract | Variant | Release version | Bundle content | OCP compatibility | |---|---|---|---| | `v1` | `1.x.y` | Classic OLS only | `v4.16-v4.22` | | `v2` | `2.x.y` | Classic OLS plus agentic components | `>=v5.0` | Do not mix a selector and major version. The generator rejects invalid pairs: ```text v1 + 2.x.y → invalid v2 + 1.x.y → invalid ``` ## Bundle sources and generated output The variant CSV templates are the authoritative bundle inputs: ```text config/manifests/bases/lightspeed-operator-v1.clusterserviceversion.yaml config/manifests/bases/lightspeed-operator-v2.clusterserviceversion.yaml ``` `hack/update_bundle.sh` selects the requested template and generates: ```text bundle/manifests/lightspeed-operator.clusterserviceversion.yaml bundle/metadata/annotations.yaml bundle.Dockerfile ``` Do not edit those generated files as the source of a release version. The operator-sdk generation step writes the selected `BUNDLE_TAG` into the output CSV. `hack/bundle.Dockerfile` is the Dockerfile template copied to `bundle.Dockerfile` during generation. Update the template only when the released bundle image labels must change. ## Step 1: Refresh `related_images.json` from stable images Prerequisite: `oras` and `jq`. Do not rely on `oc`. ```bash ./hack/related_images_from_quay.sh -r stable -o related_images.json ``` Use `-r preview` for tech-preview paths. The tool resolves each Konflux-managed entry and replaces its `konflux_prefix` with its `stable_prefix`; entries with no Konflux prefix are unchanged. Keep the `bundles` selectors intact: ```text shared entries → ["v1", "v2"] agentic-only entries → ["v2"] no bundles field → selected for both variants ``` Optional: use `hack/snapshot_to_image_list.sh` only to discover new Konflux revisions when `oc` is available, then rerun the stable refresh above. If CRDs or RBAC changed since the last release, generate them before the bundle: ```bash make manifests ``` For v2, first synchronize the pinned agentic contract when that target is available: ```bash make sync-agentic-crds ``` ## Step 2: Generate the selected bundle Use the normal Make target. It supplies the required `related_images.json` input and passes the selector to `hack/update_bundle.sh`. ```bash # Classic OCP 4.x release make bundle BUNDLE_VARIANT=v1 BUNDLE_TAG=1.2.1 # Agentic OCP 5.0+ release make bundle BUNDLE_VARIANT=v2 BUNDLE_TAG=2.0.0 ``` Direct script use requires the selector and image list explicitly: ```bash ./hack/update_bundle.sh v1 -v 1.2.1 -i related_images.json ./hack/update_bundle.sh v2 -v 2.0.0 -i related_images.json ``` ## Step 3: Validate the generated bundle ```bash operator-sdk bundle validate ./bundle ``` Verify the selected output: ```bash CSV=bundle/manifests/lightspeed-operator.clusterserviceversion.yaml yq '.metadata.name' "$CSV" yq '.metadata.annotations."com.redhat.openshift.versions"' \ bundle/metadata/annotations.yaml yq -r '.spec.relatedImages[].name' "$CSV" | sort ``` Expected results: ```text v1: - CSV version/name is 1.x.y - annotation is v4.16-v4.22 - no lightspeed-agentic-* related images or deployment arguments v2: - CSV version/name is 2.x.y - annotation is >=v5.0 - includes lightspeed-agentic-operator, agentic console, alerts adapter, and sandbox related images ``` The generated CSV must not contain source-only image metadata: ```text bundles revision snapshot_component snapshot_source konflux_prefix stable_prefix operator_arg operator_target ``` ## Step 4: Review and commit ```bash git diff -- related_images.json hack/bundle.Dockerfile bundle/ ``` Confirm: - [ ] Stable image digests are used for Konflux-managed entries. - [ ] `bundles` selectors are present only in `related_images.json`, not in the CSV. - [ ] The generated CSV version has the required major version. - [ ] The generated OCP compatibility annotation matches the selected variant. - [ ] Related images and deployment arguments match the selected variant. - [ ] `operator-sdk bundle validate ./bundle` passes. Commit only when requested: ```bash git add related_images.json hack/bundle.Dockerfile bundle/ git commit -m "OLS-XXXX Release vX.Y.Z" ``` ## Common mistakes - Omitting `v1` or `v2` when calling `hack/update_bundle.sh`. - Using a 1.x version with `v2`, or a 2.x version with `v1`. - Editing the generated CSV instead of regenerating it with `BUNDLE_TAG`. - Removing image `bundles` selectors during a stable-image refresh. - Publishing a v1 bundle with agentic images or arguments. - Publishing a v2 bundle without the synchronized agentic CRD/RBAC contract. - Merging CI/Quay development image references without refreshing stable images. ## Related - `/update-bundle dev` — PR/CI workflow. - `docs/olm-bundle-management.md` — bundle structure and image metadata. - `hack/related_images_from_quay.sh` — stable digest refresh. - `hack/release_tools.md` — bundle release tooling.
View on GitHub