Skip to content

prowgen: remove .config.prowgen support#21

Open
Prucek wants to merge 107 commits into
masterfrom
remove-prowgen-config-v2
Open

prowgen: remove .config.prowgen support#21
Prucek wants to merge 107 commits into
masterfrom
remove-prowgen-config-v2

Conversation

@Prucek
Copy link
Copy Markdown
Owner

@Prucek Prucek commented May 13, 2026

Summary

  • Remove deprecated .config.prowgen configuration file support
  • Migrate related configuration to main ci-operator config files
  • Clean up prowgen logic that processed separate config files

🤖 Generated with Claude Code

deepsm007 and others added 30 commits April 20, 2026 21:44
Signed-off-by: Nikolaos Moraitis <nmoraiti@redhat.com>
Add skip_operator_presubmits to the prowgen section of ci-operator
config, so it can be set directly instead of requiring a
.config.prowgen file. This is simpler than the .config.prowgen
approach which requires branch+variant matching, since each
ci-operator config already represents a specific branch and variant.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
rh-pre-commit.version: 2.3.2
rh-pre-commit.check-secrets: ENABLED
…y-type-defaults

slack-bot add optional Activity Type to Slack modals and Jira filing
The kubeconfig and kubeAdminPassword were previously written directly
to the EphemeralCluster status, exposing sensitive credentials in a
resource that may be logged or cached. Instead, create a credentials
Secret in the same namespace as the EphemeralCluster and reference it
via a new status.secretRef field. The Secret is owned by the
EphemeralCluster for automatic cleanup.

Assisted-by: Claude claude-opus-4-6
Signed-off-by: amisstea <amisstea@redhat.com>
…er_skill

added Claude skill to maange vault group membership
Add support-request handling for long forum threads by creating DPTP Jira tickets, posting thread guidance, and closing linked tickets from :closed: reactions with replica-safe locking and transition-aware Jira updates.
Co-authored with Cursor.

Signed-off-by: Jakub Guzik <jguzik@redhat.com>
…rom-status

DPTP-3787: Resolve QCI digest post-mirror via oc image info to pin spec.from in quay ImageStreams
Signed-off-by: Jakub Guzik <jguzik@redhat.com>
…shooting-skill

add cluster pool troubleshooting skill for hosted-mgmt
prowgen: allow ci-operator config to skip operator presubmits
feat(slack-bot): automate support-request Jira workflow
Add enable_secrets_store_csi_driver to the prowgen section of
ci-operator config, so it can be set directly instead of requiring
a .config.prowgen file. This is the second step toward deprecating
.config.prowgen.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
prowgen: allow ci-operator config to enable CSI secrets store
Store ephemeral cluster credentials in a Secret instead of the status
When build_if_affected is enabled, users can now add /image directives
in commit messages to force-build specific images regardless of code
change detection. The directive must start at the beginning of a line.

Supported syntax:
- /image <name1> <name2> ... - force specific images
- /image all - force all configured images

Image names are validated against images.items[].to in ci-operator
config. Unknown names are warned and ignored. Forced images are unioned
with auto-detected affected images.

Signed-off-by: Jakub Guzik <jguzik@redhat.com>
* build(deps): bump sigs.k8s.io/prow to 5aca44b7f08f

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: update test fixtures for prow plugin config changes

Remove commandHelpLink from approve plugin serialization and add
release_note default to match new prow version behavior.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: add release_note default to cluster-init integration fixture

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Add private and expose fields to the prowgen section of ci-operator
config. This allows repos to control job visibility directly in their
ci-operator config instead of requiring a .config.prowgen file.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
prowgen: allow ci-operator config to set private and expose
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
image-detector: support /image commit directive to force image builds
Today there was a Deck outage, when both of two Pods restarted their
'deck' containers simultaneously at 22:23, causing:

  Application is not available

errors to https://prow.ci.openshift.org/ users.  Timestamps and exit 0:

  $ oc -n ci get -l component=deck -o json pods | jq -r '.items[].status.containerStatuses[] | select(.restartCount > 0) | {name, restartCount, lastState}'
  {
    "name": "deck",
    "restartCount": 1,
    "lastState": {
      "terminated": {
        "containerID": "cri-o://21786efafb65fd5b67e72eb2a1a91405b182d3b20daeb549980217210bf0e22a",
        "exitCode": 0,
        "finishedAt": "2026-04-23T22:23:37Z",
        "reason": "Completed",
        "startedAt": "2026-04-23T20:04:03Z"
      }
    }
  }
  {
    "name": "deck",
    "restartCount": 1,
    "lastState": {
      "terminated": {
        "containerID": "cri-o://7af2f63b995729d1e8e64b1776a6a2aa3439076e9d55616182ac61b1c64fe855",
        "exitCode": 0,
        "finishedAt": "2026-04-23T22:23:58Z",
        "reason": "Completed",
        "startedAt": "2026-04-23T19:28:51Z"
      }
    }
  }

