Skip to content

feat(acm): update fast-forward workflow with exclusions and v5.0-5.1#78109

Open
dislbenn wants to merge 86 commits intoopenshift:mainfrom
dislbenn:acm-fastforward-updated
Open

feat(acm): update fast-forward workflow with exclusions and v5.0-5.1#78109
dislbenn wants to merge 86 commits intoopenshift:mainfrom
dislbenn:acm-fastforward-updated

Conversation

@dislbenn
Copy link
Copy Markdown
Contributor

@dislbenn dislbenn commented Apr 21, 2026

Updates ACM fast-forward workflow based on PR #77987 feedback.

Changes

  1. Exclusion list - Added 12 Observability repos with release-* default branches that should be skipped:

    • grafana, grafana-dashboard-loader, kube-rbac-proxy, kube-state-metrics
    • metrics-collector, node-exporter, prometheus, prometheus-alertmanager
    • prometheus-operator, rbac-query-proxy, thanos, thanos-receive-controller
  2. Owner variable - Uncommented owner extraction for use in fast-forward script

  3. Exclusion check - Added logic to skip repos in exclusion list

  4. Execution active - Uncommented actual fast-forward calls to ../fastforward/ocm-ci-fastforward-commands.sh

  5. Cleanup - Added /tmp/ocm-* cleanup after each iteration to prevent conflicts

  6. Version update - Changed DESTINATION_VERSIONS from 2.17 5.0 to 5.0 5.1

Testing

Tested locally against must-gather and Observability components (per original PR description).

Notes

  • Relative path ../fastforward/ pattern validated against existing step-registry examples (acm-tests-alc)
  • gcs-credentials volumeMount without volume definition is standard pattern (auto-injected by infrastructure)

cc: Original PR author for review

Summary by CodeRabbit

  • New Features

    • Added an automated fast-forward workflow to sync branches and generate Tekton pipeline variants across multiple repositories and target versions.
  • Chores

    • Added CI configuration and a scheduled periodic job for the ACM configuration repo.
    • Updated ownership/approver metadata across CI workflows and step references.
  • Documentation

    • Added guidance for syncing ownership metadata into workflow manifests.

dhaiducek and others added 3 commits April 17, 2026 13:57
Also adds a script to manage it more easily.

Signed-off-by: Dale Haiducek <19750917+dhaiducek@users.noreply.github.com>
Signed-off-by: Dale Haiducek <19750917+dhaiducek@users.noreply.github.com>
Updates based on PR feedback:
- Add exclusion list for 12 Observability repos with release-* default branches
- Uncomment owner variable extraction
- Add exclusion check logic to skip listed repos
- Uncomment actual fast-forward execution
- Add cleanup for temp directories after each iteration
- Update DESTINATION_VERSIONS from "2.17 5.0" to "5.0 5.1"

The script now calls ../fastforward/ocm-ci-fastforward-commands.sh for each
repo/version combination and cleans up /tmp/ocm-* directories to prevent
conflicts on subsequent runs.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Signed-off-by: dislbenn <dbennett@redhat.com>
@openshift-ci openshift-ci Bot requested review from Kyl-Bempah and smithbw88 April 21, 2026 11:52
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Apr 21, 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

Adds CI/Prow configuration for stolostron/acm-config, a new ocm-ci-fastforward-multiple workflow and step (including a large Bash orchestration script) to fast‑forward branches and generate Tekton manifests across repositories, and bulk-updates approvers in many OCM step-registry metadata/OWNERS files.

Changes

