Skill

learn-release

Install
1
Install the plugin
$
npx claudepluginhub stolostron/submariner-release-management --plugin release-management

Want just this skill?

Add to a custom plugin, then install with one command.

Description

Teach the 20-step Submariner release process including Y-stream setup, build validation, stage/prod releases, and FBC catalog management. Use when user asks about release steps, workflows, Konflux concepts, or "how do we release Submariner?"

Tool Access

This skill is limited to using the following tools:

ReadGrepGlob
Skill Content

Learn Submariner Release Process

Teach users about the Submariner release process. Use $ARGUMENTS to determine what to explain.

$ARGUMENTS


What to Teach

ArgumentContent
(none)Show this menu with examples
overviewThe big picture below
step NExplain one step (1-20, including 3b, 5b, 10b, 13b, 16b, 18b)
allWalk through all steps briefly

The Big Picture

Submariner releases 9 container images through Konflux to Red Hat's registry. The process has 4 phases:

  1. Setup (Y-stream only): Create release branch, configure Konflux pipelines
  2. Build: Fix policy violations, scan for CVEs, cut upstream release, update bundle
  3. Stage: Create release, add notes, publish to stage registry, QE tests
  4. Prod: After QE approval, publish to production registry

Y-stream (0.21→0.22): New minor version. Run all steps starting from Step 1. Z-stream (0.21.1→0.21.2): Patch release. Skip to Step 4 (branch already exists).

Gates: Setup (Y-stream) → Builds + EC → CVE triage → Release notes → Stage: Stage release → FBC update + builds + EC → FBC stage releases → QE approval → Prod: Prod release (same snapshot) → FBC prod releases

Key Concepts

Build:

  • Component: Konflux build unit. Each produces one container image. Submariner has 9 components across 5 repos.
  • Hermetic: Isolated builds with pre-fetched dependencies (Go mods, RPMs). Required by EC for reproducibility.
  • SBOM: Software Bill of Materials. Lists all dependencies. Required by EC for security/compliance.
  • Multi-arch: Builds for x86_64, aarch64, ppc64le, s390x. Requires Customer Portal activation key for RPM access.

Release artifacts:

  • Snapshot: Immutable component references (image SHAs). Event types: push (merge) or pull_request.
  • Bundle: Container with operator metadata (CSV, CRDs). References 7 component images via relatedImages.
  • FBC: File-Based Catalog. Operator index for OLM. See FBC section below.

FBC (File-Based Catalog):

  • Purpose: Makes Submariner installable via OLM. Publishes to Red Hat's operator index (appears in OperatorHub).
  • Template: catalog-template.yaml is source of truth. make build-catalogs generates 6 catalog-4-XX/ directories.
  • Bundles: Version entries (e.g., submariner.v0.22.0) containing bundle image SHA and relatedImages (7 components).
  • Channels: Update paths (e.g., stable-0.22). Users subscribe to a channel and get upgrades within it.
  • Version pruning: drop-versions.json maps OCP versions to minimum Submariner versions (e.g., OCP 4.20 drops anything before 0.20).
  • Image lifecycle: Bundles use temporary quay.io URLs (~90 day TTL). Step 20 updates to registry.redhat.io.

Konflux resources (K8s CRDs):

  • Application: Groups components. submariner-0-X has 9 components; 6 submariner-fbc-4-XX apps each have 1 catalog.
  • Snapshot: Immutable component references (image SHAs). Created after builds complete. Query with oc get snapshots.
  • ReleasePlan: Links application to RPA. Lives in tenant namespace (submariner-tenant). Referenced by Release CRs.
  • RPA: ReleasePlanAdmission. Defines release pipeline, EC policy, registry config. Lives in managed namespace (rhtap-releng-tenant).
  • Release CR: Triggers publishing. References snapshot + releasePlan. Contains releaseNotes for advisories.
  • EC Policy: Enterprise Contract policy. Checks labels, hermetic builds, CVEs, signatures, provenance. Violations block releases.
  • activation-key Secret: Enables RPM prefetch in hermetic builds. Contains Customer Portal org ID and activation key.

Reference:

  • Stage vs Prod: Stage publishes to registry.stage.redhat.io; prod to registry.redhat.io.
  • Version formats: 0.21 (branch), 0-21 (Konflux names), v0.21.2 (Dockerfile labels), 0.21.2 (commits/PRs).
  • ACM mapping: Submariner 0.X → ACM 2.(X-7). Example: 0.21 → 2.14, 0.22 → 2.15.
  • Advisory types: RHSA (security/CVEs), RHBA (bug fixes), RHEA (enhancements). Type determines release notes format.

Steps

StepWhat happensY/Z
1Create release-0.Y branches across all upstream reposY
2Add Konflux components, ReleasePlans, and RPAs in konflux-release-dataY
3Customize bot-generated Tekton configs, set version labelsY
3bUpdate bundle SHAs from component builds, set up bundle pipelineY
4Fix Enterprise Contract violations in component and FBC reposY/Z
5Scan and fix CVEs: iterative fix→rebuild→rescan across components and librariesY/Z
5bBump Dockerfile version labels for the new patch versionZ
6Create git tags and publish images to quay.io/submarinerY/Z
7Update bundle CSV with final component SHAs from snapshotY/Z
8Create stage Release CR YAML (no notes yet)Y/Z
9Query Jira for CVEs (automatic) and issues (user selects), build releaseNotesY/Z
10Apply stage release to cluster via make applyY/Z
10bCheck Released=True, debug failures, retry if infra issueY/Z
11Update FBC catalogs with bundle SHA from stage registryY/Z
12Create 6 FBC stage release YAMLs (one per OCP 4.16-4.21)Y/Z
13Apply all 6 FBC stage releases to clusterY/Z
13bVerify all 6 FBC pipelines succeededY/Z
14Create Jira ticket with stage catalog URLs for QEY/Z
15Copy stage YAML to prod, change releasePlan to prodY/Z
16Apply prod release to clusterY/Z
16bVerify prod pipeline succeededY/Z
17Copy 6 FBC stage YAMLs to prod, change releasePlansY/Z
18Apply all 6 FBC prod releases to clusterY/Z
18bVerify all 6 FBC prod pipelines succeededY/Z
19Share prod index URLs with QE - release completeY/Z
20Update FBC templates to use registry.redhat.io URLsY/Z

Step Details

StepDetails
1Use releases repo tooling to create release-0.Y branches across 9 upstream repos.
2Add overlays (app, 9 components, ReleasePlans) and RPAs in konflux-release-data. ArgoCD syncs; triggers bot PRs.
3Customize Tekton configs: hermetic builds (Go mods, RPM lockfiles), multi-arch, SBOM. Version labels. 8 components, 5 repos.
3bTwo parts: (1) update bundle CSV with component SHAs from snapshot, (2) set up bundle Tekton pipeline. Components must build first.
4Enterprise Contract validates Red Hat release policies. Fix violations in component repos (9 images) and FBC repo (6 catalogs).
5Grype scans Go (7 repos), clair scans images. Fix→rebuild→rescan loop. Go stdlib CVEs fixed in Shipyard (base image for others).
5bBump version labels in 9 Dockerfiles across 5 repos. Bundle has 3 labels (csv-version, release, version). Rebuild triggers.
6Run releases repo tooling to create git tags and publish images to quay.io/submariner. Official upstream release.
7Update bundle CSV relatedImages with SHAs from latest passing Konflux snapshot. Must use registry.redhat.io URLs for EC.
8Create Release CR YAML: copy previous, update name/snapshot. Save to releases/0.X/stage/. Don't add notes yet.
9Query Jira: CVEs automatic, user selects other issues. RHSA/RHBA/RHEA based on content. Exclude submariner-addon.
10Run make apply to create Release CR on cluster. Pipeline publishes 9 images to registry.stage.redhat.io.
10bCheck Released condition. If failed: check ManagedPipelineProcessed, get log URL, determine retry vs fix. Increment suffix.
11Update FBC catalogs in submariner-operator-fbc repo with bundle SHA from stage registry. Wait ~15-30 min for rebuilds.
12Find passing FBC snapshots (push events only). Verify bundle SHA matches across all 6 catalogs. Create 6 Release YAMLs.
13Apply 6 FBC releases with make apply. Each publishes catalog to stage index for its OCP version.
13bCheck all 6 Released conditions. Same debug process as 10b. All must succeed before QE handoff.
14Extract catalog URLs from snapshots. Create Jira ticket for QE with 6 URLs. Wait for QE approval before prod.
15Copy stage YAML to prod directory. Change name (stage→prod) and releasePlan (stage-0-X→prod-0-X). Same snapshot/notes.
16Apply prod release. Pipeline publishes to registry.redhat.io (production). Same 9 images as stage.
16bVerify prod pipeline succeeded. Same debug process as 10b.
17Copy 6 FBC stage YAMLs to prod directories. Change names and releasePlans. Same snapshots - catalog URLs work for both.
18Apply 6 FBC prod releases. Publishes catalogs to production indices (registry.redhat.io/redhat/redhat-operator-index).
18bVerify all 6 succeeded. Release is now live in production OperatorHub.
19Extract index URLs from release status. Notify QE. Submariner 0.X.Y production release complete.
20Optional cleanup: update FBC templates to use registry.redhat.io URLs. Prevents breakage when quay.io images expire.

Repos

Each step's workflow is in .agents/workflows/<step-name>.md. When it says "follow docs in X repo", read that repo's workflow docs.

Note: Branch in parentheses (devel for submariner-io repos, main for others).

RepoLocalDocsPurpose
This repo~/konflux/submariner-release-management.agents/workflows/ (main)Release orchestration
submariner-io/releases~/go/src/submariner-io/releasesREADME.md (devel)Branch creation, tags
submariner-io/submariner-operator~/go/src/submariner-io/submariner-operator.agents/workflows/ (devel)Operator + bundle
submariner-io/submariner~/go/src/submariner-io/submariner.agents/workflows/ (devel)Gateway, globalnet, route-agent
submariner-io/lighthouse~/go/src/submariner-io/lighthouse.agents/workflows/ (devel)Agent, coredns
submariner-io/shipyard~/go/src/submariner-io/shipyard.agents/workflows/ (devel)Nettest
submariner-io/subctl~/go/src/submariner-io/subctl.agents/workflows/ (devel)Subctl CLI
stolostron/submariner-operator-fbc~/konflux/submariner-operator-fbc.agents/workflows/ (main)FBC catalogs (6 OCP)
konflux-release-data (GitLab)~/konflux/konflux-release-datatenants-config/.../CLAUDE.md (main)Konflux tenant config
konflux-ci/docs~/konflux/konflux-ci/docsmodules/ (main)Konflux platform docs
rhtap-ec-policy~/konflux/konflux-ci/rhtap-ec-policydata/ (main)EC policy definitions
users-docs (GitLab)~/konflux/users-docsdocs/modules/ (main)Konflux user guides
Stats
Stars0
Forks2
Last CommitFeb 24, 2026
Actions

Similar Skills