The container exits were because of Kubeconfig changes:

  $ oc -n ci logs -c deck --previous deck-54c8d55b65-6fxcn | tail -n16 | head -n2
  {"component":"deck","file":"sigs.k8s.io/prow/cmd/deck/main.go:392","func":"main.main.func2","level":"info","msg":"Kubeconfig changed, exiting to trigger a restart","severity":"info","time":"2026-04-23T22:23:36Z"}
  {"component":"deck","file":"sigs.k8s.io/prow/pkg/interrupts/interrupts.go:63","func":"sigs.k8s.io/prow/pkg/interrupts.handleInterrupt","level":"info","msg":"Received signal.","severity":"info","signal":2,"time":"2026-04-23T22:23:36Z"}

The Secret update was this ci-secret-bootstrapper in [1]:

  {"cluster":"app.ci","component":"ci-secret-bootstrap","file":"/go/src/github.com/openshift/ci-tools/cmd/ci-secret-bootstrap/main.go:815","func":"main.updateSecrets","level":"debug","msg":"secret updated","name":"deck","namespace":"ci","severity":"debug","time":"2026-04-23T22:23:02Z","type":"Opaque"}

This commit adds more logs to that "secret updated" entry, to make it
easier for us to figure out which change triggered the next bump, so
we can decide if it's appropriate, and the kind of thing we'll accept
a few minutes of Deck outage over, or if it's surprising churn.

[1]: https://deck-internal-ci.apps.ci.l2s4.p1.openshiftapps.com/view/gs/origin-ci-private/logs/periodic-ci-secret-bootstrap/2047432829557542912
danilo-gemoli and others added 30 commits May 6, 2026 16:29
…r-profiles-config/profiles-diff

check-cluster-profiles-config: Diff with pointers
Enable possibility to use capabilities in images jobs
prowgen: allow per-test slack reporter config in ci-operator config
coderabbit: add high-level summary instructions
Signed-off-by: mehabhalodiya <mehabhalodiya@gmail.com>
…op notifications

pj-rehearse was vulnerable to memory spikes (50+ GB) under load because
it handled an unlimited number of webhook requests concurrently, each
loading full CI/Prow configurations.

This commit introduces three features to mitigate the problem:

1. Handler dispatcher with bounded concurrency and queuing:
   - Configurable max concurrent handlers (default 5), max queued (50),
     queue timeout (5m), and execution timeout (15m) via CLI flags.
   - Requests that exceed the queue capacity or wait too long are dropped
     with a GitHub comment notifying the user.
   - Separate Prometheus metrics for in-flight handlers, queued requests,
     drops (by reason), and execution timeouts.

2. Changed-files prefilter (implements DPTP-2888):
   - Before loading full configs, diffs the PR against the base branch to
     check if any changed files fall under ci-operator/config,
     ci-operator/jobs, core-services/prow/02_config, or
     ci-operator/step-registry.
   - If no rehearsal-relevant paths changed, skips DetermineAffectedJobs
     entirely, avoiding the expensive config load.

3. Merged PR event handlers into a single registration:
   - handlePullRequestCreation and handleNewPush are now dispatched as
     one unit, preventing a single PR event from consuming two dispatcher
     slots.

Co-authored-by Cursor
Signed-off-by: Jakub Guzik <jguzik@redhat.com>
…ale-qe

Add new profile: azure-perfscale-qe
pj-rehearse: add concurrency control, changed-files prefilter, and drop notifications
…ate-with-cluster-profile-set

Integrate BYOIP with Cluster Profile Sets
The handler processed all IssueCommentEvent actions (created, edited,
deleted), which meant editing a comment containing a /payload-job command
would unintentionally re-trigger the payload job.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The handler processed all IssueCommentEvent actions (created, edited,
deleted), which meant editing a comment containing a /testwith command
would unintentionally re-trigger the job.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The handler processed all IssueCommentEvent actions (created, edited,
deleted), which meant editing a comment containing a /validate-backports
command would unintentionally re-trigger the verification.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The handler processed all IssueCommentEvent actions (created, edited,
deleted), which meant editing a comment containing a /pipeline command
would unintentionally re-trigger the pipeline. Also avoids taking the
mutex lock for events that will be ignored.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…cate-periodics

NO-JIRA: remove release-release template
…ift#5166)

* prowgen: don't fill in default report_template for inline slack config

When report_template is not specified in per-test reporter_config,
don't fill in the default template. This keeps the behavior consistent
with the .config.prowgen path and avoids unnecessary diffs during
migration. Prow applies its own default template when none is set.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* prowgen: support inline slack reporter config for images jobs

Add SlackReporterConfig field to ImageConfiguration so that images
presubmit/postsubmit jobs can receive inline slack reporter config,
removing the need for .config.prowgen fallback for images jobs.

Also remove unused DefaultSlackReporterReportTemplate.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* prowgen: update generated files

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Ignore non-created issue comment events in prow plugins
…e-local-reference-policy

resolve digest-only tags in ResolvePullSpec for PreserveOriginal imports
…-checkconfig/cps-ignore-list

ci-operator-checkconfig: Add cluster profile sets allowlist
…ster-init-breaking-changes

Remove cluster-init from `check-breaking-changes`
Fix issue DPTP-4756 add STS hub-account role chaining for AWS cluster profiles
* prowgen: compute sparse checkout files for image builds

Replace skipCloning() with sparseCheckoutFiles() that computes the
minimal set of files needed for image builds: .ci-operator.yaml (if
from_repository is set) plus all Dockerfile paths from image configs.

When sparse checkout files are available, set them on DecorationConfig
instead of skipping cloning entirely. This allows prow to checkout only
the files needed for image builds, significantly reducing clone time
for large repositories.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* rehearse: clear sparse checkout from rehearsal DecorationConfig

When a rehearsal job's primary ref (openshift/release) differs from the
target repo, CompletePrimaryRefs propagates SparseCheckoutFiles from
DecorationConfig to the extra ref (the original repo). However, the
DecorationConfig.SparseCheckoutFiles remains set and prow applies it
to the primary ref too, causing the release repo to be sparse-checked
out — which breaks the clone with "unrelated histories" errors.

Clear SparseCheckoutFiles from DecorationConfig after setting up the
extra ref, since the files are already on the extra ref via
CompletePrimaryRefs.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* steps/source: clear sparse checkout before src image build

When sparse checkout is active, clonerefs inside the src image build
only checks out Dockerfiles, leaving the repo without source code.
This breaks binary_build_commands (e.g. make all) and test steps that
need the full source tree.

Clear SparseCheckoutFiles from all refs before passing them to
clonerefs in createBuild(), ensuring the src image always gets a full
clone regardless of job-level sparse checkout settings.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* prowgen: propagate sparse checkout to periodic extra_refs

Periodic jobs use extra_refs[0] as their primary ref instead of a
top-level Refs field. DecorationConfig.SparseCheckoutFiles was not
being propagated to this ref, so periodic jobs never used sparse
checkout even when configured.

Copy SparseCheckoutFiles from DecorationConfig to the periodic's
extra_refs[0] before appending it.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
All features previously configured via .config.prowgen files are now
available inline in ci-operator configuration YAML via the `prowgen:`
field (private, expose, disable_rehearsals, skip_operator_presubmits,
enable_secrets_store_csi_driver) and per-test `reporter_config` /
`disable_rehearsal` fields.

This removes:
- config.Prowgen struct and all associated types/functions from
  pkg/config/load.go (Rehearsals, SlackReporterConfig,
  SkipOperatorPresubmits, LoadProwgenConfig, validateProwgenConfig,
  MergeDefaults, GetSlackReporterConfigForJobName, SkipPresubmits)
- ProwgenInfo.Config field — ProwgenInfo now only contains Metadata
- .config.prowgen loading from ci-operator-prowgen and
  image-graph-generator
- .config.prowgen skip from check-gh-automation

Integration test fixtures migrated from .config.prowgen to inline
ci-operator config equivalents.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
After removing .config.prowgen support, ProwgenInfo was an empty wrapper
around cioperatorapi.Metadata. Replace all usages with *cioperatorapi.Metadata.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.