Cohort / File(s) Summary
ACM Config repo CI
ci-operator/config/stolostron/acm-config/.config.prowgen, ci-operator/config/stolostron/acm-config/OWNERS, ci-operator/config/stolostron/acm-config/stolostron-acm-config-main.yaml, ci-operator/jobs/stolostron/acm-config/...
Adds prowgen metadata (private: true, expose: true), OWNERS, a main ci-operator config (build_root, defaults, scheduled fast-forward workflow), and a periodic Prow job manifest to run the fast-forward workflow with required secrets and volumes.
Fast-forward workflow & step
ci-operator/step-registry/ocm/ci/fastforward-multiple/ocm-ci-fastforward-multiple-commands.sh, ci-operator/step-registry/ocm/ci/fastforward-multiple/ocm-ci-fastforward-multiple-ref.yaml, ...-ref.metadata.json, ...-workflow.yaml, ...-workflow.metadata.json, .../OWNERS
Adds a new step and workflow: a substantial Bash script that validates inputs, queries GitHub for default branches, clones/repos branches, fast-forwards or creates release branches, and generates/pushes Tekton YAML variants; plus step ref, workflow, metadata, and OWNERS.
Step-registry OWNERS & docs
ci-operator/step-registry/ocm/OWNERS, ci-operator/step-registry/ocm/README.md, ci-operator/step-registry/ocm/ci/fastforward/.../OWNERS
Updates/edits parent OWNERS (approvers/emeritus changes) and adds README section describing syncing OWNERS approvers into workflow metadata; small OWNERS linkage added in fastforward directory.
Bulk approver metadata updates
ci-operator/step-registry/ocm/.../*.metadata.json, ci-operator/step-registry/ocm/.../workflow.metadata.json, ci-operator/step-registry/ocm/.../ref.metadata.json (many files under ci-operator/step-registry/ocm/...)
Replaces approvers list across many OCM step/workflow/ref metadata files: removes gurnben, kyl-bempah, schmidtd, tpouyer, joeg-pro and adds eemurphy while retaining existing approvers like mark-nc, MacdonEm, smithbw88.
Jobs OWNERS
ci-operator/jobs/stolostron/acm-config/OWNERS
Adds OWNERS file for the job directory with approvers and reviewers entries.

Sequence Diagram(s)

sequenceDiagram
    participant Prow as Prow periodic job
    participant CI as ci-operator container (step)
    participant Script as ocm-ci-fastforward-multiple script
    participant GHAPI as GitHub REST API
    participant Git as Git remotes
    participant GHCLI as gh (GitHub CLI)
    participant Repo as Component repos

    Prow->>CI: trigger fast-forward workflow
    CI->>Script: run ocm-ci-fastforward-multiple-commands.sh (env, inputs)
    Script->>GHAPI: query repo default branch (GITHUB_TOKEN)
    GHAPI-->>Script: default branch info
    Script->>Git: clone repo (source/dest branches), create or fast-forward branches
    Git-->>Script: push branch updates
    Script->>Repo: write Tekton YAML variants to temp branch
    Script->>GHCLI: attempt gh pr create (if available)
    GHCLI-->>Script: PR created / error
    Script-->>CI: log results, exit status
    CI-->>Prow: report success/failure
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

🚥 Pre-merge checks | ✅ 11 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 66.67% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (11 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and specifically summarizes the main change: updating the fast-forward workflow with exclusions list and new destination versions (5.0-5.1).
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Stable And Deterministic Test Names ✅ Passed This PR modifies only CI/CD infrastructure files and contains no Ginkgo test code, making the test naming pattern check non-applicable.
Test Structure And Quality ✅ Passed This custom check is not applicable to the provided pull request. The PR contains no Ginkgo or Go test files—it exclusively modifies CI/operator configuration (YAML, JSON metadata, OWNERS files, and Bash scripts).
Microshift Test Compatibility ✅ Passed This PR does not add any new Ginkgo e2e tests; changes are CI/CD infrastructure files only.
Single Node Openshift (Sno) Test Compatibility ✅ Passed PR contains only CI/CD infrastructure code (Prow YAML, OWNERS files, and Bash automation script) with no new Ginkgo e2e tests.
Topology-Aware Scheduling Compatibility ✅ Passed Pull request contains only CI/CD infrastructure files with no production workload manifests or topology-aware scheduling constraints.
Ote Binary Stdout Contract ✅ Passed This PR contains no Go code, test files, or OTE binaries, making the OTE Binary Stdout Contract check not applicable.
Ipv6 And Disconnected Network Test Compatibility ✅ Passed PR adds only CI/operator configuration files, bash scripts, and metadata—no new Ginkgo e2e tests were introduced.

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

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

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

@dislbenn
Copy link
Copy Markdown
Contributor Author

/pj-rehearse periodic-ci-stolostron-acm-config-main-fast-forward

@openshift-merge-bot
Copy link
Copy Markdown
Contributor

@dislbenn: now processing your pj-rehearse request. Please allow up to 10 minutes for jobs to trigger or cancel.

Copy link
Copy Markdown
Contributor

@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: 4

🧹 Nitpick comments (3)
ci-operator/step-registry/ocm/ci/fastforward-multiple/ocm-ci-fastforward-multiple-ref.yaml (1)

23-34: Required inputs default to empty strings with no enforcement at the ref level.

REPO_MAP_PATH and DESTINATION_VERSIONS both have default: "". The commands script does validate them and exits 1, but consumers get no schema-level signal that these are required. Consider documenting them as required in the documentation block (e.g., "Required.") so misconfigured workflows fail early and visibly.

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

In
`@ci-operator/step-registry/ocm/ci/fastforward-multiple/ocm-ci-fastforward-multiple-ref.yaml`
around lines 23 - 34, The inputs REPO_MAP_PATH and DESTINATION_VERSIONS
currently default to empty strings with no schema-level indication they are
required; update the documentation blocks for the REPO_MAP_PATH and
DESTINATION_VERSIONS input entries in the ocm-ci-fastforward-multiple-ref.yaml
to clearly mark them as required (e.g., prepend or append "Required." and a
brief note about expected format) so consumers see they must be provided at the
ref level; ensure you modify the documentation field for the REPO_MAP_PATH and
DESTINATION_VERSIONS entries (referencing those exact names) rather than
changing their defaults or runtime validation.
ci-operator/step-registry/ocm/ci/fastforward-multiple/ocm-ci-fastforward-multiple-commands.sh (1)

85-89: Capturing exit_code=$? inside the || group works but overwrites prior failures.

Each iteration's failure overwrites the previous failing exit code, so the final exit ${exit_code} only reflects the last failure. That's usually fine (non-zero is non-zero), but if you want clearer signal consider OR-ing instead:

-          exit_code=$?
+          exit_code=$(( exit_code | $? ))

Not blocking.

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

In
`@ci-operator/step-registry/ocm/ci/fastforward-multiple/ocm-ci-fastforward-multiple-commands.sh`
around lines 85 - 89, The loop captures each iteration's exit_code which
overwrites previous failures, so change to accumulate failures instead:
initialize a cumulative variable (e.g., overall_exit=0) before the loop and
inside the failure group update it with a logical OR of the new exit status
(e.g., overall_exit=$((overall_exit || $?))) instead of assigning exit_code=$?;
continue using the existing logging (owner_repo, branch, log_file) and at the
end call exit ${overall_exit} so any prior failure is reflected in the final
exit code.
ci-operator/step-registry/ocm/README.md (1)

12-12: Consider using yq's --arg flag for safer variable substitution.

The current pattern concatenates shell variable expansion into the yq expression string, which works but is fragile. Using yq's --arg flag would avoid potential quoting/escaping issues.

♻️ Alternative approach using --arg
-  -exec yq -i -o json '.owners.approvers = '"${owners}" {} \;
+  -exec yq -i -o json --argjson owners "${owners}" '.owners.approvers = $owners' {} \;
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@ci-operator/step-registry/ocm/README.md` at line 12, The yq invocation
currently builds the expression by concatenating the shell variable into the
string (the '.owners.approvers = '"${owners}" {} \;' pattern); replace this with
yq's safer --arg or --argjson flags instead: pass the shell variable as --arg
owners "$owners" (or --argjson owners "$owners" if owners contains JSON) and use
the expression '.owners.approvers = $owners' so the command uses yq
--arg/--argjson and the expression '.owners.approvers = $owners' rather than
inlining "${owners}".
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In
`@ci-operator/step-registry/ocm/ci/fastforward-multiple/ocm-ci-fastforward-multiple-commands.sh`:
- Around line 91-92: The cleanup uses a broad rm -rf /tmp/ocm-* which can remove
other runs' temp dirs; instead, change the fastforward invocation to capture the
exact temp dir(s) returned by mktemp -d -t ocm-XXXXX (store them in a variable
like CREATED_TMPDIR or an array) and update the remover to rm -rf
"$CREATED_TMPDIR" (or iterate the array), or scope the glob to "$TMPDIR/ocm-*"
if TMPDIR is guaranteed; ensure the mktemp call and the cleanup reference the
same variable(s) and add a trap to remove only those recorded directories.
- Line 83: The invocation uses a fragile relative path
("../fastforward/ocm-ci-fastforward-commands.sh") that depends on CWD; change it
to resolve the helper script relative to the current script's location by using
BASH_SOURCE[0] and dirname to compute the script directory and then execute the
target script from that resolved path (still redirecting stdout/stderr to
"${log_file}"), referencing the helper script name
ocm-ci-fastforward-commands.sh to locate the call site.

In
`@ci-operator/step-registry/ocm/ci/image-mirror/ocm-ci-image-mirror-ref.metadata.json`:
- Around line 4-9: The approver roster in ocm-ci-image-mirror-ref.metadata.json
was updated but sibling metadata files under ci-operator/step-registry/ocm/
(notably ci/manifest-update/*.metadata.json) were not synced; re-run the
documented sync command from ci-operator/step-registry/ocm/README.md to apply
the ocm/OWNERS roster across all *.metadata.json under
ci-operator/step-registry/ocm/, ensuring files like
manifest-update/*.metadata.json no longer list the removed approvers (gurnben,
Kyl-Bempah, schmidtd, tpouyer) and match the updated approver list in
ocm/OWNERS.

In `@ci-operator/step-registry/ocm/README.md`:
- Line 11: The find command is using basename on owners_file which yields just
the file name (e.g., "OWNERS") so the search runs in the wrong path; change the
expression to use dirname("${owners_file}") so the find invocation searches the
parent directory (the step-registry path) for "*.metadata.json" files — update
the invocation that currently wraps basename("${owners_file}") to use
dirname("${owners_file}") where the find command is constructed.

---

Nitpick comments:
In
`@ci-operator/step-registry/ocm/ci/fastforward-multiple/ocm-ci-fastforward-multiple-commands.sh`:
- Around line 85-89: The loop captures each iteration's exit_code which
overwrites previous failures, so change to accumulate failures instead:
initialize a cumulative variable (e.g., overall_exit=0) before the loop and
inside the failure group update it with a logical OR of the new exit status
(e.g., overall_exit=$((overall_exit || $?))) instead of assigning exit_code=$?;
continue using the existing logging (owner_repo, branch, log_file) and at the
end call exit ${overall_exit} so any prior failure is reflected in the final
exit code.

In
`@ci-operator/step-registry/ocm/ci/fastforward-multiple/ocm-ci-fastforward-multiple-ref.yaml`:
- Around line 23-34: The inputs REPO_MAP_PATH and DESTINATION_VERSIONS currently
default to empty strings with no schema-level indication they are required;
update the documentation blocks for the REPO_MAP_PATH and DESTINATION_VERSIONS
input entries in the ocm-ci-fastforward-multiple-ref.yaml to clearly mark them
as required (e.g., prepend or append "Required." and a brief note about expected
format) so consumers see they must be provided at the ref level; ensure you
modify the documentation field for the REPO_MAP_PATH and DESTINATION_VERSIONS
entries (referencing those exact names) rather than changing their defaults or
runtime validation.

In `@ci-operator/step-registry/ocm/README.md`:
- Line 12: The yq invocation currently builds the expression by concatenating
the shell variable into the string (the '.owners.approvers = '"${owners}" {} \;'
pattern); replace this with yq's safer --arg or --argjson flags instead: pass
the shell variable as --arg owners "$owners" (or --argjson owners "$owners" if
owners contains JSON) and use the expression '.owners.approvers = $owners' so
the command uses yq --arg/--argjson and the expression '.owners.approvers =
$owners' rather than inlining "${owners}".
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository: openshift/coderabbit/.coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 47f0edb0-a102-43c5-9a8a-aa3a80f2fa36

📥 Commits

Reviewing files that changed from the base of the PR and between 5ae7632 and 6b2587b.

📒 Files selected for processing (30)
  • ci-operator/config/stolostron/acm-config/.config.prowgen
  • ci-operator/config/stolostron/acm-config/OWNERS
  • ci-operator/config/stolostron/acm-config/stolostron-acm-config-main.yaml
  • ci-operator/jobs/stolostron/acm-config/stolostron-acm-config-main-periodics.yaml
  • ci-operator/step-registry/ocm/OWNERS
  • ci-operator/step-registry/ocm/README.md
  • ci-operator/step-registry/ocm/ci/fastforward-multiple/OWNERS
  • ci-operator/step-registry/ocm/ci/fastforward-multiple/ocm-ci-fastforward-multiple-commands.sh
  • ci-operator/step-registry/ocm/ci/fastforward-multiple/ocm-ci-fastforward-multiple-ref.metadata.json
  • ci-operator/step-registry/ocm/ci/fastforward-multiple/ocm-ci-fastforward-multiple-ref.yaml
  • ci-operator/step-registry/ocm/ci/fastforward-multiple/ocm-ci-fastforward-multiple-workflow.metadata.json
  • ci-operator/step-registry/ocm/ci/fastforward-multiple/ocm-ci-fastforward-multiple-workflow.yaml
  • ci-operator/step-registry/ocm/ci/fastforward/ocm-ci-fastforward-ref.metadata.json
  • ci-operator/step-registry/ocm/ci/fastforward/ocm-ci-fastforward-workflow.metadata.json
  • ci-operator/step-registry/ocm/ci/image-mirror-periodic/ocm-ci-image-mirror-periodic-ref.metadata.json
  • ci-operator/step-registry/ocm/ci/image-mirror-periodic/ocm-ci-image-mirror-periodic-workflow.metadata.json
  • ci-operator/step-registry/ocm/ci/image-mirror/ocm-ci-image-mirror-ref.metadata.json
  • ci-operator/step-registry/ocm/ci/image-mirror/ocm-ci-image-mirror-workflow.metadata.json
  • ci-operator/step-registry/ocm/ci/rbac/ocm-ci-rbac-ref.metadata.json
  • ci-operator/step-registry/ocm/ci/rbac/ocm-ci-rbac-workflow.metadata.json
  • ci-operator/step-registry/ocm/e2e/clusterpool/checkin/ocm-e2e-clusterpool-checkin-ref.metadata.json
  • ci-operator/step-registry/ocm/e2e/clusterpool/checkout/ocm-e2e-clusterpool-checkout-chain.metadata.json
  • ci-operator/step-registry/ocm/e2e/clusterpool/checkout/ocm-e2e-clusterpool-checkout-ref.metadata.json
  • ci-operator/step-registry/ocm/e2e/clusterpool/cluster/deploy/ocm-e2e-clusterpool-cluster-deploy-ref.metadata.json
  • ci-operator/step-registry/ocm/e2e/clusterpool/cluster/getcreds/ocm-e2e-clusterpool-cluster-getcreds-ref.metadata.json
  • ci-operator/step-registry/ocm/e2e/clusterpool/list/ocm-e2e-clusterpool-list-ref.metadata.json
  • ci-operator/step-registry/ocm/e2e/clusterpool/ocm-e2e-clusterpool-workflow.metadata.json
  • ci-operator/step-registry/ocm/e2e/kind/create/ocm-e2e-kind-create-ref.metadata.json
  • ci-operator/step-registry/ocm/e2e/kind/destroy/ocm-e2e-kind-destroy-ref.metadata.json
  • ci-operator/step-registry/ocm/e2e/kind/ocm-e2e-kind-workflow.metadata.json

Comment thread ci-operator/step-registry/ocm/README.md
- Use SCRIPT_DIR with BASH_SOURCE for robust relative path resolution
- Accumulate exit codes with bitwise OR instead of overwriting
- Clean up temp dirs safely using find with mtime filter
- Document REPO_MAP_PATH and DESTINATION_VERSIONS as required
- Fix README find command to use dirname instead of basename
- Sync OWNERS approvers across all metadata files including manifest-update

Addresses CodeRabbit actionable comments on PR openshift#78109

Signed-off-by: dislbenn <dbennett@redhat.com>
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Signed-off-by: dislbenn <dbennett@redhat.com>
@dislbenn
Copy link
Copy Markdown
Contributor Author

/pj-rehearse periodic-ci-stolostron-acm-config-main-fast-forward

@openshift-merge-bot
Copy link
Copy Markdown
Contributor

@dislbenn: now processing your pj-rehearse request. Please allow up to 10 minutes for jobs to trigger or cancel.

Signed-off-by: dislbenn <dbennett@redhat.com>
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Signed-off-by: dislbenn <dbennett@redhat.com>
@dislbenn
Copy link
Copy Markdown
Contributor Author

/pj-rehearse periodic-ci-stolostron-acm-config-main-fast-forward

@openshift-merge-bot
Copy link
Copy Markdown
Contributor

@dislbenn: now processing your pj-rehearse request. Please allow up to 10 minutes for jobs to trigger or cancel.

Signed-off-by: dislbenn <dbennett@redhat.com>
Copy link
Copy Markdown
Contributor

@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: 3

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In
`@ci-operator/step-registry/ocm/ci/fastforward-multiple/ocm-ci-fastforward-multiple-commands.sh`:
- Around line 86-93: The error branch uses `local err=$?` inside a brace group
which is invalid outside a function and will crash; instead capture the child
process exit status immediately into a non-local variable (e.g., err) as the
first statement in the error block, remove the `local` keyword, then use
exit_code=$((exit_code | err)) to accumulate; update the block surrounding the
invocation of "${SCRIPT_DIR}/../fastforward/ocm-ci-fastforward-commands.sh" and
references to exit_code and err accordingly so $? is read before any echo/sed.
- Around line 95-97: The find cleanup uses "-mmin +1" which skips
freshly-created temp dirs (e.g., those made with mktemp -d -t ocm-XXXXX) so they
pile up; remove the age filter and delete all matching /tmp/ocm-* dirs
immediately (or alternatively change the workflow to record the exact temp dir
via TMPDIR and remove that specific directory) by updating the cleanup command
that references find ... -name 'ocm-*' -type d -mmin +1 -exec rm -rf {} + to
either drop "-mmin +1" or replace it with direct removal of the TMPDIR target.
- Around line 46-50: The yq selector is using literal equality for .repository
which treats the '*' as a character and returns nothing; change the filter in
the command that sets component_repos to use a regex test on .repository (e.g.,
replace the equality check `.repository == "https://github.com/stolostron/*"`
with a regex test using yq/jq's test function such as `(.repository |
test("https://github.com/stolostron/"))`) so that the full URLs like
`https://github.com/stolostron/multiclusterhub-operator` match; update the
select expression that builds component_repos (the for product loop and the
variable component_repos referencing REPO_MAP_PATH) accordingly.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository: openshift/coderabbit/.coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 91f93cb2-cd25-4fc6-9119-ca1820a4cbce

📥 Commits

Reviewing files that changed from the base of the PR and between 6b2587b and dbbb088.

📒 Files selected for processing (4)
  • ci-operator/jobs/stolostron/acm-config/OWNERS
  • ci-operator/step-registry/ocm/README.md
  • ci-operator/step-registry/ocm/ci/fastforward-multiple/ocm-ci-fastforward-multiple-commands.sh
  • ci-operator/step-registry/ocm/ci/fastforward-multiple/ocm-ci-fastforward-multiple-ref.yaml
✅ Files skipped from review due to trivial changes (3)
  • ci-operator/step-registry/ocm/README.md
  • ci-operator/jobs/stolostron/acm-config/OWNERS
  • ci-operator/step-registry/ocm/ci/fastforward-multiple/ocm-ci-fastforward-multiple-ref.yaml

Signed-off-by: dislbenn <dbennett@redhat.com>
@dislbenn
Copy link
Copy Markdown
Contributor Author

/pj-rehearse periodic-ci-stolostron-acm-config-main-fast-forward

@openshift-merge-bot
Copy link
Copy Markdown
Contributor

@dislbenn: now processing your pj-rehearse request. Please allow up to 10 minutes for jobs to trigger or cancel.

Add debug output to fastforward-multiple script to diagnose path
resolution issue in CI pods. Will show:
- SCRIPT_DIR and BASH_SOURCE[0] values
- PWD and directory listings
- Location of sibling fastforward script

This will help identify correct path for invoking the sibling
ocm-ci-fastforward-commands.sh script.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
@dislbenn
Copy link
Copy Markdown
Contributor Author

/pj-rehearse periodic-ci-stolostron-acm-config-main-fast-forward

@openshift-merge-bot
Copy link
Copy Markdown
Contributor

@dislbenn: now processing your pj-rehearse request. Please allow up to 10 minutes for jobs to trigger or cancel.

Copy link
Copy Markdown
Contributor

@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

🧹 Nitpick comments (1)
ci-operator/step-registry/ocm/ci/fastforward-multiple/ocm-ci-fastforward-multiple-commands.sh (1)

62-65: Loop variable repo is rebound inside the loop body — works, but subtle.

At line 62 repo iterates over full URLs from component_repos, then line 65 overwrites it with just the repo name (repo=${owner_repo#*/}). Because Bash's for captures the expanded word list up front, this doesn't break iteration, but anyone reading the loop has to verify that to be sure. Consider renaming to avoid the cognitive overhead:

♻️ Optional rename
-  for repo in ${component_repos}; do
-    owner_repo=${repo#https://github.com/}
+  for repo_url in ${component_repos}; do
+    owner_repo=${repo_url#https://github.com/}
     owner=${owner_repo%/*}
     repo=${owner_repo#*/}
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@ci-operator/step-registry/ocm/ci/fastforward-multiple/ocm-ci-fastforward-multiple-commands.sh`
around lines 62 - 65, The loop rebinds the loop variable `repo` inside the body
(for repo in ${component_repos}; ... repo=${owner_repo#*/}) which is subtle;
change the inner variable to a different name (e.g., use `repo_url` for the loop
variable or `repo_name` for the extracted name) so you do not overwrite the loop
iterator; update occurrences of `owner_repo`, `owner`, and the extracted repo
variable (`repo=${owner_repo#*/}`) to use the new names consistently (for
example: for repo_url in ${component_repos};
owner_repo=${repo_url#https://github.com/}; owner=${owner_repo%/*};
repo_name=${owner_repo#*/}) to preserve behavior without rebinding the iterator.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In
`@ci-operator/step-registry/ocm/ci/fastforward-multiple/ocm-ci-fastforward-multiple-commands.sh`:
- Around line 8-17: Remove or gate the diagnostic block that prints SCRIPT_DIR,
BASH_SOURCE, PWD, and runs find; specifically either delete the echo/ls/find
sequence that references SCRIPT_DIR and BASH_SOURCE or wrap that entire block in
an opt-in check such as testing an env var (e.g., [[ "${DEBUG:-}" == "true" ]])
so it only runs when explicitly enabled; ensure the gating preserves existing
behavior when DEBUG is unset (no output and no filesystem traversal) and that
references to SCRIPT_DIR and the find call are no longer executed by default.

---

Nitpick comments:
In
`@ci-operator/step-registry/ocm/ci/fastforward-multiple/ocm-ci-fastforward-multiple-commands.sh`:
- Around line 62-65: The loop rebinds the loop variable `repo` inside the body
(for repo in ${component_repos}; ... repo=${owner_repo#*/}) which is subtle;
change the inner variable to a different name (e.g., use `repo_url` for the loop
variable or `repo_name` for the extracted name) so you do not overwrite the loop
iterator; update occurrences of `owner_repo`, `owner`, and the extracted repo
variable (`repo=${owner_repo#*/}`) to use the new names consistently (for
example: for repo_url in ${component_repos};
owner_repo=${repo_url#https://github.com/}; owner=${owner_repo%/*};
repo_name=${owner_repo#*/}) to preserve behavior without rebinding the iterator.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository: openshift/coderabbit/.coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: f6ee97b4-eaf6-4ae7-b3ea-7e9d471930a3

📥 Commits

Reviewing files that changed from the base of the PR and between dbbb088 and cfa2d41.

📒 Files selected for processing (1)
  • ci-operator/step-registry/ocm/ci/fastforward-multiple/ocm-ci-fastforward-multiple-commands.sh

Inlined git fastforward logic from ocm-ci-fastforward-commands.sh
into ocm-ci-fastforward-multiple-commands.sh as a bash function.

Root cause: Step-registry scripts are only available within their
own container contexts. The fastforward-multiple step runs in the
source container (from: src) to access product/component-registry.yaml,
while the fastforward step runs in the builder image (from_image).
Cross-container script invocation is not supported.

Changes:
- Added fastforward_repo() function with all git clone/pull/push logic
- Removed external script call to ../fastforward/ocm-ci-fastforward-commands.sh
- Cleaned up debug code added for troubleshooting
- Preserved all original fastforward behavior (branch creation, ff-only pull)
- Fixed all CodeRabbit issues (local keyword, regex test, cleanup timing)

Script now self-contained and works correctly in rehearsal and production.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
@dislbenn
Copy link
Copy Markdown
Contributor Author

/pj-rehearse periodic-ci-stolostron-acm-config-main-fast-forward

@openshift-merge-bot
Copy link
Copy Markdown
Contributor

@dislbenn: now processing your pj-rehearse request. Please allow up to 10 minutes for jobs to trigger or cancel.

@dislbenn
Copy link
Copy Markdown
Contributor Author

/retest

Fix shellcheck SC2155 warnings by separating declaration and
assignment for ocm_dir and token variables. This prevents masking
return values from mktemp and cat commands.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
@dislbenn
Copy link
Copy Markdown
Contributor Author

/pj-rehearse ack

- Add LAST_RELEASE_VERSION parameter to transform_tekton_files
- Implement fallback to fetch .tekton files from previous release when missing
- Remove silent error suppression in branch cleanup (show warnings instead)
- Pass LAST_RELEASE_VERSION to all transform_tekton_files calls

Fixes transform failures when fast-forwarded branches lack tekton files.
Fixes silent failures in ff-* branch cleanup by logging API errors.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
@openshift-ci openshift-ci Bot removed the lgtm Indicates that a PR is ready to be merged. label Apr 27, 2026
Signed-off-by: dislbenn <dbennett@redhat.com>
@openshift-ci openshift-ci Bot removed the approved Indicates a PR has been approved by an approver from all required OWNERS files. label Apr 27, 2026
@dislbenn
Copy link
Copy Markdown
Contributor Author

/pj-rehearse periodic-ci-stolostron-acm-config-main-fast-forward

@openshift-merge-bot
Copy link
Copy Markdown
Contributor

@dislbenn: now processing your pj-rehearse request. Please allow up to 10 minutes for jobs to trigger or cancel.

@openshift-ci openshift-ci Bot added lgtm Indicates that a PR is ready to be merged. needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. labels Apr 27, 2026
Signed-off-by: dislbenn <dbennett@redhat.com>
@openshift-ci openshift-ci Bot removed the lgtm Indicates that a PR is ready to be merged. label Apr 28, 2026
@openshift-ci
Copy link
Copy Markdown
Contributor

openshift-ci Bot commented Apr 28, 2026

New changes are detected. LGTM label has been removed.

@openshift-ci openshift-ci Bot removed the needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. label Apr 28, 2026
@dislbenn
Copy link
Copy Markdown
Contributor Author

/unhold

@openshift-ci openshift-ci Bot removed the do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. label Apr 28, 2026
@dislbenn
Copy link
Copy Markdown
Contributor Author

/pj-rehearse periodic-ci-stolostron-acm-config-main-fast-forward

@openshift-merge-bot
Copy link
Copy Markdown
Contributor

@dislbenn: now processing your pj-rehearse request. Please allow up to 10 minutes for jobs to trigger or cancel.

@openshift-ci
Copy link
Copy Markdown
Contributor

openshift-ci Bot commented Apr 28, 2026

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: dislbenn, gparvin, smithbw88

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

@openshift-ci openshift-ci Bot added the approved Indicates a PR has been approved by an approver from all required OWNERS files. label Apr 28, 2026
@dislbenn
Copy link
Copy Markdown
Contributor Author

/retest

Export GH_TOKEN before stale branch cleanup loop. Previously gh CLI
ran unauthenticated during cleanup, hitting rate limits and causing
exit code 4 failures.

Token was only exported within create_tekton_files subshell scope.
Cleanup section at line 1386 needs auth for gh API calls across 120+ repos.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
@dislbenn
Copy link
Copy Markdown
Contributor Author

/pj-rehearse periodic-ci-stolostron-acm-config-main-fast-forward

@openshift-merge-bot
Copy link
Copy Markdown
Contributor

@dislbenn: now processing your pj-rehearse request. Please allow up to 10 minutes for jobs to trigger or cancel.

@openshift-merge-bot
Copy link
Copy Markdown
Contributor

[REHEARSALNOTIFIER]
@dislbenn: the pj-rehearse plugin accommodates running rehearsal tests for the changes in this PR. Expand 'Interacting with pj-rehearse' for usage details. The following rehearsable tests have been affected by this change:

Test name Repo Type Reason
periodic-ci-stolostron-acm-config-main-fast-forward N/A periodic Periodic changed
Interacting with pj-rehearse

Comment: /pj-rehearse to run up to 5 rehearsals
Comment: /pj-rehearse skip to opt-out of rehearsals
Comment: /pj-rehearse {test-name}, with each test separated by a space, to run one or more specific rehearsals
Comment: /pj-rehearse more to run up to 10 rehearsals
Comment: /pj-rehearse max to run up to 25 rehearsals
Comment: /pj-rehearse auto-ack to run up to 5 rehearsals, and add the rehearsals-ack label on success
Comment: /pj-rehearse list to get an up-to-date list of affected jobs
Comment: /pj-rehearse abort to abort all active rehearsals
Comment: /pj-rehearse network-access-allowed to allow rehearsals of tests that have the restrict_network_access field set to false. This must be executed by an openshift org member who is not the PR author

Once you are satisfied with the results of the rehearsals, comment: /pj-rehearse ack to unblock merge. When the rehearsals-ack label is present on your PR, merge will no longer be blocked by rehearsals.
If you would like the rehearsals-ack label removed, comment: /pj-rehearse reject to re-block merging.

@dislbenn
Copy link
Copy Markdown
Contributor Author

/pj-rehearse ack

@openshift-merge-bot
Copy link
Copy Markdown
Contributor

@dislbenn: now processing your pj-rehearse request. Please allow up to 10 minutes for jobs to trigger or cancel.

@openshift-merge-bot openshift-merge-bot Bot added the rehearsals-ack Signifies that rehearsal jobs have been acknowledged label Apr 28, 2026
@dislbenn
Copy link
Copy Markdown
Contributor Author

/pj-rehearse periodic-ci-stolostron-acm-config-main-fast-forward

@openshift-merge-bot
Copy link
Copy Markdown
Contributor

@dislbenn: now processing your pj-rehearse request. Please allow up to 10 minutes for jobs to trigger or cancel.

@openshift-ci
Copy link
Copy Markdown
Contributor

openshift-ci Bot commented Apr 29, 2026

@dislbenn: The following test failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name Commit Details Required Rerun command
ci/rehearse/periodic-ci-stolostron-acm-config-main-fast-forward 5de3b83 link unknown /pj-rehearse periodic-ci-stolostron-acm-config-main-fast-forward

Full PR test history. Your PR dashboard.

Details

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

approved Indicates a PR has been approved by an approver from all required OWNERS files. rehearsals-ack Signifies that rehearsal jobs have been acknowledged

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants