prowgen: use preset for registry pull credentials volume#4994
prowgen: use preset for registry pull credentials volume#4994petr-muller wants to merge 1 commit intoopenshift:mainfrom
Conversation
|
Pipeline controller notification For optional jobs, comment This repository is configured in: automatic mode |
|
Skipping CI for Draft Pull Request. |
|
[APPROVALNOTIFIER] This PR is NOT APPROVED This pull-request has been approved by: petr-muller The full list of commands accepted by this bot can be found here. DetailsNeeds approval from an approver in each of these files:Approvers can indicate their approval by writing |
|
Companion preset definition PR: openshift/release#75830 |
WalkthroughThis PR adds support for a preset label that handles CI operator image pulling, removes explicit pull-secret volume mounts from pod specs, and updates test fixtures accordingly. Core changes include a new constant definition, updates to the job base builder to include the preset label by default, and removal of pull-secret configuration from pod spec generation. Changes
Estimated code review effort🎯 2 (Simple) | ⏱️ ~12 minutes 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
Move the pull-secret volume and volumeMount from the hardcoded defaultPodSpec to a Prow preset (preset-ci-operator-image-pull). This is a proof of concept for using compositional Prow presets to deduplicate the ~28 lines of boilerplate volumes/mounts that are inlined into every one of the 126K+ generated Prowjob definitions. The preset is defined in openshift/release and matched via a new label added to all prowgen-generated jobs. The --image-import-pull-secret arg remains inline since presets cannot inject container args. Requires the corresponding preset definition in openshift/release: https://github.com/openshift/release/pull/XXXXX Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Regenerate all Prowjob definitions using the modified prowgen that uses the preset-ci-operator-image-pull Prow preset instead of inlining the pull-secret volume and volumeMount in every job PodSpec. Per-job changes: - Added label: preset-ci-operator-image-pull: "true" - Removed: pull-secret volumeMount (3 lines) - Removed: pull-secret volume definition (3 lines) - Net: -5 lines per job 25,666 files changed, -633K lines net reduction. Depends on: - Preset definition: openshift#75830 - Prowgen change: openshift/ci-tools#4994 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
62ec57c to
5db89a5
Compare
There was a problem hiding this comment.
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
pkg/prowgen/podspec.go (1)
54-68:⚠️ Potential issue | 🟡 MinorEnsure the companion Prow preset is deployed before rolling out this change.
This change removes the inline "pull-secret" volume from all generated ProwJob podspecs and delegates it to the
preset-ci-operator-image-pullProw preset. The preset is now applied via a label on all generated jobs, but if the preset is not yet deployed in the Prow environment, jobs will fail with missing mount errors. Verify that the companion preset definition in openshift/release is deployed and active before this change rolls out.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@pkg/prowgen/podspec.go` around lines 54 - 68, The generated PodSpec no longer includes the inline "pull-secret" volume and now relies on the "preset-ci-operator-image-pull" preset, which can break jobs if the preset isn't deployed; to be safe, restore the inline pull-secret volume in pkg/prowgen/podspec.go by adding a Volume entry named "pull-secret" with a SecretVolumeSource pointing to the pull-secret Secret (the same name used by your mounts) alongside the existing Volumes (e.g., near the "result-aggregator" and "manifest-tool-local-pusher" entries) so jobs keep working until the companion preset is confirmed deployed.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Outside diff comments:
In `@pkg/prowgen/podspec.go`:
- Around line 54-68: The generated PodSpec no longer includes the inline
"pull-secret" volume and now relies on the "preset-ci-operator-image-pull"
preset, which can break jobs if the preset isn't deployed; to be safe, restore
the inline pull-secret volume in pkg/prowgen/podspec.go by adding a Volume entry
named "pull-secret" with a SecretVolumeSource pointing to the pull-secret Secret
(the same name used by your mounts) alongside the existing Volumes (e.g., near
the "result-aggregator" and "manifest-tool-local-pusher" entries) so jobs keep
working until the companion preset is confirmed deployed.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Repository: openshift/coderabbit/.coderabbit.yaml
Review profile: CHILL
Plan: Pro
Run ID: a056f896-8c6e-457c-b1ee-94a2e86b6534
📒 Files selected for processing (137)
cmd/ci-operator-prowgen/testdata/zz_fixture_postsubmit_TestFromCIOperatorConfigToProwYaml_Custom_test_timeout.yamlcmd/ci-operator-prowgen/testdata/zz_fixture_postsubmit_TestFromCIOperatorConfigToProwYaml_Input_is_YAML_and_it_is_correctly_processed.yamlcmd/ci-operator-prowgen/testdata/zz_fixture_postsubmit_TestFromCIOperatorConfigToProwYaml_Using_a_variant_config__one_test_and_images__one_existing_job._Expect_one_presubmit__pre_post_submit_images_jobs._Existing_job_should_not_be_changed..yamlcmd/ci-operator-prowgen/testdata/zz_fixture_postsubmit_TestFromCIOperatorConfigToProwYaml_one_test_and_images__no_previous_jobs._Expect_test_presubmit__pre_post_submit_images_jobs.yamlcmd/ci-operator-prowgen/testdata/zz_fixture_presubmit_TestFromCIOperatorConfigToProwYaml_Custom_test_timeout.yamlcmd/ci-operator-prowgen/testdata/zz_fixture_presubmit_TestFromCIOperatorConfigToProwYaml_Input_is_YAML_and_it_is_correctly_processed.yamlcmd/ci-operator-prowgen/testdata/zz_fixture_presubmit_TestFromCIOperatorConfigToProwYaml_Using_a_variant_config__one_test_and_images__one_existing_job._Expect_one_presubmit__pre_post_submit_images_jobs._Existing_job_should_not_be_changed..yamlcmd/ci-operator-prowgen/testdata/zz_fixture_presubmit_TestFromCIOperatorConfigToProwYaml_one_test_and_images__no_previous_jobs._Expect_test_presubmit__pre_post_submit_images_jobs.yamlpkg/api/constant.gopkg/prowgen/jobbase.gopkg/prowgen/podspec.gopkg/prowgen/testdata/zz_fixture_TestCIPullSecret_secret_is_added.yamlpkg/prowgen/testdata/zz_fixture_TestClaims_secret_is_added.yamlpkg/prowgen/testdata/zz_fixture_TestCustomHashInput_custom_hash_input_is_added.yamlpkg/prowgen/testdata/zz_fixture_TestCustomHashInput_custom_hash_inputs_are_added.yamlpkg/prowgen/testdata/zz_fixture_TestGSMConfig_add_gsm_config_volume_and_mount.yamlpkg/prowgen/testdata/zz_fixture_TestGenerateJobBase_config_variant.yamlpkg/prowgen/testdata/zz_fixture_TestGenerateJobBase_expose_job_for_private_repos_with_public_results.yamlpkg/prowgen/testdata/zz_fixture_TestGenerateJobBase_expose_option_set_but_not_private.yamlpkg/prowgen/testdata/zz_fixture_TestGenerateJobBase_hidden_job_for_private_repos.yamlpkg/prowgen/testdata/zz_fixture_TestGenerateJobBase_no_special_options.yamlpkg/prowgen/testdata/zz_fixture_TestGenerateJobBase_path_alias.yamlpkg/prowgen/testdata/zz_fixture_TestGenerateJobBase_rehearsable.yamlpkg/prowgen/testdata/zz_fixture_TestGenerateJobs_Promotion_configuration_causes_promote_job.yamlpkg/prowgen/testdata/zz_fixture_TestGenerateJobs_Promotion_configuration_causes_promote_job_with_unique_targets.yamlpkg/prowgen/testdata/zz_fixture_TestGenerateJobs_cluster_label_for_periodic.yamlpkg/prowgen/testdata/zz_fixture_TestGenerateJobs_cluster_label_for_postsubmit.yamlpkg/prowgen/testdata/zz_fixture_TestGenerateJobs_cluster_label_for_presubmit.yamlpkg/prowgen/testdata/zz_fixture_TestGenerateJobs_disabled_rehearsals_at_job_level.yamlpkg/prowgen/testdata/zz_fixture_TestGenerateJobs_disabled_rehearsals_at_repo_level.yamlpkg/prowgen/testdata/zz_fixture_TestGenerateJobs_images_job_is_configured_for_slack_reporting.yamlpkg/prowgen/testdata/zz_fixture_TestGenerateJobs_kvm_label.yamlpkg/prowgen/testdata/zz_fixture_TestGenerateJobs_multiarch_postsubmit_images.yamlpkg/prowgen/testdata/zz_fixture_TestGenerateJobs_multiarch_test_job.yamlpkg/prowgen/testdata/zz_fixture_TestGenerateJobs_no_Promotion_configuration_has_no_branch_job.yamlpkg/prowgen/testdata/zz_fixture_TestGenerateJobs_operator_section_creates_bundle_with_capabilities.yamlpkg/prowgen/testdata/zz_fixture_TestGenerateJobs_operator_section_creates_ci_index_my_bundle_presubmit_job.yamlpkg/prowgen/testdata/zz_fixture_TestGenerateJobs_operator_section_creates_ci_index_presubmit_job.yamlpkg/prowgen/testdata/zz_fixture_TestGenerateJobs_operator_section_without_index_creates_ci_index_my_bundle_presubmit_job.yamlpkg/prowgen/testdata/zz_fixture_TestGenerateJobs_periodic_presubmit_with_capabilities.yamlpkg/prowgen/testdata/zz_fixture_TestGenerateJobs_periodic_with_capabilities.yamlpkg/prowgen/testdata/zz_fixture_TestGenerateJobs_periodic_with_presubmit.yamlpkg/prowgen/testdata/zz_fixture_TestGenerateJobs_promotion_postsubmit_and_periodic_.yamlpkg/prowgen/testdata/zz_fixture_TestGenerateJobs_sharded_presubmit.yamlpkg/prowgen/testdata/zz_fixture_TestGenerateJobs_template_test.yamlpkg/prowgen/testdata/zz_fixture_TestGenerateJobs_two_tests_and_empty_Images_so_only_two_test_presubmits_are_generated.yamlpkg/prowgen/testdata/zz_fixture_TestGenerateJobs_two_tests_and_empty_Images_with_one_test_configured_as_a_postsubmit.yamlpkg/prowgen/testdata/zz_fixture_TestGenerateJobs_two_tests_and_nonempty_Images_so_two_test_presubmits_and_images_pre_postsubmits_are_generated_.yamlpkg/prowgen/testdata/zz_fixture_TestGeneratePeriodicForTest_periodic_for_a_test_in_a_variant_config.yamlpkg/prowgen/testdata/zz_fixture_TestGeneratePeriodicForTest_periodic_for_a_test_with_retry.yamlpkg/prowgen/testdata/zz_fixture_TestGeneratePeriodicForTest_periodic_for_standard_test.yamlpkg/prowgen/testdata/zz_fixture_TestGeneratePeriodicForTest_periodic_using_interval.yamlpkg/prowgen/testdata/zz_fixture_TestGeneratePeriodicForTest_periodic_using_minimum_interval.yamlpkg/prowgen/testdata/zz_fixture_TestGeneratePeriodicForTest_periodic_with_capabilities.yamlpkg/prowgen/testdata/zz_fixture_TestGeneratePeriodicForTest_periodic_with_disabled_rehearsal.yamlpkg/prowgen/testdata/zz_fixture_TestGeneratePostSubmitForTest_Lowercase_org_repo_and_branch.yamlpkg/prowgen/testdata/zz_fixture_TestGeneratePostSubmitForTest_Uppercase_org__repo_and_branch.yamlpkg/prowgen/testdata/zz_fixture_TestGeneratePostSubmitForTest_postsubmit_with_capabilities.yamlpkg/prowgen/testdata/zz_fixture_TestGeneratePostSubmitForTest_postsubmit_with_run_if_changed.yamlpkg/prowgen/testdata/zz_fixture_TestGeneratePostSubmitForTest_postsubmit_with_skip_if_only_changed.yamlpkg/prowgen/testdata/zz_fixture_TestGeneratePresubmitForTest_capabilities_added.yamlpkg/prowgen/testdata/zz_fixture_TestGeneratePresubmitForTest_optional_presubmit.yamlpkg/prowgen/testdata/zz_fixture_TestGeneratePresubmitForTest_presubmit_for_a_test_in_a_variant_config.yamlpkg/prowgen/testdata/zz_fixture_TestGeneratePresubmitForTest_presubmit_for_standard_test.yamlpkg/prowgen/testdata/zz_fixture_TestGeneratePresubmitForTest_presubmit_with_always_run_but_optional_true.yamlpkg/prowgen/testdata/zz_fixture_TestGeneratePresubmitForTest_presubmit_with_always_run_but_pipeline_run_if_changed_set.yamlpkg/prowgen/testdata/zz_fixture_TestGeneratePresubmitForTest_presubmit_with_always_run_but_pipeline_skip_if_only_changed_set.yamlpkg/prowgen/testdata/zz_fixture_TestGeneratePresubmitForTest_presubmit_with_always_run_but_run_if_changed_set.yamlpkg/prowgen/testdata/zz_fixture_TestGeneratePresubmitForTest_presubmit_with_always_run_false.yamlpkg/prowgen/testdata/zz_fixture_TestGeneratePresubmitForTest_presubmit_with_always_run_false_and_pipeline_run_if_changed.yamlpkg/prowgen/testdata/zz_fixture_TestGeneratePresubmitForTest_presubmit_with_always_run_false_and_pipeline_skip_if_only_changed.yamlpkg/prowgen/testdata/zz_fixture_TestGeneratePresubmitForTest_presubmit_with_run_if_changed.yamlpkg/prowgen/testdata/zz_fixture_TestGeneratePresubmitForTest_presubmit_with_skip_if_only_changed.yamlpkg/prowgen/testdata/zz_fixture_TestGeneratePresubmitForTest_rehearsal_disabled.yamlpkg/prowgen/testdata/zz_fixture_TestGitHubToken_podspec_for_private_repo__reusing_Prow_s_volume_with_credentials.yamlpkg/prowgen/testdata/zz_fixture_TestGitHubToken_podspec_for_private_repo_without_reusing_Prow_s_volume_with_credentials.yamlpkg/prowgen/testdata/zz_fixture_TestInjectTestFrom_inject_coordinates_with_variant.yamlpkg/prowgen/testdata/zz_fixture_TestInjectTestFrom_inject_coordinates_without_variant.yamlpkg/prowgen/testdata/zz_fixture_TestLeaseClient_secret_is_added.yamlpkg/prowgen/testdata/zz_fixture_TestMiscellaneous_Cluster.yamlpkg/prowgen/testdata/zz_fixture_TestMiscellaneous_PathAlias.yamlpkg/prowgen/testdata/zz_fixture_TestMiscellaneous_Rehearsable.yamlpkg/prowgen/testdata/zz_fixture_TestMiscellaneous_TestName.yamlpkg/prowgen/testdata/zz_fixture_TestMiscellaneous_WithLabel.yamlpkg/prowgen/testdata/zz_fixture_TestNewCiOperatorPodSpecGenerator_defaults_repo.yamlpkg/prowgen/testdata/zz_fixture_TestNewCiOperatorPodSpecGenerator_no_parameter_is_added_when_variant_is_empty.yamlpkg/prowgen/testdata/zz_fixture_TestNewCiOperatorPodSpecGenerator_parameter_is_added_for_variant.yamlpkg/prowgen/testdata/zz_fixture_TestNewProwJobBaseBuilderForTest_OpenshiftAnsibleClusterTestConfiguration.yamlpkg/prowgen/testdata/zz_fixture_TestNewProwJobBaseBuilderForTest_OpenshiftAnsibleCustomClusterTestConfiguration.yamlpkg/prowgen/testdata/zz_fixture_TestNewProwJobBaseBuilderForTest_OpenshiftInstallerClusterTestConfiguration.yamlpkg/prowgen/testdata/zz_fixture_TestNewProwJobBaseBuilderForTest_OpenshiftInstallerCustomTestImageClusterTestConfiguration.yamlpkg/prowgen/testdata/zz_fixture_TestNewProwJobBaseBuilderForTest_OpenshiftInstallerUPIClusterTestConfiguration.yamlpkg/prowgen/testdata/zz_fixture_TestNewProwJobBaseBuilderForTest_job_excluded_by_patterns_should_not_have_slack_reporter_config.yamlpkg/prowgen/testdata/zz_fixture_TestNewProwJobBaseBuilderForTest_literal_multi_stage_test.yamlpkg/prowgen/testdata/zz_fixture_TestNewProwJobBaseBuilderForTest_multi_stage_test.yamlpkg/prowgen/testdata/zz_fixture_TestNewProwJobBaseBuilderForTest_multi_stage_test_with_CSI_enabled.yamlpkg/prowgen/testdata/zz_fixture_TestNewProwJobBaseBuilderForTest_multi_stage_test_with_claim.yamlpkg/prowgen/testdata/zz_fixture_TestNewProwJobBaseBuilderForTest_multi_stage_test_with_cluster_profile.yamlpkg/prowgen/testdata/zz_fixture_TestNewProwJobBaseBuilderForTest_multi_stage_test_with_releases.yamlpkg/prowgen/testdata/zz_fixture_TestNewProwJobBaseBuilderForTest_simple_container_based_test.yamlpkg/prowgen/testdata/zz_fixture_TestNewProwJobBaseBuilderForTest_simple_container_based_test_with_cluster.yamlpkg/prowgen/testdata/zz_fixture_TestNewProwJobBaseBuilderForTest_simple_container_based_test_with_secret.yamlpkg/prowgen/testdata/zz_fixture_TestNewProwJobBaseBuilderForTest_simple_container_based_test_with_secrets.yamlpkg/prowgen/testdata/zz_fixture_TestNewProwJobBaseBuilderForTest_simple_container_based_test_with_timeout.yamlpkg/prowgen/testdata/zz_fixture_TestNewProwJobBaseBuilderForTest_simple_container_based_test_with_timeout_and_no_decoration.yamlpkg/prowgen/testdata/zz_fixture_TestNewProwJobBaseBuilderForTest_simple_test_with_CSI_enabled.yamlpkg/prowgen/testdata/zz_fixture_TestNewProwJobBaseBuilderForTest_simple_with_slack_reporter_config.yamlpkg/prowgen/testdata/zz_fixture_TestPromotion_secret_and_parameters_are_added.yamlpkg/prowgen/testdata/zz_fixture_TestProwJobBaseBuilder_default_job_without_further_configuration.yamlpkg/prowgen/testdata/zz_fixture_TestProwJobBaseBuilder_default_job_without_further_configuration__including_podspec.yamlpkg/prowgen/testdata/zz_fixture_TestProwJobBaseBuilder_job_with_a_buildroot_in_of_openshift_release_main__does_not_have_no_builds__label.yamlpkg/prowgen/testdata/zz_fixture_TestProwJobBaseBuilder_job_with_a_variant.yamlpkg/prowgen/testdata/zz_fixture_TestProwJobBaseBuilder_job_with_a_variant__including_podspec.yamlpkg/prowgen/testdata/zz_fixture_TestProwJobBaseBuilder_job_with_binary_build_in_openshift_release_main__does_not_have_no_builds__label.yamlpkg/prowgen/testdata/zz_fixture_TestProwJobBaseBuilder_job_with_configured_prefix.yamlpkg/prowgen/testdata/zz_fixture_TestProwJobBaseBuilder_job_with_image_builds_in_of_openshift_release_main__does_not_have_no_builds__label.yamlpkg/prowgen/testdata/zz_fixture_TestProwJobBaseBuilder_job_with_latest_release_that_is_a_candidate__has_job_release__label.yamlpkg/prowgen/testdata/zz_fixture_TestProwJobBaseBuilder_job_with_latest_release_that_is_not_a_candidate__does_not_have_job_release__label.yamlpkg/prowgen/testdata/zz_fixture_TestProwJobBaseBuilder_job_with_no_builds_in_openshift_release_main__does_have_no_builds__label.yamlpkg/prowgen/testdata/zz_fixture_TestProwJobBaseBuilder_job_with_no_builds_outside_of_openshift_release_main__does_not_have_no_builds__label.yamlpkg/prowgen/testdata/zz_fixture_TestProwJobBaseBuilder_job_with_not_a_latest_release_that_is_a_candidate__does_not_have_job_release__label.yamlpkg/prowgen/testdata/zz_fixture_TestProwJobBaseBuilder_job_with_test_binary_build_in_of_openshift_release_main__does_not_have_no_builds__label.yamlpkg/prowgen/testdata/zz_fixture_TestProwJobBaseBuilder_private_job_with_cloning__including_podspec.yamlpkg/prowgen/testdata/zz_fixture_TestProwJobBaseBuilder_private_job_without_cloning__including_podspec.yamlpkg/prowgen/testdata/zz_fixture_TestReleaseInitial_add_release_initial.yamlpkg/prowgen/testdata/zz_fixture_TestReleaseLatest_add_release_latest.yamlpkg/prowgen/testdata/zz_fixture_TestReleaseRpms_envvar_additional_envvar_generated_for_template.yamlpkg/prowgen/testdata/zz_fixture_TestSecrets_empty_list_is_a_nop.yamlpkg/prowgen/testdata/zz_fixture_TestSecrets_multiple_secrets.yamlpkg/prowgen/testdata/zz_fixture_TestSecrets_one_secret.yamlpkg/prowgen/testdata/zz_fixture_TestTargetAdditionalSuffix_target_additional_suffix_is_added.yamlpkg/prowgen/testdata/zz_fixture_TestTargets_multiple_targets.yamlpkg/prowgen/testdata/zz_fixture_TestTargets_single_target.yamlpkg/prowgen/testdata/zz_fixture_TestTemplate_different_template_with_command.yamlpkg/prowgen/testdata/zz_fixture_TestTemplate_template_with_a_custom_test_image.yamlpkg/prowgen/testdata/zz_fixture_TestTemplate_template_with_command.yamlpkg/prowgen/testdata/zz_fixture_TestTemplate_template_with_different_command.yaml
💤 Files with no reviewable changes (27)
- pkg/prowgen/testdata/zz_fixture_TestPromotion_secret_and_parameters_are_added.yaml
- pkg/prowgen/testdata/zz_fixture_TestNewCiOperatorPodSpecGenerator_parameter_is_added_for_variant.yaml
- pkg/prowgen/testdata/zz_fixture_TestReleaseInitial_add_release_initial.yaml
- pkg/prowgen/testdata/zz_fixture_TestClaims_secret_is_added.yaml
- pkg/prowgen/testdata/zz_fixture_TestTemplate_different_template_with_command.yaml
- pkg/prowgen/testdata/zz_fixture_TestInjectTestFrom_inject_coordinates_without_variant.yaml
- pkg/prowgen/testdata/zz_fixture_TestNewCiOperatorPodSpecGenerator_no_parameter_is_added_when_variant_is_empty.yaml
- pkg/prowgen/testdata/zz_fixture_TestTargets_single_target.yaml
- pkg/prowgen/testdata/zz_fixture_TestCIPullSecret_secret_is_added.yaml
- pkg/prowgen/testdata/zz_fixture_TestReleaseRpms_envvar_additional_envvar_generated_for_template.yaml
- pkg/prowgen/testdata/zz_fixture_TestSecrets_one_secret.yaml
- pkg/prowgen/testdata/zz_fixture_TestGitHubToken_podspec_for_private_repo_without_reusing_Prow_s_volume_with_credentials.yaml
- pkg/prowgen/testdata/zz_fixture_TestSecrets_multiple_secrets.yaml
- pkg/prowgen/testdata/zz_fixture_TestTemplate_template_with_a_custom_test_image.yaml
- pkg/prowgen/testdata/zz_fixture_TestGitHubToken_podspec_for_private_repo__reusing_Prow_s_volume_with_credentials.yaml
- pkg/prowgen/testdata/zz_fixture_TestInjectTestFrom_inject_coordinates_with_variant.yaml
- pkg/prowgen/testdata/zz_fixture_TestTargetAdditionalSuffix_target_additional_suffix_is_added.yaml
- pkg/prowgen/testdata/zz_fixture_TestGSMConfig_add_gsm_config_volume_and_mount.yaml
- pkg/prowgen/testdata/zz_fixture_TestCustomHashInput_custom_hash_inputs_are_added.yaml
- pkg/prowgen/testdata/zz_fixture_TestSecrets_empty_list_is_a_nop.yaml
- pkg/prowgen/testdata/zz_fixture_TestLeaseClient_secret_is_added.yaml
- pkg/prowgen/testdata/zz_fixture_TestReleaseLatest_add_release_latest.yaml
- pkg/prowgen/testdata/zz_fixture_TestNewCiOperatorPodSpecGenerator_defaults_repo.yaml
- pkg/prowgen/testdata/zz_fixture_TestTemplate_template_with_different_command.yaml
- pkg/prowgen/testdata/zz_fixture_TestTemplate_template_with_command.yaml
- pkg/prowgen/testdata/zz_fixture_TestCustomHashInput_custom_hash_input_is_added.yaml
- pkg/prowgen/testdata/zz_fixture_TestTargets_multiple_targets.yaml
Summary
Proof of concept for using Prow presets to deduplicate boilerplate from generated Prowjob definitions.
This PR moves the
pull-secretvolume and volumeMount from the hardcodeddefaultPodSpecin prowgen to a Prow preset (preset-ci-operator-image-pull), matched via a new label added to all prowgen-generated jobs.Changes
pkg/api/constant.go: AddPresetImagePullLabelconstantpkg/prowgen/jobbase.go: Add the preset label to all generated jobs inNewProwJobBaseBuilderpkg/prowgen/podspec.go: Removepull-secretvolume and volumeMount fromdefaultPodSpec(now provided by the preset)Design
This is the first of several compositional, domain-specific presets — each covers one logical domain with its own label, and they compose independently:
preset-ci-operator-image-pull(this PR)preset-ci-operator-image-pull: "true"preset-ci-operator-manifest-toolpreset-ci-operator-result-aggregatorpreset-ci-operator-lease-clientpreset-ci-operator-release-pullThe
--image-import-pull-secretarg remains inline because presets only support env vars, volumes, and volumeMounts — not container args.Impact (this preset alone)
ci-operator/jobs/Companion PR
Requires the preset definition in openshift/release: (TBD - will be linked)
Test plan
go test ./pkg/prowgen/...passesgo test ./cmd/ci-operator-prowgen/...passesmake checkconfigin openshift/release🤖 Generated with Claude Code
Summary by CodeRabbit
New Features
preset-ci-operator-image-pulllabel to all Prow job configurations (presubmits, postsubmits, periodics) for improved image pull handling.Bug Fixes / Refactoring