Skip to content

chore: update new-release skill with bug fixes and docs#2325

Merged
openshift-merge-bot[bot] merged 8 commits into
stolostron:mainfrom
yanmxa:chore/update-new-release-skill
Mar 23, 2026
Merged

chore: update new-release skill with bug fixes and docs#2325
openshift-merge-bot[bot] merged 8 commits into
stolostron:mainfrom
yanmxa:chore/update-new-release-skill

Conversation

@yanmxa
Copy link
Copy Markdown
Contributor

@yanmxa yanmxa commented Mar 12, 2026

Jira: ACM-30824

Summary

Bug fixes and documentation improvements for the new-release skill used to automate Global Hub release workflows.

Changes

Bug Fixes

02-openshift-release.sh - Replace mastermain

  • Fixes script 02 failing with fatal: couldn't find remote ref master

05-grafana.sh - Fix PREV_TAG detection logic

  • Replace remote branch detection with direct version formula: PREV_GH_MINOR = GH_MINOR - 1
  • Fix fi placement bug causing readonly constants to be unset on macOS
  • Fixes ⚠️ No previous grafana tag found, skipping pipeline update

06-postgres-exporter.sh - Fix PREV_TAG detection logic

  • Replace remote branch detection with direct version formula
  • Fixes ⚠️ No previous postgres tag found, skipping pipeline update

03-bundle.sh - Fix bundle source detection

  • Detect open MGH release PR by title (RELEASE_BRANCH in:title) instead of hardcoded empty value
  • Copies bundle content from the correct PR branch (e.g. release-2.17-tekton-configs) rather than always falling back to upstream/main
  • Remove cleanup PR step (GitHub Actions removal from old release branch)

04-catalog.sh - Remove cleanup PR step

  • Remove cleanup PR step (GitHub Actions removal from old release branch)

Documentation (SKILL.md)

  • Add expected PRs and verification details per repository (total: 8 PRs)
  • Fix OCP version examples: 4.17-4.214.18-4.22
  • Fix script path: cut-release/scripts/new-release/scripts/
  • Unify all version examples to release-2.17 / v1.8.0 / globalhub-1-8
  • Remove unnecessary sync PR to current release branch (auto-synced by GitHub)

PRs created for release-2.17 (tested with this skill)

Repo PR Target Content
multicluster-global-hub #2320 main Add release-2.17 tekton pipelines and update configurations
multicluster-global-hub #2321 release-2.16 Fix globalhub-1-7 tekton pipelines target_branch to release-2.16
openshift/release #76126 main CI config for release-2.17
operator-bundle #733 release-1.8 Update release-1.8 bundle configuration
operator-catalog #339 main Add OCP version directories for release-2.17
operator-catalog #340 release-1.8 Update release-1.8 catalog configuration
glo-grafana #203 release-1.8 Update release-1.8 grafana tekton pipelines
postgres_exporter #149 release-2.17 Update release-2.17 postgres_exporter tekton pipelines

Test plan

  • All 6 repos ran successfully for release-2.17 in UPDATE mode
  • Bundle PR kafka samples #733 verified to contain correct version (1.8.0-dev, skipRange >=1.7.0 <1.8.0)

🤖 Generated with Claude Code

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Mar 12, 2026

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

Documentation and scripts updated for the new-release flow: default branch references standardized to main; cut-release renamed to new-release; Grafana and Postgres scripts now compute previous tags/branches deterministically; bundle and catalog scripts remove the separate cleanup-PR workflow; repository workflow tables and OCP version ranges updated.

Changes

Cohort / File(s) Summary
Documentation
/.claude/skills/new-release/SKILL.md
Reworked per-repository workflow tables and PR/target-branch expectations; replaced cut-release with new-release script paths; added note that new Tekton files on main auto-sync to current release; updated OCP version support from 4.17–4.21 to 4.18–4.22; adjusted total PR/output summaries.
Default branch rename
/.claude/skills/new-release/scripts/02-openshift-release.sh
Replaced mastermain across clone/fetch/checkout/branch operations, PR base refs, and user-facing messaging.
Grafana tag/branch derivation
/.claude/skills/new-release/scripts/05-grafana.sh
Removed complex branch-discovery; added GH_MINOR → PREV_GH_MINOR → PREV_GRAFANA_TAG and BASE_BRANCH derivation, introduced state flags, simplified branch-existence checks and PR/push flow; logging updated.
Postgres exporter tag/branch derivation
/.claude/skills/new-release/scripts/06-postgres-exporter.sh
Replaced remote-branch scanning with deterministic computation: derive PREV_POSTGRES_TAG from GH_VERSION_SHORT and compute BASE_BRANCH from RELEASE_BRANCH (prev minor); simplified base/tag resolution and initial logic.
Bundle cleanup removal
/.claude/skills/new-release/scripts/03-bundle.sh
Removed entire Step 8 cleanup-PR workflow and all related variables/logic/messaging; simplified source-bundle selection and final summary to omit cleanup PRs.
Catalog cleanup removal
/.claude/skills/new-release/scripts/04-catalog.sh
Removed entire cleanup PR workflow and CLEANUP_PR_* state; broadened accepted PR status set in final success logic and adjusted summaries to omit cleanup outputs.

Sequence Diagram(s)

sequenceDiagram
  participant Script as Release Script
  participant Origin as origin/main
  participant Fork as fork/repo
  participant GitHub as GitHub (gh)
  Note over Script,Origin: Publish flow — detect, commit, and create PR (if changes)
  Script->>Origin: fetch origin/main & checkout
  Script->>Script: compute tags/branches (Grafana/Postgres) and apply updates
  alt target branch exists on origin
    Script->>Origin: use existing branch as base
  else need to create from base
    Script->>Origin: derive BASE_BRANCH and create branch locally
  end
  alt substantive changes exist
    Script->>Fork: ensure fork exists (create if needed)
    Script->>Fork: create branch, commit changes
    Script->>Fork: push branch to fork
    Script->>GitHub: create PR from fork/branch -> origin/main
    GitHub-->>Script: return PR URL/status
  else no changes needed
    Script->>Origin: reset to origin/main (no PR)
  end
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

Poem

🐇 I nibbled through docs and nudged each name,
I counted minors, hopped the tag to main,
I pruned the cleanup path and kept the core in sight,
Committed, pushed, then opened one neat PR tonight,
A rabbit’s wink — the release feels light.

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately summarizes the main changes: bug fixes for scripts and documentation updates for the new-release skill.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Description check ✅ Passed The pull request description follows the template with all required sections complete: Summary, Related issue (Jira ticket), detailed Changes breakdown, comprehensive test plan with evidence, and a verification table showing actual PRs created.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
📝 Coding Plan
  • Generate coding plan for human review comments

Comment @coderabbitai help to get the list of available commands and usage tips.

Tip

You can disable poems in the walkthrough.

Disable the reviews.poem setting to disable the poems in the walkthrough.

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 5

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
.claude/skills/new-release/SKILL.md (1)

208-219: ⚠️ Potential issue | 🟠 Major

This script layout block is still documenting the old skill path and outdated outputs.

It still points to .claude/skills/cut-release/, says 04-catalog.sh creates 2 PRs, and describes Scripts 05/06 as “branch only”. The rest of this document now describes .claude/skills/new-release/ and PR-based update flows, so this section will send users to the wrong path and expectations.

Suggested fix
-.claude/skills/cut-release/
+.claude/skills/new-release/
 ├── SKILL.md                          # This file
 ├── README.md                         # User documentation
 └── scripts/
     ├── cut-release.sh                # Main orchestration script
-    ├── 01-multicluster-global-hub.sh # Main repo (creates version bump PR)
+    ├── 01-multicluster-global-hub.sh # Main repo (creates 3 PRs)
     ├── 02-openshift-release.sh       # CI config (creates PR)
-    ├── 03-bundle.sh                  # Bundle (creates PR)
-    ├── 04-catalog.sh                 # Catalog (creates 2 PRs)
-    ├── 05-grafana.sh                 # Grafana (branch only)
-    └── 06-postgres-exporter.sh       # Postgres exporter (branch only)
+    ├── 03-bundle.sh                  # Bundle (creates 2 PRs)
+    ├── 04-catalog.sh                 # Catalog (creates 3 PRs)
+    ├── 05-grafana.sh                 # Grafana (creates 1 PR in update mode)
+    └── 06-postgres-exporter.sh       # Postgres exporter (creates 1 PR in update mode)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.claude/skills/new-release/SKILL.md around lines 208 - 219, Update the
script layout block in SKILL.md to reflect the new skill path and PR-based
outputs: change the top-level path from `.claude/skills/cut-release/` to
`.claude/skills/new-release/`, ensure each script entry (e.g.,
`01-multicluster-global-hub.sh`, `02-openshift-release.sh`, `03-bundle.sh`,
`04-catalog.sh`, `05-grafana.sh`, `06-postgres-exporter.sh`) lists the current
behavior (how many PRs each actually creates) and remove the outdated “branch
only” note for scripts now using PR flows; make the text consistent with the
rest of the document describing PR-based update flows.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In @.claude/skills/new-release/scripts/02-openshift-release.sh:
- Around line 68-71: Replace the loose checkout-and-pull sequence (the commands
around "git fetch upstream main", "git checkout main", and "git pull upstream
main") with an explicit reset: after fetching upstream/main, run a forced branch
reset using "git checkout -B main upstream/main" (remove the "|| true" fallbacks
and the separate "git pull" since checkout -B resets the local main to
upstream/main), ensuring any errors are surfaced rather than masked.

In @.claude/skills/new-release/scripts/05-grafana.sh:
- Around line 99-105: Document or derive GH_VERSION_SHORT: update the
environment validation to include GH_VERSION_SHORT as a required variable or
derive it from GH_VERSION when missing; specifically, in this script ensure
GH_VERSION_SHORT is set before using GH_MINOR by checking for GH_VERSION_SHORT
and if empty compute it from GH_VERSION (e.g., strip patch: set
GH_VERSION_SHORT="${GH_VERSION%%.*}.${GH_VERSION#*.}" or equivalent) so that the
subsequent GH_MINOR, PREV_GH_MINOR, PREV_GRAFANA_TAG and BASE_BRANCH
calculations always have a valid value.

In @.claude/skills/new-release/scripts/06-postgres-exporter.sh:
- Around line 99-108: The script fails under set -u if GH_VERSION_SHORT is not
exported because only GH_VERSION is validated; update the calculation block to
derive GH_VERSION_SHORT from GH_VERSION before it is referenced: ensure
GH_VERSION_SHORT is assigned by extracting the short form from GH_VERSION (e.g.,
strip any patch component) so PREV_GH_MINOR and PREV_POSTGRES_TAG can use it
safely; place this derivation prior to using GH_VERSION_SHORT in the
PREV_GH_MINOR/PREV_POSTGRES_TAG logic and keep the existing validation of
GH_VERSION intact.

In @.claude/skills/new-release/SKILL.md:
- Around line 82-86: The PR table in SKILL.md is inconsistent about whether
globalhub-1-7 files are removed from main: update the text so the behavior is
consistent with the workflow described elsewhere by either (A) stating that PR
to main replaces/removes globalhub-1-7 with new globalhub-1-8 files, or (B)
stating that main keeps globalhub-1-7 and new globalhub-1-8 files are copied
from them; pick the correct behavior and make Lines 75-78 and the PR table rows
referencing "PR to main", "globalhub-1-7", ".tekton", "globalhub-1-8", and the
verification steps all reflect that single choice (e.g., change the PR table row
or the earlier paragraph so verification guidance about checking
`.tekton/*pull-request.yaml` and `target_branch` matches the actual workflow).
- Around line 103-105: The verification row in SKILL.md incorrectly expects a
`release-218` image prefix; 02-openshift-release.sh derives IMAGE_PREFIX from
ACM_VERSION as `release-217` for release-2.17. Update the table cell that
currently references `release-218` to `release-217` (and any other occurrences
of the `release-218` prefix) so the verification checks match the IMAGE_PREFIX
produced by 02-openshift-release.sh (referencing IMAGE_PREFIX and ACM_VERSION).

---

Outside diff comments:
In @.claude/skills/new-release/SKILL.md:
- Around line 208-219: Update the script layout block in SKILL.md to reflect the
new skill path and PR-based outputs: change the top-level path from
`.claude/skills/cut-release/` to `.claude/skills/new-release/`, ensure each
script entry (e.g., `01-multicluster-global-hub.sh`, `02-openshift-release.sh`,
`03-bundle.sh`, `04-catalog.sh`, `05-grafana.sh`, `06-postgres-exporter.sh`)
lists the current behavior (how many PRs each actually creates) and remove the
outdated “branch only” note for scripts now using PR flows; make the text
consistent with the rest of the document describing PR-based update flows.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: e6a0a34e-3a62-4bfb-a192-78d0698039e0

📥 Commits

Reviewing files that changed from the base of the PR and between 5b9edaa and 1c396f7.

📒 Files selected for processing (4)
  • .claude/skills/new-release/SKILL.md
  • .claude/skills/new-release/scripts/02-openshift-release.sh
  • .claude/skills/new-release/scripts/05-grafana.sh
  • .claude/skills/new-release/scripts/06-postgres-exporter.sh

Comment thread .claude/skills/new-release/scripts/02-openshift-release.sh
Comment thread .claude/skills/new-release/scripts/05-grafana.sh
Comment thread .claude/skills/new-release/scripts/06-postgres-exporter.sh
Comment thread .claude/skills/new-release/SKILL.md Outdated
Comment thread .claude/skills/new-release/SKILL.md
Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

♻️ Duplicate comments (2)
.claude/skills/new-release/SKILL.md (2)

82-86: ⚠️ Potential issue | 🟡 Minor

Repository 1's PR table still contradicts the workflow above.

Lines 75-76 say the old globalhub-1-7 files remain on main, but Line 84 says the PR to main removes them. Please make the table match the behavior described above, including the verification guidance for the target_branch values.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.claude/skills/new-release/SKILL.md around lines 82 - 86, Update the PR
summary table so its rows consistently reflect the described workflow: ensure
the "PR to main" row states that old globalhub-1-7 files are removed from main
and new globalhub-1-8 files are added, the "PR to prev release" row shows the
pull-request.yaml for globalhub-1-7 has target_branch=release-2.16, and the "PR
to current release" row shows new globalhub-1-8 push.yaml uses
target_branch=release-2.17; also update the Verification column to instruct
checking .tekton/*pull-request.yaml and .tekton/*push.yaml for the correct
target_branch values and the presence/absence of globalhub-1-7 vs globalhub-1-8
files.

103-105: ⚠️ Potential issue | 🟡 Minor

The OpenShift verification prefix is still off by one.

For release-2.17, the verification should expect the release-217 image prefix, not release-218. As written, this tells users a correct PR is wrong.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.claude/skills/new-release/SKILL.md around lines 103 - 105, The verification
text in the table incorrectly expects a `release-218` image prefix for
`release-2.17`; update the verification to expect `release-217` instead. Locate
the table row referencing the file
`ci-operator/config/stolostron/multicluster-global-hub/stolostron-multicluster-global-hub-release-2.17.yaml`
and change the verification clause so it checks the config file exists and
contains `branch: release-2.17`, `name: "2.17"`, and the image prefix
`release-217` (replace `release-218` with `release-217`).
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In @.claude/skills/new-release/SKILL.md:
- Around line 384-400: The examples and narrative mention multiple script
locations; standardize all references to the single canonical entrypoint
.claude/skills/new-release/scripts/cut-release.sh by replacing any occurrences
of cut-release, ./scripts/cut-release.sh, or ./scripts/... with the full path
.claude/skills/new-release/scripts/cut-release.sh (including examples that use
RELEASE_BRANCH and CREATE_BRANCHES variables) so the doc consistently points to
the same script; update any bash blocks, prose, and headings that reference the
old path to the new canonical path.
- Around line 194-204: The summary table "Total Expected Output Summary" and the
Phase 3-6 narrative are inconsistent: reconcile the two by updating either the
table or the narrative so both reflect the same set of PRs and branches (include
the bundle cleanup PR, the operator-catalog branch PR, and the grafana/postgres
PRs). Locate the "Total Expected Output Summary" table and the "Phase 3-6"
narrative (and the repeated text around lines 347-363) and make the counts, repo
names (multicluster-global-hub, openshift/release, operator-bundle,
operator-catalog, glo-grafana, postgres_exporter), branch names, and PR
descriptions match exactly between them; adjust wording to unambiguously state
the same total PR and branch counts and include a short note explaining the
bundle cleanup/catalog branch as separate PRs if needed.

---

Duplicate comments:
In @.claude/skills/new-release/SKILL.md:
- Around line 82-86: Update the PR summary table so its rows consistently
reflect the described workflow: ensure the "PR to main" row states that old
globalhub-1-7 files are removed from main and new globalhub-1-8 files are added,
the "PR to prev release" row shows the pull-request.yaml for globalhub-1-7 has
target_branch=release-2.16, and the "PR to current release" row shows new
globalhub-1-8 push.yaml uses target_branch=release-2.17; also update the
Verification column to instruct checking .tekton/*pull-request.yaml and
.tekton/*push.yaml for the correct target_branch values and the presence/absence
of globalhub-1-7 vs globalhub-1-8 files.
- Around line 103-105: The verification text in the table incorrectly expects a
`release-218` image prefix for `release-2.17`; update the verification to expect
`release-217` instead. Locate the table row referencing the file
`ci-operator/config/stolostron/multicluster-global-hub/stolostron-multicluster-global-hub-release-2.17.yaml`
and change the verification clause so it checks the config file exists and
contains `branch: release-2.17`, `name: "2.17"`, and the image prefix
`release-217` (replace `release-218` with `release-217`).

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: e9491ed6-d7ce-4901-8528-a94314eb0204

📥 Commits

Reviewing files that changed from the base of the PR and between 1c396f7 and eb00266.

📒 Files selected for processing (1)
  • .claude/skills/new-release/SKILL.md

Comment thread .claude/skills/new-release/SKILL.md Outdated
Comment thread .claude/skills/new-release/SKILL.md
Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

♻️ Duplicate comments (4)
.claude/skills/new-release/SKILL.md (4)

101-103: ⚠️ Potential issue | 🟡 Minor

The OpenShift verification example still uses the wrong image prefix.

For release-2.17, this should check for release-217, not release-218. As written, the doc would mark a correct PR as incorrect.

Suggested fix
-| PR to main | `main` | `ci-operator/config/stolostron/multicluster-global-hub/stolostron-multicluster-global-hub-release-2.17.yaml` created; main config updated with new release references | Check config file exists and contains `branch: release-2.17`, `name: "2.17"`, `release-218` prefix |
+| PR to main | `main` | `ci-operator/config/stolostron/multicluster-global-hub/stolostron-multicluster-global-hub-release-2.17.yaml` created; main config updated with new release references | Check config file exists and contains `branch: release-2.17`, `name: "2.17"`, `release-217` prefix |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.claude/skills/new-release/SKILL.md around lines 101 - 103, The verification
example in the table row that asserts the image prefix uses the wrong release
and should expect `release-217` for `release-2.17`; update the verification text
in the table (the cell currently checking for `release-218` prefix) to check for
`release-217` and ensure the other checks still reference `branch: release-2.17`
and `name: "2.17"` so the PR is validated correctly.

345-360: ⚠️ Potential issue | 🟡 Minor

The detailed PR summary no longer matches the phase narrative above.

This table documents bundle/catalog/grafana/postgres branch PRs, but the phase descriptions still say bundle opens a PR to main, catalog creates only 2 PRs, and Grafana/Postgres don't mention PR creation. Please reconcile those sections so the doc presents one consistent workflow.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.claude/skills/new-release/SKILL.md around lines 345 - 360, The PR summary
table and the phase narrative are inconsistent; update the narrative in SKILL.md
to match the table so the workflow is unified: change the phase text that
currently says "bundle opens a PR to `main`" to reflect operator-bundle PRs to
`release-1.8` and `release-1.7` (or note both), expand the catalog phase to
describe the three PRs listed for operator-catalog (`main`, `release-1.8`,
`release-1.7`), and add explicit mentions that glo-grafana and postgres_exporter
create PRs to `release-1.8`/`release-2.17` respectively; ensure the overall
"Pull Requests Expected" count and any conditional creation rules still match
the table.

81-84: ⚠️ Potential issue | 🟡 Minor

Repository 1's PR table still contradicts the workflow text.

Lines 73-74 say the old globalhub-1-7 files remain on main, but Line 83 says the PR to main removes them. Please align the table and verification text with the behavior described above so this section documents one workflow.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.claude/skills/new-release/SKILL.md around lines 81 - 84, The PR table and
verification text in SKILL.md contradict each other about whether old
globalhub-1-7 files remain on main or are removed by the PR to main; pick the
single intended workflow and update the "PR to main" row, the "PR to prev
release" row, and the corresponding verification bullet so they consistently
state whether globalhub-1-7 files are removed from main or retained.
Specifically, reconcile the "PR to main" row (the one mentioning globalhub-1-8
files and removal of globalhub-1-7), the "PR to prev release" row (globalhub-1-7
change), and the verification text that references `.tekton/` and
`target_branch` so all three reflect the same behavior for globalhub-1-7 vs
globalhub-1-8.

381-397: ⚠️ Potential issue | 🟡 Minor

Script path normalization is still incomplete.

These examples now use .claude/skills/new-release/scripts/..., but the execution examples earlier in the file and the standalone example below still use ./scripts/..., and the tree still references .claude/skills/cut-release/. Please standardize the remaining references to the same canonical path.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.claude/skills/new-release/SKILL.md around lines 381 - 397, Standardize the
script path references by replacing the old occurrences of "./scripts/..." and
".claude/skills/cut-release/" with the canonical
".claude/skills/new-release/scripts/..." throughout the file so all examples
(including earlier execution examples, the standalone example, and any tree
references) consistently point to
".claude/skills/new-release/scripts/cut-release.sh"; update the README/example
strings and any listing entries that show the old path to the new canonical
path.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Duplicate comments:
In @.claude/skills/new-release/SKILL.md:
- Around line 101-103: The verification example in the table row that asserts
the image prefix uses the wrong release and should expect `release-217` for
`release-2.17`; update the verification text in the table (the cell currently
checking for `release-218` prefix) to check for `release-217` and ensure the
other checks still reference `branch: release-2.17` and `name: "2.17"` so the PR
is validated correctly.
- Around line 345-360: The PR summary table and the phase narrative are
inconsistent; update the narrative in SKILL.md to match the table so the
workflow is unified: change the phase text that currently says "bundle opens a
PR to `main`" to reflect operator-bundle PRs to `release-1.8` and `release-1.7`
(or note both), expand the catalog phase to describe the three PRs listed for
operator-catalog (`main`, `release-1.8`, `release-1.7`), and add explicit
mentions that glo-grafana and postgres_exporter create PRs to
`release-1.8`/`release-2.17` respectively; ensure the overall "Pull Requests
Expected" count and any conditional creation rules still match the table.
- Around line 81-84: The PR table and verification text in SKILL.md contradict
each other about whether old globalhub-1-7 files remain on main or are removed
by the PR to main; pick the single intended workflow and update the "PR to main"
row, the "PR to prev release" row, and the corresponding verification bullet so
they consistently state whether globalhub-1-7 files are removed from main or
retained. Specifically, reconcile the "PR to main" row (the one mentioning
globalhub-1-8 files and removal of globalhub-1-7), the "PR to prev release" row
(globalhub-1-7 change), and the verification text that references `.tekton/` and
`target_branch` so all three reflect the same behavior for globalhub-1-7 vs
globalhub-1-8.
- Around line 381-397: Standardize the script path references by replacing the
old occurrences of "./scripts/..." and ".claude/skills/cut-release/" with the
canonical ".claude/skills/new-release/scripts/..." throughout the file so all
examples (including earlier execution examples, the standalone example, and any
tree references) consistently point to
".claude/skills/new-release/scripts/cut-release.sh"; update the README/example
strings and any listing entries that show the old path to the new canonical
path.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 99003706-abad-4d03-9d9d-80fcf820458c

📥 Commits

Reviewing files that changed from the base of the PR and between eb00266 and 0188aa1.

📒 Files selected for processing (1)
  • .claude/skills/new-release/SKILL.md

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
.claude/skills/new-release/SKILL.md (1)

206-220: ⚠️ Potential issue | 🟡 Minor

Script organization path is incorrect.

The path shows .claude/skills/cut-release/ but the skill is located at .claude/skills/new-release/ based on the file path and other references in this document.

🔧 Proposed fix
 ## Script Organization
 

-.claude/skills/cut-release/
+.claude/skills/new-release/
├── SKILL.md # This file
├── README.md # User documentation
└── scripts/

</details>

<details>
<summary>🤖 Prompt for AI Agents</summary>

Verify each finding against the current code and only fix it if needed.

In @.claude/skills/new-release/SKILL.md around lines 206 - 220, Update the
incorrect example path in the "## Script Organization" section of SKILL.md:
replace the .claude/skills/cut-release/ top-level directory string with
.claude/skills/new-release/ so the code block and its tree reflect the actual
skill location; update any matching occurrences in that code block (the header
line showing the directory) to ensure consistency with the rest of the document.


</details>

</blockquote></details>

</blockquote></details>
♻️ Duplicate comments (1)
.claude/skills/new-release/SKILL.md (1)

101-104: ⚠️ Potential issue | 🟡 Minor

The OpenShift verification example has incorrect image prefix.

The verification column says release-218 but the script derives IMAGE_PREFIX=release-217 from ACM_VERSION=2.17 (removing the dot). This would cause users to verify against the wrong value.

🔧 Proposed fix
-| PR to main | `main` | `ci-operator/config/stolostron/multicluster-global-hub/stolostron-multicluster-global-hub-release-2.17.yaml` created; main config updated with new release references | Check config file exists and contains `branch: release-2.17`, `name: "2.17"`, `release-218` prefix |
+| PR to main | `main` | `ci-operator/config/stolostron/multicluster-global-hub/stolostron-multicluster-global-hub-release-2.17.yaml` created; main config updated with new release references | Check config file exists and contains `branch: release-2.17`, `name: "2.17"`, `release-217` prefix |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.claude/skills/new-release/SKILL.md around lines 101 - 104, The verification
example in the table is wrong: the code derives IMAGE_PREFIX from ACM_VERSION by
removing the dot (ACM_VERSION=2.17 -> IMAGE_PREFIX=release-217) but the
Verification column expects "release-218"; update the Verification cell to check
for release-217 (or alternatively adjust the derivation logic to match the
documented prefix) so the table matches the derived IMAGE_PREFIX; look for
references to ACM_VERSION, IMAGE_PREFIX and the Verification column string in
the table and make the value consistent.
🧹 Nitpick comments (1)
.claude/skills/new-release/SKILL.md (1)

403-406: Standalone script example uses inconsistent path.

Other examples in this document use the full path .claude/skills/new-release/scripts/... but this example uses ./scripts/04-catalog.sh. For consistency and clarity, consider using the full path.

🔧 Suggested change
 ### Standalone script execution:
 ```bash
-RELEASE_BRANCH="release-2.17" GH_VERSION="v1.8.0" CREATE_BRANCHES=false ./scripts/04-catalog.sh
+RELEASE_BRANCH="release-2.17" GH_VERSION="v1.8.0" CREATE_BRANCHES=false ./.claude/skills/new-release/scripts/04-catalog.sh
</details>

<details>
<summary>🤖 Prompt for AI Agents</summary>

Verify each finding against the current code and only fix it if needed.

In @.claude/skills/new-release/SKILL.md around lines 403 - 406, Update the
standalone script example to use the full path for consistency with other
examples: replace the relative invocation of ./scripts/04-catalog.sh with
./.claude/skills/new-release/scripts/04-catalog.sh in the SKILL.md example so
the RELEASE_BRANCH/GH_VERSION/CREATE_BRANCHES invocation points to the same
.claude/skills/new-release/scripts/04-catalog.sh script referenced elsewhere in
the document.


</details>

</blockquote></details>

</blockquote></details>

<details>
<summary>🤖 Prompt for all review comments with AI agents</summary>

Verify each finding against the current code and only fix it if needed.

Inline comments:
In @.claude/skills/new-release/scripts/03-bundle.sh:

  • Around line 780-782: Update the step numbering in the cleanup PR section so it
    matches the surrounding comment and sequence: change the echo string "📍 Step 8:
    Creating cleanup PR for old release..." (in the block that currently has the
    comment "# Step 9: Create cleanup PR to remove GitHub Actions from old release")
    to "📍 Step 9: Creating cleanup PR for old release..." so the printed step
    number aligns with the comment and prior Step 8 insertion.
  • Around line 667-668: MAIN_PR_CREATED and MAIN_PR_URL are initialized but never
    included in the workflow summary; update the summary-generation logic to emit
    the main-branch PR when MAIN_PR_CREATED is true by adding it to the summary
    block that currently prints cleanup/other PRs (use the existing pattern used for
    CLEANUP_PR_URL/CLEANUP_PR_CREATED to append a "Main branch PR" line and include
    MAIN_PR_URL), and also add the main PR link into the NEXT STEPS section so the
    final instructions reference MAIN_PR_URL alongside the other PR URLs; ensure you
    use the same conditional checks and formatting as the other PR outputs (e.g.,
    the CLEANUP_PR_* handling) to keep the messaging consistent.

Outside diff comments:
In @.claude/skills/new-release/SKILL.md:

  • Around line 206-220: Update the incorrect example path in the "## Script
    Organization" section of SKILL.md: replace the .claude/skills/cut-release/
    top-level directory string with .claude/skills/new-release/ so the code block
    and its tree reflect the actual skill location; update any matching occurrences
    in that code block (the header line showing the directory) to ensure consistency
    with the rest of the document.

Duplicate comments:
In @.claude/skills/new-release/SKILL.md:

  • Around line 101-104: The verification example in the table is wrong: the code
    derives IMAGE_PREFIX from ACM_VERSION by removing the dot (ACM_VERSION=2.17 ->
    IMAGE_PREFIX=release-217) but the Verification column expects "release-218";
    update the Verification cell to check for release-217 (or alternatively adjust
    the derivation logic to match the documented prefix) so the table matches the
    derived IMAGE_PREFIX; look for references to ACM_VERSION, IMAGE_PREFIX and the
    Verification column string in the table and make the value consistent.

Nitpick comments:
In @.claude/skills/new-release/SKILL.md:

  • Around line 403-406: Update the standalone script example to use the full path
    for consistency with other examples: replace the relative invocation of
    ./scripts/04-catalog.sh with ./.claude/skills/new-release/scripts/04-catalog.sh
    in the SKILL.md example so the RELEASE_BRANCH/GH_VERSION/CREATE_BRANCHES
    invocation points to the same .claude/skills/new-release/scripts/04-catalog.sh
    script referenced elsewhere in the document.

</details>

---

<details>
<summary>ℹ️ Review info</summary>

<details>
<summary>⚙️ Run configuration</summary>

**Configuration used**: Organization UI

**Review profile**: CHILL

**Plan**: Pro

**Run ID**: `d149608d-16d2-46a6-9e08-ef12b4554471`

</details>

<details>
<summary>📥 Commits</summary>

Reviewing files that changed from the base of the PR and between 0188aa1103fbaea6b193dc75582a60ac1c516e21 and 245be57e533eb5c849a52eb8b418e4532ceab100.

</details>

<details>
<summary>📒 Files selected for processing (2)</summary>

* `.claude/skills/new-release/SKILL.md`
* `.claude/skills/new-release/scripts/03-bundle.sh`

</details>

</details>

<!-- This is an auto-generated comment by CodeRabbit for review status -->

Comment thread .claude/skills/new-release/scripts/03-bundle.sh Outdated
Comment thread .claude/skills/new-release/scripts/03-bundle.sh Outdated
Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

♻️ Duplicate comments (4)
.claude/skills/new-release/SKILL.md (4)

101-103: ⚠️ Potential issue | 🟡 Minor

The OpenShift verification example still expects the wrong image prefix.

For release-2.17, the generated prefix is release-217, not release-218. As written, this check would reject a correct PR.

📝 Suggested wording
-| PR to main | `main` | `ci-operator/config/stolostron/multicluster-global-hub/stolostron-multicluster-global-hub-release-2.17.yaml` created; main config updated with new release references | Check config file exists and contains `branch: release-2.17`, `name: "2.17"`, `release-218` prefix |
+| PR to main | `main` | `ci-operator/config/stolostron/multicluster-global-hub/stolostron-multicluster-global-hub-release-2.17.yaml` created; main config updated with new release references | Check config file exists and contains `branch: release-2.17`, `name: "2.17"`, `release-217` prefix |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.claude/skills/new-release/SKILL.md around lines 101 - 103, The verification
example mistakenly expects an image prefix of `release-218` for the
`release-2.17` PR; update the verification text so the expected prefix is
`release-217` (i.e., change the `release-218` mention to `release-217`) where
the table lists the checks (`branch: release-2.17`, `name: "2.17"`,
`release-218` prefix) so the check matches the actual generated prefix for
release-2.17.

81-84: ⚠️ Potential issue | 🟡 Minor

Repository 1's PR table still contradicts the workflow above.

Line 83 says the main PR removes the old globalhub-1-7 files, but the behavior bullets just above say those files remain on main. That sends reviewers to check for the opposite outcome.

📝 Suggested wording
-| PR to main | `main` | New `.tekton/globalhub-1-8-*.yaml` files; old globalhub-1-7 files removed; Containerfile version updated; Makefile VERSION/CHANNELS updated | Check `.tekton/` has globalhub-1-8 files with `target_branch=main` (pull-request) and `target_branch=release-2.17` (push) |
+| PR to main | `main` | New `.tekton/globalhub-1-8-*.yaml` files added; existing globalhub-1-7 files retained; Containerfile version updated; Makefile VERSION/CHANNELS updated | Check `.tekton/` has globalhub-1-8 files with `target_branch=main` (pull-request) and `target_branch=release-2.17` (push) |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.claude/skills/new-release/SKILL.md around lines 81 - 84, The PR table row
that currently states "old globalhub-1-7 files removed" conflicts with the
behavior bullets above that say the 1-7 files remain on main; update the text so
both places match: either change the table's "Content" cell in the "PR to main"
row to say the old globalhub-1-7 files remain on main (e.g., "old globalhub-1-7
files retained on main; new .tekton/globalhub-1-8-*.yaml added") or alter the
bullets above to indicate the 1-7 files are removed—make the wording consistent
between the "PR to main" table row and the surrounding behavior bullets in
SKILL.md.

375-391: ⚠️ Potential issue | 🟡 Minor

The doc still mixes the old and new script entrypoints.

These examples use .claude/skills/new-release/..., but earlier sections in the same file still reference .claude/skills/cut-release/ and ./scripts/.... Readers still see two different locations for the same workflow.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.claude/skills/new-release/SKILL.md around lines 375 - 391, The doc mixes
two script entrypoints; standardize all references to a single canonical path to
avoid confusion. Pick the new location `.claude/skills/new-release/` (or if
preferred the original `./scripts/` style) and update every occurrence of
`.claude/skills/cut-release/`, `./scripts/...`, and any other variants to that
chosen path (search for `cut-release.sh`, `new-release`, and `cut-release`
tokens in SKILL.md) so all examples and earlier sections reference the same
script entrypoint consistently.

341-354: ⚠️ Potential issue | 🟡 Minor

The total-output table still conflicts with the workflow summary above.

These rows describe the new 8-PR flow, but the Phase 3-6 narrative above still says bundle creates a PR to main, catalog creates an old-branch cleanup PR, and Grafana/Postgres only create branches. The doc still presents two different workflows.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.claude/skills/new-release/SKILL.md around lines 341 - 354, The Phase 3–6
narrative conflicts with the "Pull Requests Expected" table: update the
narrative to match the 8-PR flow shown in the table (repos and target branches
such as multicluster-global-hub → main & release-2.16, openshift/release → main,
operator-bundle → release-1.8, operator-catalog → main & release-1.8,
glo-grafana → release-1.8, postgres_exporter → release-2.17) and remove the
outdated lines that say bundle creates a PR to main or that Grafana/Postgres
only create branches; ensure Phase numbering and descriptions explicitly mention
the two PRs where applicable (operator-bundle and operator-catalog separate
targets) so the narrative and table are consistent.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In @.claude/skills/new-release/scripts/04-catalog.sh:
- Line 954: The success condition in the if that checks CATALOG_PR_STATUS and
MAIN_PR_STATUS is too narrow and treats healthy outcomes like "none", "exists",
or "pushed" as failures; update the conditional that currently compares
CATALOG_PR_STATUS and MAIN_PR_STATUS against PR_STATUS_PUSHED/CREATED/UPDATED to
also accept PR_STATUS_NONE, PR_STATUS_EXISTS and (for MAIN_PR_STATUS)
PR_STATUS_PUSHED so those cases are treated as success — adjust the if guarding
the completion branch that references CATALOG_PR_STATUS and MAIN_PR_STATUS to
include || "$CATALOG_PR_STATUS" = "$PR_STATUS_NONE" || "$CATALOG_PR_STATUS" =
"$PR_STATUS_EXISTS" and similarly include "$MAIN_PR_STATUS" =
"$PR_STATUS_EXISTS" (and keep "$MAIN_PR_STATUS" = "$PR_STATUS_PUSHED") so
existing/no-op PR outcomes are classified as successful.

In @.claude/skills/new-release/SKILL.md:
- Around line 145-148: Update the table entries and explanatory text to
correctly reference that Repository 4’s release-specific pipeline and template
changes are made on the release-1.8 branch (not main) and that 04-catalog.sh
only creates a PR to main when catalog directories are missing and merely
scaffolds empty v4.xx/.../catalog.json; specifically, change the "PR | Target
Branch | Content" rows that currently say "PR to main | main | New release-1.8
catalog config..." to point the release-specific work to `release-1.8`, clarify
the role of `04-catalog.sh` (scaffolding only) in the adjacent prose, and mirror
the same corrections in the duplicated total-output table so reviewers are
directed to the correct branch and artifacts (e.g., pipeline/template updates
and images-mirror-set.yaml on `release-1.8`).

---

Duplicate comments:
In @.claude/skills/new-release/SKILL.md:
- Around line 101-103: The verification example mistakenly expects an image
prefix of `release-218` for the `release-2.17` PR; update the verification text
so the expected prefix is `release-217` (i.e., change the `release-218` mention
to `release-217`) where the table lists the checks (`branch: release-2.17`,
`name: "2.17"`, `release-218` prefix) so the check matches the actual generated
prefix for release-2.17.
- Around line 81-84: The PR table row that currently states "old globalhub-1-7
files removed" conflicts with the behavior bullets above that say the 1-7 files
remain on main; update the text so both places match: either change the table's
"Content" cell in the "PR to main" row to say the old globalhub-1-7 files remain
on main (e.g., "old globalhub-1-7 files retained on main; new
.tekton/globalhub-1-8-*.yaml added") or alter the bullets above to indicate the
1-7 files are removed—make the wording consistent between the "PR to main" table
row and the surrounding behavior bullets in SKILL.md.
- Around line 375-391: The doc mixes two script entrypoints; standardize all
references to a single canonical path to avoid confusion. Pick the new location
`.claude/skills/new-release/` (or if preferred the original `./scripts/` style)
and update every occurrence of `.claude/skills/cut-release/`, `./scripts/...`,
and any other variants to that chosen path (search for `cut-release.sh`,
`new-release`, and `cut-release` tokens in SKILL.md) so all examples and earlier
sections reference the same script entrypoint consistently.
- Around line 341-354: The Phase 3–6 narrative conflicts with the "Pull Requests
Expected" table: update the narrative to match the 8-PR flow shown in the table
(repos and target branches such as multicluster-global-hub → main &
release-2.16, openshift/release → main, operator-bundle → release-1.8,
operator-catalog → main & release-1.8, glo-grafana → release-1.8,
postgres_exporter → release-2.17) and remove the outdated lines that say bundle
creates a PR to main or that Grafana/Postgres only create branches; ensure Phase
numbering and descriptions explicitly mention the two PRs where applicable
(operator-bundle and operator-catalog separate targets) so the narrative and
table are consistent.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: d9160893-9168-4281-9269-039ff93db97b

📥 Commits

Reviewing files that changed from the base of the PR and between 245be57 and e573c56.

📒 Files selected for processing (3)
  • .claude/skills/new-release/SKILL.md
  • .claude/skills/new-release/scripts/03-bundle.sh
  • .claude/skills/new-release/scripts/04-catalog.sh

Comment thread .claude/skills/new-release/scripts/04-catalog.sh
Comment thread .claude/skills/new-release/SKILL.md
@yanmxa
Copy link
Copy Markdown
Contributor Author

yanmxa commented Mar 12, 2026

@coderabbitai review

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Mar 12, 2026

✅ Actions performed

Review triggered.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

♻️ Duplicate comments (2)
.claude/skills/new-release/SKILL.md (1)

132-149: ⚠️ Potential issue | 🟡 Minor

Align the operator-catalog docs with the script’s actual branch split.

04-catalog.sh only uses main for optional v4.xx/.../catalog.json scaffolding. The release-specific pipeline/template/filter/image updates happen on release-1.8, and the current script does not update README.md or GitHub Actions. These sections still describe main as holding the new release config, which will send reviewers to the wrong branch.

Suggested wording
-- Updates `README.md` with new version information
-- Updates GitHub Actions workflow for new release branch
-- Creates PR to main with new release configuration
-- Creates PR to catalog release branch with pipeline updates
+- Adds missing `v4.xx/.../catalog.json` scaffolding on `main` when needed
+- Updates pipelines, image references, catalog template, and filter files on the catalog release branch
+- Creates an optional PR to `main` only for missing OCP scaffolding
+- Creates a PR to the catalog release branch for release-specific updates

-| PR to main | `main` | New release-1.8 catalog config; OCP version lifecycle managed | Check README lists OCP 4.18-4.22; new OCP pipeline added |
-| PR to catalog branch | `release-1.8` | pipeline updates, image mirror set updated | Check `images-mirror-set.yaml` has globalhub-1-8 tags |
+| PR to main | `main` | Add any missing `v4.18`-`v4.22` `catalog.json` scaffolding | Check missing `v4.xx/catalog/multicluster-global-hub-operator-rh/catalog.json` files were added |
+| PR to catalog branch | `release-1.8` | Update pipelines, image mirror set, catalog template, and filter files for the new release | Check `images-mirror-set.yaml` has `globalhub-1-8` and catalog metadata points to `release-1.8` |

Also applies to: 354-355

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.claude/skills/new-release/SKILL.md around lines 132 - 149, Update the
operator-catalog documentation to reflect the actual branch split used by
04-catalog.sh: state that release-specific pipeline/template/filter/image
changes (including updates to images-mirror-set.yaml and adding/removing OCP
pipelines) are made on the release branch (e.g., release-1.8) while only
optional scaffolding for v4.xx/.../catalog.json may exist on main; change any
README.md and GitHub Actions workflow text that claims the new release config
lives on main to point reviewers to the release branch and adjust the PR/branch
descriptions accordingly so they reference release-1.8 for release-specific
changes and main only for optional scaffolding.
.claude/skills/new-release/scripts/04-catalog.sh (1)

954-954: ⚠️ Potential issue | 🟠 Major

Require both status families to be healthy before printing SUCCESS.

This flat || chain lets one successful path mask a failure in the other one. For example, MAIN_PR_STATUS=failed plus CATALOG_PR_STATUS=none still ends with ✅ SUCCESS. Gate the catalog and main outcomes separately, then combine them with &&.

Suggested fix
-if [[ "$CATALOG_PR_STATUS" = "$PR_STATUS_PUSHED" || "$CATALOG_PR_STATUS" = "$PR_STATUS_CREATED" || "$CATALOG_PR_STATUS" = "$PR_STATUS_UPDATED" || "$CATALOG_PR_STATUS" = "$PR_STATUS_EXISTS" || "$CATALOG_PR_STATUS" = "$PR_STATUS_NONE" || "$CATALOG_PR_STATUS" = "$PR_STATUS_SKIPPED" || "$MAIN_PR_STATUS" = "$PR_STATUS_CREATED" || "$MAIN_PR_STATUS" = "$PR_STATUS_UPDATED" || "$MAIN_PR_STATUS" = "$PR_STATUS_EXISTS" || "$MAIN_PR_STATUS" = "$PR_STATUS_PUSHED" || "$MAIN_PR_STATUS" = "$PR_STATUS_SKIPPED" ]]; then
+if [[ ( "$CATALOG_PR_STATUS" = "$PR_STATUS_PUSHED" || "$CATALOG_PR_STATUS" = "$PR_STATUS_CREATED" || "$CATALOG_PR_STATUS" = "$PR_STATUS_UPDATED" || "$CATALOG_PR_STATUS" = "$PR_STATUS_EXISTS" || "$CATALOG_PR_STATUS" = "$PR_STATUS_NONE" || "$CATALOG_PR_STATUS" = "$PR_STATUS_SKIPPED" ) \
+   && ( "$MAIN_PR_STATUS" = "$PR_STATUS_CREATED" || "$MAIN_PR_STATUS" = "$PR_STATUS_UPDATED" || "$MAIN_PR_STATUS" = "$PR_STATUS_EXISTS" || "$MAIN_PR_STATUS" = "$PR_STATUS_PUSHED" || "$MAIN_PR_STATUS" = "$PR_STATUS_SKIPPED" ) ]]; then
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.claude/skills/new-release/scripts/04-catalog.sh at line 954, The current if
condition mixes CATALOG_PR_STATUS and MAIN_PR_STATUS with a long OR chain
allowing one side to mask failures; update the logic so you compute two booleans
(e.g., catalog_ok and main_ok) by checking CATALOG_PR_STATUS and MAIN_PR_STATUS
respectively against the healthy set (PR_STATUS_PUSHED, PR_STATUS_CREATED,
PR_STATUS_UPDATED, PR_STATUS_EXISTS, PR_STATUS_NONE, PR_STATUS_SKIPPED), then
change the top-level if to require both true (catalog_ok && main_ok) before
printing "✅ SUCCESS"; locate and change the conditional that references
CATALOG_PR_STATUS, MAIN_PR_STATUS and the PR_STATUS_* symbols.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In @.claude/skills/new-release/SKILL.md:
- Around line 203-215: In SKILL.md update the fenced code block that begins with
the directory tree (the line showing ".claude/skills/new-release/") by adding
the language identifier "text" after the opening triple backticks (i.e. change
``` to ```text) so the block is lint-clean; leave the block contents and closing
backticks unchanged.

---

Duplicate comments:
In @.claude/skills/new-release/scripts/04-catalog.sh:
- Line 954: The current if condition mixes CATALOG_PR_STATUS and MAIN_PR_STATUS
with a long OR chain allowing one side to mask failures; update the logic so you
compute two booleans (e.g., catalog_ok and main_ok) by checking
CATALOG_PR_STATUS and MAIN_PR_STATUS respectively against the healthy set
(PR_STATUS_PUSHED, PR_STATUS_CREATED, PR_STATUS_UPDATED, PR_STATUS_EXISTS,
PR_STATUS_NONE, PR_STATUS_SKIPPED), then change the top-level if to require both
true (catalog_ok && main_ok) before printing "✅ SUCCESS"; locate and change the
conditional that references CATALOG_PR_STATUS, MAIN_PR_STATUS and the
PR_STATUS_* symbols.

In @.claude/skills/new-release/SKILL.md:
- Around line 132-149: Update the operator-catalog documentation to reflect the
actual branch split used by 04-catalog.sh: state that release-specific
pipeline/template/filter/image changes (including updates to
images-mirror-set.yaml and adding/removing OCP pipelines) are made on the
release branch (e.g., release-1.8) while only optional scaffolding for
v4.xx/.../catalog.json may exist on main; change any README.md and GitHub
Actions workflow text that claims the new release config lives on main to point
reviewers to the release branch and adjust the PR/branch descriptions
accordingly so they reference release-1.8 for release-specific changes and main
only for optional scaffolding.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: e519a4e5-bbdb-404e-bd3d-2ea9b632cd82

📥 Commits

Reviewing files that changed from the base of the PR and between 245be57 and bb0c187.

📒 Files selected for processing (4)
  • .claude/skills/new-release/SKILL.md
  • .claude/skills/new-release/scripts/02-openshift-release.sh
  • .claude/skills/new-release/scripts/03-bundle.sh
  • .claude/skills/new-release/scripts/04-catalog.sh

Comment thread .claude/skills/new-release/SKILL.md
yanmxa and others added 8 commits March 12, 2026 21:35
- Fix 02-openshift-release.sh: replace all 'master' with 'main' for
  openshift/release repo (branch name, git fetch, checkout, PR base)
- Fix 05-grafana.sh: calculate PREV_GRAFANA_TAG directly from version
  formula instead of remote branch detection; also fix fi placement bug
  causing readonly constants to be inside else block on macOS
- Fix 06-postgres-exporter.sh: calculate PREV_POSTGRES_TAG directly
  from version formula instead of remote branch detection
- Update SKILL.md: add expected PRs and verification details per repo,
  fix OCP version examples (4.17-4.21 -> 4.18-4.22), fix Total Output
  from 5 to 11 PRs, fix script path (cut-release -> new-release),
  unify all version examples to release-2.17/v1.8.0/globalhub-1-8

Signed-off-by: myan <myan@redhat.com>
… column

Signed-off-by: myan <myan@redhat.com>
Add Step 8 to 03-bundle.sh to update the bundle repo's main branch
with new bundle content copied from multicluster-global-hub main,
renamed tekton pipelines, and updated image references.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: myan <myan@redhat.com>
- Add bundle main PR to Repository 3 expected PRs (now 3 PRs)
- Update Total Expected Output Summary: operator-bundle 2→3, total 10→11
- Update Total Output table: add PR stolostron#5 for bundle main branch sync

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: myan <myan@redhat.com>
- 03-bundle.sh: remove cleanup PR step (GitHub Actions removal from
  old release branch) and Step 8 (bundle main branch update)
- 04-catalog.sh: remove cleanup PR step (GitHub Actions removal from
  old release branch)
- SKILL.md: update expected PR counts (bundle 3→1, catalog 3→2,
  total 11→8) and remove cleanup/main entries from tables

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: myan <myan@redhat.com>
Previously MGH_MAIN_PR was hardcoded to empty, always falling back to
upstream/main which may not have the latest bundle changes if the release
PR is not yet merged. Now queries GitHub for the open PR with the release
branch name in its title, so bundle content is taken from the correct
PR branch (e.g. release-2.17-tekton-configs for release-2.17).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: myan <myan@redhat.com>
…cation

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: myan <myan@redhat.com>
@yanmxa yanmxa force-pushed the chore/update-new-release-skill branch from bb0c187 to 57eb498 Compare March 13, 2026 01:36
@yanmxa
Copy link
Copy Markdown
Contributor Author

yanmxa commented Mar 13, 2026

setup error, rerun it

/test test-e2e

@clyang82
Copy link
Copy Markdown
Contributor

/lgtm

@openshift-ci
Copy link
Copy Markdown

openshift-ci Bot commented Mar 23, 2026

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: clyang82, yanmxa

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@sonarqubecloud
Copy link
Copy Markdown

@openshift-merge-bot openshift-merge-bot Bot merged commit a56459e into stolostron:main Mar 23, 2026
14 checks passed
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