Skip to content

ROSAENG-62441: Skip SAPM-managed targets and add --latest flag to promote rhobs#937

Open
dustman9000 wants to merge 1 commit into
openshift:masterfrom
dustman9000:drow/promote-rhobs-wave-gating
Open

ROSAENG-62441: Skip SAPM-managed targets and add --latest flag to promote rhobs#937
dustman9000 wants to merge 1 commit into
openshift:masterfrom
dustman9000:drow/promote-rhobs-wave-gating

Conversation

@dustman9000

@dustman9000 dustman9000 commented Jul 23, 2026

Copy link
Copy Markdown
Member

Summary

  • FilterTargets now excludes production targets that have a promotion.subscribe field, since those are auto-promoted by SAPM wave gating and should not be manually pinned
  • Adds saas-mc-rules to the SRE-owned services list
  • Adds --latest flag that auto-resolves origin/main from the local rhobs/configuration checkout, detecting the upstream remote by URL

Usage

# Before (manual SHA copy)
osdctl promote rhobs --gitHash 11f99e1585c904ad4a36913a9d02cc6ce0c0c9ae

# After
osdctl promote rhobs --latest

Context

RHOBS rules saas files now use SAPM wave gating: wave-1 is manually promoted, wave-2/3 auto-promote after post-deploy checks pass and soakDays complete. osdctl promote rhobs needs to only pin wave-1 targets.

The bulk path (promoteAllServices) already skips targets with subscribe: via targetBlockHasSubscribe(). This PR fixes the single-service path (--serviceId) to do the same via the kyaml Lookup API.

Jira: ROSAENG-62441

Test plan

  • go build ./... passes
  • go test ./cmd/promote/rhobs/ ./pkg/promote/ passes
  • osdctl promote rhobs --latest resolves SHA and promotes wave-1 targets only
  • osdctl promote rhobs --serviceId saas-hcp-rules --gitHash <sha> only pins wave-1 target
  • osdctl promote rhobs --latest --gitHash <sha> errors (mutually exclusive)

Summary by CodeRabbit

  • New Features
    • Added a new --latest promotion mode to bulk-promote all RHOBS services to the latest rhobs/configuration origin/main pinned SHA.
  • Bug Fixes
    • Expanded RHOBS discovery/allowlisting to include saas-mc-rules.
    • Improved target selection by limiting to rhobs-production and skipping targets that already include a promotion.subscribe node.
    • Enhanced bulk promotion commit messages, including a compare link and an optional changelog for the promoted SHA range when available.
  • Documentation
    • Updated osdctl promote rhobs docs with the new --latest workflow, examples, and option details.

@openshift-ci-robot openshift-ci-robot added the jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. label Jul 23, 2026
@openshift-ci-robot

openshift-ci-robot commented Jul 23, 2026

Copy link
Copy Markdown

@dustman9000: This pull request references ROSAENG-62441 which is a valid jira issue.

Warning: The referenced jira issue has an invalid target version for the target branch this PR targets: expected the story to target the "5.0.0" version, but no target version was set.

Details

In response to this:

Summary

  • FilterTargets now excludes production targets that have a promotion.subscribe field, since those are auto-promoted by SAPM wave gating and should not be manually pinned
  • Adds saas-mc-rules to the SRE-owned services list (MC rules now has production targets after app-interface !198253)

Context

RHOBS rules saas files now use SAPM wave gating: wave-1 is manually promoted, wave-2/3 auto-promote after post-deploy checks pass and soakDays complete. osdctl promote rhobs needs to only pin wave-1 targets.

The bulk path (promoteAllServices) already skips targets with subscribe: via targetBlockHasSubscribe(). This PR fixes the single-service path (--serviceId) to do the same via the kyaml Lookup API.

Jira: ROSAENG-62441

Test plan

  • go build ./... passes
  • go test ./cmd/promote/rhobs/ ./pkg/promote/ passes
  • osdctl promote rhobs --serviceId saas-hcp-rules --gitHash <sha> only pins wave-1 target (rhobsp01ue1), skips wave-2/3 targets that have subscribe:
  • osdctl promote rhobs --list includes saas-mc-rules

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 openshift-eng/jira-lifecycle-plugin repository.

@coderabbitai

coderabbitai Bot commented Jul 23, 2026

Copy link
Copy Markdown

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

RHOBS promotion now includes saas-mc-rules, filters subscribed production targets, and supports promoting all services to the latest validated rhobs/configuration main commit with a consolidated commit and changelog.

Changes

RHOBS promotion workflow

Layer / File(s) Summary
Target selection and promotion inputs
cmd/promote/rhobs/rhobs.go
Adds saas-mc-rules, restricts targets to rhobs-production, excludes promotion.subscribe targets, and adds --latest validation and wiring.
Latest SHA resolution and bulk orchestration
cmd/promote/rhobs/rhobs.go
Fetches and validates the configuration repository’s main SHA, then uses it for a single bulk promotion operation.
Consolidated commit metadata and documentation
cmd/promote/rhobs/rhobs.go, pkg/promote/service.go, docs/README.md, docs/osdctl_promote_rhobs.md
Generates comparison metadata and an optional changelog, exports FormatCommitMessage, and documents --latest.

Estimated code review effort: 3 (Moderate) | ~20 minutes

Sequence Diagram(s)

sequenceDiagram
  participant User
  participant RHOBSCommand
  participant ConfigurationGit
  participant BulkPromotion
  participant GitCommit
  User->>RHOBSCommand: invoke --latest
  RHOBSCommand->>ConfigurationGit: fetch main and resolve pinned SHA
  ConfigurationGit-->>RHOBSCommand: return validated SHA
  RHOBSCommand->>BulkPromotion: promote services with SHA
  BulkPromotion->>ConfigurationGit: read old-to-new git history
  ConfigurationGit-->>BulkPromotion: return changelog
  BulkPromotion->>GitCommit: create one consolidated promotion commit
Loading

Suggested reviewers: geowa4, zmird-r

