chore: update new-release skill with bug fixes and docs#2325
Conversation
|
Note Reviews pausedIt 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 Use the following commands to manage reviews:
Use the checkboxes below for quick actions:
📝 WalkthroughWalkthroughDocumentation and scripts updated for the new-release flow: default branch references standardized to Changes
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
Estimated code review effort🎯 4 (Complex) | ⏱️ ~45 minutes Poem
🚥 Pre-merge checks | ✅ 3✅ Passed checks (3 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
📝 Coding Plan
Comment Tip You can disable poems in the walkthrough.Disable the |
There was a problem hiding this comment.
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 | 🟠 MajorThis script layout block is still documenting the old skill path and outdated outputs.
It still points to
.claude/skills/cut-release/, says04-catalog.shcreates 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
📒 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
There was a problem hiding this comment.
Actionable comments posted: 2
♻️ Duplicate comments (2)
.claude/skills/new-release/SKILL.md (2)
82-86:⚠️ Potential issue | 🟡 MinorRepository 1's PR table still contradicts the workflow above.
Lines 75-76 say the old
globalhub-1-7files remain onmain, but Line 84 says the PR tomainremoves them. Please make the table match the behavior described above, including the verification guidance for thetarget_branchvalues.🤖 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 | 🟡 MinorThe OpenShift verification prefix is still off by one.
For
release-2.17, the verification should expect therelease-217image prefix, notrelease-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
📒 Files selected for processing (1)
.claude/skills/new-release/SKILL.md
There was a problem hiding this comment.
♻️ Duplicate comments (4)
.claude/skills/new-release/SKILL.md (4)
101-103:⚠️ Potential issue | 🟡 MinorThe OpenShift verification example still uses the wrong image prefix.
For
release-2.17, this should check forrelease-217, notrelease-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 | 🟡 MinorThe 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 | 🟡 MinorRepository 1's PR table still contradicts the workflow text.
Lines 73-74 say the old
globalhub-1-7files remain onmain, but Line 83 says the PR tomainremoves 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 | 🟡 MinorScript 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
📒 Files selected for processing (1)
.claude/skills/new-release/SKILL.md
There was a problem hiding this comment.
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 | 🟡 MinorScript 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 | 🟡 MinorThe OpenShift verification example has incorrect image prefix.
The verification column says
release-218but the script derivesIMAGE_PREFIX=release-217fromACM_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 -->
There was a problem hiding this comment.
Actionable comments posted: 2
♻️ Duplicate comments (4)
.claude/skills/new-release/SKILL.md (4)
101-103:⚠️ Potential issue | 🟡 MinorThe OpenShift verification example still expects the wrong image prefix.
For
release-2.17, the generated prefix isrelease-217, notrelease-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 | 🟡 MinorRepository 1's PR table still contradicts the workflow above.
Line 83 says the main PR removes the old
globalhub-1-7files, but the behavior bullets just above say those files remain onmain. 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 | 🟡 MinorThe 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 | 🟡 MinorThe 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
📒 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
|
@coderabbitai review |
✅ Actions performedReview triggered.
|
There was a problem hiding this comment.
Actionable comments posted: 1
♻️ Duplicate comments (2)
.claude/skills/new-release/SKILL.md (1)
132-149:⚠️ Potential issue | 🟡 MinorAlign the operator-catalog docs with the script’s actual branch split.
04-catalog.shonly usesmainfor optionalv4.xx/.../catalog.jsonscaffolding. The release-specific pipeline/template/filter/image updates happen onrelease-1.8, and the current script does not updateREADME.mdor GitHub Actions. These sections still describemainas 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 | 🟠 MajorRequire 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=failedplusCATALOG_PR_STATUS=nonestill 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
📒 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
- 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>
…to 10 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>
bb0c187 to
57eb498
Compare
|
setup error, rerun it /test test-e2e |
|
/lgtm |
|
[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 DetailsNeeds approval from an approver in each of these files:
Approvers can indicate their approval by writing |
|



Jira: ACM-30824
Summary
Bug fixes and documentation improvements for the
new-releaseskill used to automate Global Hub release workflows.Changes
Bug Fixes
02-openshift-release.sh- Replacemaster→mainfatal: couldn't find remote ref master05-grafana.sh- Fix PREV_TAG detection logicPREV_GH_MINOR = GH_MINOR - 1fiplacement bug causingreadonlyconstants to be unset on macOS⚠️ No previous grafana tag found, skipping pipeline update06-postgres-exporter.sh- Fix PREV_TAG detection logic⚠️ No previous postgres tag found, skipping pipeline update03-bundle.sh- Fix bundle source detectionRELEASE_BRANCH in:title) instead of hardcoded empty valuerelease-2.17-tekton-configs) rather than always falling back toupstream/main04-catalog.sh- Remove cleanup PR stepDocumentation (
SKILL.md)4.17-4.21→4.18-4.22cut-release/scripts/→new-release/scripts/release-2.17 / v1.8.0 / globalhub-1-8PRs created for release-2.17 (tested with this skill)
mainrelease-2.16mainrelease-1.8mainrelease-1.8release-1.8release-2.17Test plan
1.8.0-dev, skipRange>=1.7.0 <1.8.0)🤖 Generated with Claude Code