feat: add RPM-only build mode for presubmit CI#6961
Conversation
|
Skipping CI for Draft Pull Request. |
|
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: agullon The full list of commands accepted by this bot can be found here. The pull request process is described here DetailsNeeds approval from an approver in each of these files:
Approvers can indicate their approval by writing |
|
Note Reviews pausedIt looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the Use the following commands to manage reviews:
Use the checkboxes below for quick actions:
WalkthroughAdds RPM-only build handling in ChangesRPM-only CI flow
Estimated code review effort🎯 2 (Simple) | ⏱️ ~5 minutes 🚥 Pre-merge checks | ✅ 14 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (14 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
There was a problem hiding this comment.
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 `@test/bin/ci_phase_boot_and_test.sh`:
- Around line 56-59: Reset SKIP_MIRROR_REGISTRY before the scenario branching in
ci_phase_boot_and_test.sh so inherited values do not leak into non-RPM jobs.
Update the pre-submit logic around the SCENARIO_TYPE and SCENARIO_SOURCES checks
to initialize SKIP_MIRROR_REGISTRY to false (or explicitly clear it) before
setting it to true for the rpm-presubmits path, and ensure the non-RPM branches
leave it disabled so scenario.sh sees the correct value.
🪄 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 YAML (base), Central YAML (inherited)
Review profile: CHILL
Plan: Enterprise
Run ID: 5ef256d2-d333-4097-a80d-9ac3d8a2059d
📒 Files selected for processing (2)
test/bin/ci_phase_boot_and_test.shtest/bin/scenario.sh
286676e to
f940d1c
Compare
Add SCENARIO_TYPE environment variable to the iso-build step ref so rpm-presubmits jobs can route to ci_phase_iso_build.sh -rpm_only, skipping image builds entirely. Update get_source_dir() in includes-commands.sh: - Add rpm-presubmits-el9/el10 mappings to scenarios-rpm/presubmits/ - Rename scenarios/ to scenarios-ostree/ for naming consistency - Split bootc/ostree periodics into lifecycle/functional directories Write SCENARIO_TYPE to _output/scenario_type for EC2 instances to read at runtime (only for rpm-presubmits jobs). Companion to openshift/microshift#6961. pre-commit.check-secrets: ENABLED
… periodics
Presubmits (main.yaml):
- Remove 6 bootc/ostree presubmit jobs (e2e-aws-tests, e2e-aws-tests-arm,
e2e-aws-tests-bootc-{el9,el10}, e2e-aws-tests-bootc-arm-{el9,el10})
- Add 2 RPM-only presubmit jobs on ARM (c7g.metal): rpm-presubmit-el9-arm,
rpm-presubmit-el10-arm — builds only RPMs, no image builds (~13 min vs 30 min)
- Convert bootc/ostree presubmit periodic jobs into lifecycle/functional split
with directory-specific run_if_changed triggers
Periodics (release-5.0__periodics.yaml):
- Split bootc/ostree nightly jobs into lifecycle and functional categories
(4 bootc crons → 8, 2 ostree crons → 4)
- Stagger cron schedules across 03:00-04:45 to avoid AWS quota contention
Naming:
- Standardize all job names to: {type}-{arch}-{trigger}-{el}-{category}
- Add missing -x86 suffix to cache-nightly jobs
Companion to openshift/microshift#6961.
pre-commit.check-secrets: ENABLED
c58ff69 to
a6528ce
Compare
|
/retest |
Build infrastructure: - Add -rpm_only flag to ci_phase_iso_build.sh that skips composer config and image builds, only building RPMs (~13 min vs ~30 min) - Add download_isos action to manage_build_cache.sh to fetch cached installer ISOs needed for VM kickstart in RPM-only mode - Skip mirror registry setup for RPM scenarios in ci_phase_boot_and_test.sh (RPM installs pull from CDN, not mirror) - Add scenarios-rpm to get_scenario_type_from_path() in common.sh Scenario framework (scenario_rpm.sh): - rpm_configure_vm: firewall, RHSM registration, repo configuration - rpm_install_microshift: dnf install, NM connectivity check, service start, endpoint readiness wait - rpm_reboot_and_wait: clean reboot for scenarios needing it (dual-stack, ipv6, multi-nic, low-latency) - configure_rpm_repos/configure_cdn_repo: RHEL version-aware repo setup derived from SCENARIO_TYPE at runtime Companion to openshift/release#81195. pre-commit.check-secrets: ENABLED
16 scenario files in scenarios-rpm/presubmits/ that run pure k8s functional tests after RPM-based MicroShift install: Standard suites: configuration1, configuration2, standard1, standard2, kustomize-core-api, networking, validation Network tests: dual-stack, ipv6, multi-nic (with reboot after install) Component tests: router (2 scenarios, split for parallelism), optional, storage, telemetry-clusterid Lifecycle: upgrade (Y-1 → current) Each scenario uses el-src@ naming — RHEL version (el9/el10) is derived from SCENARIO_TYPE at runtime, so one set of scenarios covers both. pre-commit.check-secrets: ENABLED
router.robot (18m11s, 7 tests) was a single-file bottleneck. Split into: router-ownership.robot (~8m): namespace ownership, router disabled, exposure configuration tests router-verify.robot (~10m): tuning, security, access logging tests Shared keywords and variables extracted to router.resource, imported by both files. This enables running router tests in two parallel scenario VMs instead of one sequential run. pre-commit.check-secrets: ENABLED
Rename scenarios/ → scenarios-ostree/ to align with scenarios-bootc/ and scenarios-rpm/ naming convention. Split periodic scenarios into lifecycle and functional categories: - scenarios-ostree/periodics → periodics-lifecycle + periodics-functional - scenarios-bootc/el9/periodics → periodics-lifecycle + periodics-functional - scenarios-bootc/el10/periodics → periodics-lifecycle + periodics-functional Lifecycle: upgrades, rollbacks, backup/recovery, greenboot, auto-recovery Functional: config, storage, networking, optional, fips, osconfig Move bootc/ostree presubmit scenarios to periodic directories — these tests still run but as nightly periodics instead of per-PR presubmits. Delete old scenarios/presubmits/ and scenarios/periodics/ files that are superseded by RPM presubmit scenarios or moved to periodics. pre-commit.check-secrets: ENABLED
860fe65 to
08cc450
Compare
|
/retest |
111ae0c to
08cc450
Compare
|
@agullon: The following test failed, say
Full PR test history. Your PR dashboard. DetailsInstructions 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. |
Summary
Add RPM-only build mode to MicroShift CI that skips ostree/bootc image builds, reducing presubmit build phase from ~30 min to ~13 min. Includes 16 RPM presubmit scenarios covering functional, networking, and lifecycle tests.
What changed
RPM-only build mode:
-rpm_onlyflag forci_phase_iso_build.sh— builds RPMs only, downloads cached installer ISOs for VM kickstartdownload_isosaction inmanage_build_cache.sh— fetches ISOs from S3 cacheRPM scenario framework (
scenario_rpm.sh):rpm_configure_vm: firewall, RHSM, repo setup (RHEL version derived fromSCENARIO_TYPEat runtime)rpm_install_microshift: dnf install → NM connectivity check → service start → readiness waitrpm_reboot_and_wait: clean reboot for network-dependent scenarios (dual-stack, ipv6, multi-nic)el-src@naming — one set of 16 files covers both RHEL 9 and 10RPM presubmit scenarios (16 files):
Router split for parallel execution:
router.robot(18m, 7 tests) →router-ownership.robot(~8m) +router-verify.robot(~10m)router.resourceScenario directory reorganization:
scenarios/→scenarios-ostree/(naming consistency withscenarios-bootc/andscenarios-rpm/)periodics-lifecycle/andperiodics-functional/(bootc, ostree)Commits
scenario_rpm.shhelpersscenarios-rpm/presubmits/router.robot→ 2 files + shared resourceRelated
Test plan
ci_phase_iso_build.sh -rpm_onlyexits after RPM build