🚥 Pre-merge checks | ✅ 14 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (14 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately summarizes the two main changes: skipping SAPM-managed targets and adding the --latest flag for rhobs promotion.
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 No tests were added or renamed in the PR; affected Ginkgo titles are static, descriptive strings without dynamic values.
Test Structure And Quality ✅ Passed No Ginkgo test code was changed in this PR; the diff only touches production code and docs, so the test-structure check is not applicable.
Microshift Test Compatibility ✅ Passed No new Ginkgo e2e tests were added; only CLI/library and docs changed, with no MicroShift-unsupported APIs in added test code.
Single Node Openshift (Sno) Test Compatibility ✅ Passed No new Ginkgo e2e tests were added in this PR; only promote code and docs changed, so SNO-specific test review is not applicable.
Topology-Aware Scheduling Compatibility ✅ Passed PASS: The PR only changes RHOBS promote CLI/docs and a commit-message helper; no deployment manifests, controllers, replicas, affinity, nodeSelectors, or PDBs were added.
Ote Binary Stdout Contract ✅ Passed No stdout writes were added in main/init/TestMain or other setup; the new fmt.Printf/Println calls live inside normal cobra command handlers.
Ipv6 And Disconnected Network Test Compatibility ✅ Passed No new Ginkgo e2e tests were added; the diff only changes promote CLI/docs, with no It/Describe/Context/When or IPv4/public-network test patterns.
No-Weak-Crypto ✅ Passed Touched files add no MD5/SHA1/DES/RC4/ECB/etc.; targeted searches found no crypto imports or secret comparisons. isPinnedSHA only validates hex SHAs.
Container-Privileges ✅ Passed PR only changes Go code and docs; no K8s/container manifest fields like privileged, hostNetwork, or allowPrivilegeEscalation are present.
No-Sensitive-Data-In-Logs ✅ Passed New logs only print service IDs, branch names, local paths, and short hashes; no passwords, tokens, PII, or customer data were added.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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

@openshift-ci
openshift-ci Bot requested review from geowa4 and zmird-r July 23, 2026 17:57
@openshift-ci

openshift-ci Bot commented Jul 23, 2026

Copy link
Copy Markdown
Contributor

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: dustman9000

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 Jul 23, 2026

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@cmd/promote/rhobs/rhobs.go`:
- Around line 111-123: Update the filtering loop in the promotion target flow to
capture and propagate the error returned by kyaml.Lookup("promotion",
"subscribe").Filter(t), returning nil and that error immediately when the lookup
fails; only treat a successful nil subscribeNode as “not subscribed” and append
the target.
🪄 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: Enterprise

Run ID: f7ff544c-9e1b-4bd4-9349-936eb44a8837

📥 Commits

Reviewing files that changed from the base of the PR and between a0d61a1 and 2548fd0.

📒 Files selected for processing (1)
  • cmd/promote/rhobs/rhobs.go

Comment thread cmd/promote/rhobs/rhobs.go
@dustman9000
dustman9000 force-pushed the drow/promote-rhobs-wave-gating branch from 2548fd0 to 9521649 Compare July 23, 2026 20:25
@dustman9000 dustman9000 changed the title ROSAENG-62441: Skip SAPM-managed targets in promote rhobs ROSAENG-62441: Skip SAPM-managed targets and add --latest flag to promote rhobs Jul 23, 2026

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

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 current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@cmd/promote/rhobs/rhobs.go`:
- Around line 151-180: Update findUpstreamRemote and resolveLatestHash to accept
or derive a context with a bounded timeout, and replace each git exec.Command
invocation with exec.CommandContext using that context. Ensure cancellation and
timeout errors are propagated through the existing error paths, while preserving
the current remote discovery, fetch, and hash resolution behavior.
- Line 180: Handle and propagate the error returned by fmt.Printf at
cmd/promote/rhobs/rhobs.go lines 180 and 343, aborting the current flow when
stdout writes fail before any promotion side effects occur. Update the
surrounding functions to return the write error through their existing error
paths.
- Around line 169-176: The git fetch and revision-resolution flow must use the
ref produced by the current fetch rather than a potentially stale
remote-tracking ref. Update the commands around the fetch in the promotion logic
to explicitly fetch into refs/remotes/<remote>/main or resolve FETCH_HEAD, and
add coverage for a remote whose fetch refspec does not map main.
🪄 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: Enterprise

Run ID: 2673b0e3-659e-4a7c-864c-86a8e223e27e

📥 Commits

Reviewing files that changed from the base of the PR and between 2548fd0 and 9521649.

📒 Files selected for processing (1)
  • cmd/promote/rhobs/rhobs.go

Comment thread cmd/promote/rhobs/rhobs.go
Comment thread cmd/promote/rhobs/rhobs.go
Comment thread cmd/promote/rhobs/rhobs.go
@dustman9000
dustman9000 force-pushed the drow/promote-rhobs-wave-gating branch from 9521649 to a4ed3e2 Compare July 23, 2026 20:38

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

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 current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@cmd/promote/rhobs/rhobs.go`:
- Around line 365-368: Update the list-mode incompatibility check in the command
flow around ops.latest so --list rejects an explicitly supplied --latest before
returning. Include ops.latest alongside the existing incompatible options, while
preserving the current validation for non-list promotion operations.
- Around line 223-229: Update the changelog generation around changeLog before
any app-interface worktree mutations: use a context-aware, bounded git command,
validate required inputs and propagate failures instead of silently leaving
changeLog empty, wrapping the command error with promotion context. Ensure
promotion aborts before target mutations when changelog generation fails, while
preserving the existing trimmed git log output on success.
- Around line 156-158: Update the remote-selection loop that checks
“rhobs/configuration” and “(fetch)” to normalize both SSH and HTTPS remote URL
forms, then allow only the expected GitLab host and exact repository path.
Return the remote only after it passes this host/path allow-list, rather than
matching arbitrary URLs containing the repository text.
🪄 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: Enterprise

Run ID: b7f6dd34-ce4a-46c0-a7d9-c8cdeb1a9fc1

📥 Commits

Reviewing files that changed from the base of the PR and between 9521649 and a4ed3e2.

📒 Files selected for processing (2)
  • cmd/promote/rhobs/rhobs.go
  • pkg/promote/service.go

Comment thread cmd/promote/rhobs/rhobs.go Outdated
Comment thread cmd/promote/rhobs/rhobs.go Outdated
Comment thread cmd/promote/rhobs/rhobs.go
@dustman9000
dustman9000 force-pushed the drow/promote-rhobs-wave-gating branch from a4ed3e2 to 086a69c Compare July 23, 2026 21:39

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

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 (3)
cmd/promote/rhobs/rhobs.go (3)

112-126: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Propagate the kyaml.Filter lookup error.

kyaml.Lookup("promotion", "subscribe").Filter(t)'s error is discarded (_). A genuine traversal error (not "path missing") will silently fall through as "not subscribed" and the target may get incorrectly filtered in or out. Return the error instead of ignoring it.

Previously flagged on an earlier revision of this same code and not yet addressed.

As per path instructions, **/*.go files should "Never ignore error returns."

🔧 Proposed fix
-		subscribeNode, _ := kyaml.Lookup("promotion", "subscribe").Filter(t)
+		subscribeNode, err := kyaml.Lookup("promotion", "subscribe").Filter(t)
+		if err != nil {
+			return nil, err
+		}
 		if subscribeNode != nil {
 			continue
 		}
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@cmd/promote/rhobs/rhobs.go` around lines 112 - 126, Update
rhobsPromoteCallbacks.FilterTargets to capture and propagate the error returned
by kyaml.Lookup("promotion", "subscribe").Filter(t) instead of discarding it;
retain the existing nil-node filtering behavior only when the lookup succeeds.

Source: Path instructions


151-192: 🩺 Stability & Availability | 🟠 Major | ⚡ Quick win

Bound the git subprocess calls with a context/timeout.

findUpstreamRemote/resolveLatestHash invoke exec.Command (lines 157, 179, 182) for a network-touching git fetch, with no cancellation or timeout — a hung remote can block the CLI indefinitely. Use exec.CommandContext with a bounded timeout derived from cmd.Context().

Previously flagged on an earlier revision and not yet addressed.

Note: the ast-grep CWE-78 hints on the remote+"/main" argument are false positives here — exec.Command takes each argument as a discrete argv element (no shell is invoked), so string concatenation into a single arg does not enable command injection.

As per path instructions, **/*.go files should use "context.Context for cancellation and timeouts."

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@cmd/promote/rhobs/rhobs.go` around lines 151 - 192, Update findUpstreamRemote
and resolveLatestHash to accept a context.Context and use exec.CommandContext
for every git subprocess, including remote listing, fetch, and rev-parse. Derive
a bounded timeout from the caller’s cmd.Context(), propagate cancellation and
timeout errors, and update all callers to pass that context while preserving the
existing remote-resolution behavior.

Source: Path instructions


190-190: 🩺 Stability & Availability | 🟡 Minor | 💤 Low value

Unchecked fmt.Printf/exec output errors throughout the promotion flow.

All of these fmt.Printf calls (progress/status output) ignore the returned error, including changeLog generation via exec.Command(...).Output() at line 211 for the injection hint noted above (false positive, same reasoning as the fetch/rev-parse calls). This mirrors a previously flagged, not-yet-addressed concern that a closed stdout pipe should abort before promotion side effects run rather than being silently swallowed; the same pattern now also appears at the new --latest print sites (373, 388).

As per path instructions, "Never ignore error returns."

Also applies to: 211-211, 227-227, 235-235, 252-253, 373-373, 388-388

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@cmd/promote/rhobs/rhobs.go` at line 190, Handle every error returned by the
promotion flow’s fmt.Printf calls, including the status sites around fetch and
the --latest output, and propagate or return failures before continuing. Also
check the error from exec.Command(...).Output() used for changeLog generation,
preserving its output only when successful. Ensure closed stdout or command
failures abort the flow before promotion side effects occur.

Source: Path instructions

🧹 Nitpick comments (1)
cmd/promote/rhobs/rhobs.go (1)

151-172: 🔒 Security & Privacy | 🔵 Trivial | 💤 Low value

configRepoURLPatterns matching isn't boundary-anchored.

strings.Contains(line, pattern) matches any URL containing gitlab.cee.redhat.com/rhobs/configuration as a prefix of a longer path (e.g. .../rhobs/configuration-mirror), which would still be treated as the canonical repo. Anchor the match on a path/URL boundary (e.g. require a trailing /, .git, or end-of-string) rather than a bare substring check.

As per path instructions, "Validate at trust boundaries with allow-lists, not deny-lists." This narrows an already-improved allow-list rather than introducing a new gap.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@cmd/promote/rhobs/rhobs.go` around lines 151 - 172, Update
findUpstreamRemote’s configRepoURLPatterns matching so each allowed repository
pattern must end at a valid URL boundary: trailing slash, .git, or
end-of-string. Replace the bare strings.Contains check with boundary-aware
allow-list matching, while preserving fetch-only filtering and returning the
matched remote unchanged.

Source: Path instructions

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@cmd/promote/rhobs/rhobs.go`:
- Around line 242-246: Update the commit message construction around ChangesURL
to detect an empty oldHash before building the GitLab compare link. Preserve the
compare URL when oldHash is non-empty, and use an appropriate non-malformed
fallback when getCurrentProductionHash returns empty so the commit message
remains valid.

---

Duplicate comments:
In `@cmd/promote/rhobs/rhobs.go`:
- Around line 112-126: Update rhobsPromoteCallbacks.FilterTargets to capture and
propagate the error returned by kyaml.Lookup("promotion", "subscribe").Filter(t)
instead of discarding it; retain the existing nil-node filtering behavior only
when the lookup succeeds.
- Around line 151-192: Update findUpstreamRemote and resolveLatestHash to accept
a context.Context and use exec.CommandContext for every git subprocess,
including remote listing, fetch, and rev-parse. Derive a bounded timeout from
the caller’s cmd.Context(), propagate cancellation and timeout errors, and
update all callers to pass that context while preserving the existing
remote-resolution behavior.
- Line 190: Handle every error returned by the promotion flow’s fmt.Printf
calls, including the status sites around fetch and the --latest output, and
propagate or return failures before continuing. Also check the error from
exec.Command(...).Output() used for changeLog generation, preserving its output
only when successful. Ensure closed stdout or command failures abort the flow
before promotion side effects occur.

---

Nitpick comments:
In `@cmd/promote/rhobs/rhobs.go`:
- Around line 151-172: Update findUpstreamRemote’s configRepoURLPatterns
matching so each allowed repository pattern must end at a valid URL boundary:
trailing slash, .git, or end-of-string. Replace the bare strings.Contains check
with boundary-aware allow-list matching, while preserving fetch-only filtering
and returning the matched remote unchanged.
🪄 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: Enterprise

Run ID: d0cf88a8-043f-46c8-a792-c2749640dfe1

📥 Commits

Reviewing files that changed from the base of the PR and between a4ed3e2 and 086a69c.

📒 Files selected for processing (4)
  • cmd/promote/rhobs/rhobs.go
  • docs/README.md
  • docs/osdctl_promote_rhobs.md
  • pkg/promote/service.go
🚧 Files skipped from review as they are similar to previous changes (1)
  • pkg/promote/service.go

Comment thread cmd/promote/rhobs/rhobs.go Outdated
@dustman9000
dustman9000 force-pushed the drow/promote-rhobs-wave-gating branch from 086a69c to 85cc465 Compare July 23, 2026 23:11
Comment thread pkg/promote/service.go Outdated
@dustman9000
dustman9000 force-pushed the drow/promote-rhobs-wave-gating branch from 85cc465 to f456c6c Compare July 24, 2026 00:56
@dustman9000

Copy link
Copy Markdown
Member Author

/hold

@openshift-ci openshift-ci Bot added the do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. label Jul 24, 2026
…mote rhobs

- FilterTargets now excludes production targets that have a
  promotion.subscribe field, since those are auto-promoted by SAPM
  wave gating and should not be manually pinned.
- Bulk promote skips saas files that don't reference
  rhobs/configuration (e.g. synthetics-agent, synthetics-api).
- Add saas-mc-rules to the SRE-owned services list.
- Add --latest flag that fetches and resolves main from the local
  rhobs/configuration checkout, auto-detecting the upstream remote
  by URL (restricted to gitlab.cee.redhat.com/rhobs/configuration).
- Bulk promote now produces a single commit with compare link and
  commit log, matching the single-service path format.
@dustman9000
dustman9000 force-pushed the drow/promote-rhobs-wave-gating branch from f456c6c to 964cf7d Compare July 24, 2026 16:52
@openshift-ci

openshift-ci Bot commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

@dustman9000: all tests passed!

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. do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. jira/valid-reference Indicates that this PR references a valid Jira ticket of any type.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants