Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
42 commits
Select commit Hold shift + click to select a range
1dc3569
feat: add RPM-only build mode to ci_phase_iso_build.sh
agullon Jun 29, 2026
38b669d
fix: disable composer builds for rpm_only mode
agullon Jun 29, 2026
fbefbc0
fix: use will-cite file instead of parallel --citation pipe
agullon Jun 29, 2026
69eca43
fix: run manage_composer_config.sh create unconditionally
agullon Jun 29, 2026
d7b5067
fix: skip mirror registry for rpm-only presubmit scenarios
agullon Jun 29, 2026
f29d5d7
fix: use SCENARIO_SOURCES to detect rpm-only mode in boot_and_test
agullon Jun 29, 2026
554a579
fix: add scenarios-rpm to get_scenario_type_from_path
agullon Jun 29, 2026
2c9544e
fix: create vm-storage dir before pool-build in rpm_only mode
agullon Jun 29, 2026
f940d1c
fix: download cached ISOs in rpm_only mode for VM kickstart
agullon Jun 30, 2026
d391be7
chore: run only install.robot for initial rpm presubmit validation
agullon Jun 30, 2026
5d53853
feat: restructure rpm scenarios with shared helpers
agullon Jun 30, 2026
ca076af
fix: suppress verbose s3 sync output for ISO downloads
agullon Jun 30, 2026
7d1929a
feat: migrate presubmit scenarios to RPM-only flow
agullon Jun 30, 2026
66002ab
fix: address RPM scenario failures
agullon Jun 30, 2026
b5f968f
feat: parameterize RPM scenarios by RHEL version
agullon Jun 30, 2026
143936a
refactor: move ISO download logic to manage_build_cache.sh
agullon Jun 30, 2026
4badd30
fix: address PR review findings
agullon Jun 30, 2026
c416e30
chore: rename rpm scenarios to elxy-src@<suite>.sh naming convention
agullon Jun 30, 2026
b030164
feat: add action_setup phase for RPM scenario VM configuration
agullon Jun 30, 2026
1c144a8
refactor: move common setup to rpm_setup_and_install_microshift helper
agullon Jun 30, 2026
009e4bf
refactor: split rpm_setup_and_install_microshift into separate calls
agullon Jun 30, 2026
d7e6629
chore: remove extra blank lines in rpm scenarios
agullon Jun 30, 2026
af65585
refactor: inline install_microshift into rpm_install_microshift
agullon Jun 30, 2026
4dbc14b
fix: remove COMPOSER_CLI_BUILDS override for rpm_only mode
agullon Jun 30, 2026
76183ac
Revert "fix: remove COMPOSER_CLI_BUILDS override for rpm_only mode"
agullon Jun 30, 2026
a4475d4
revert: restore original parallel citation suppression
agullon Jun 30, 2026
08bdb54
fix: address all failing RPM scenario root causes
agullon Jun 30, 2026
5a7c70e
fix: storage topolvm-node wait and disable low-latency
agullon Jun 30, 2026
e74c162
fix: remove topolvm-node wait from storage scenario
agullon Jul 1, 2026
d8c5033
feat: move osconfig-lifecycle-core-api to rpm presubmits
agullon Jul 1, 2026
5fb7d32
chore: move duplicated bootc upgrade presubmits to periodics, add low…
agullon Jul 1, 2026
16afed4
feat: rename scenarios/ to scenarios-ostree/ for naming consistency
agullon Jul 1, 2026
b5cb13f
chore: restore rpm-standard2 to scenarios-ostree/periodics
agullon Jul 1, 2026
9c139b3
feat: split periodics into halves for parallel CI execution
agullon Jul 1, 2026
df0bf30
fix: remove gitops tests from RPM scenario (needs external CDN RPM)
agullon Jul 1, 2026
6bd147e
chore: rename elxy-src@ to el-src@ in rpm scenario names
agullon Jul 1, 2026
defec41
refactor: reshuffle periodics split by category
agullon Jul 1, 2026
5424735
chore: rename periodics-1/2 to periodics-lifecycle/functional
agullon Jul 1, 2026
8e6d808
refactor: update osconfig lifecycle tests and remove obsolete script
agullon Jul 2, 2026
f959f08
refactor: remove obsolete osconfig lifecycle test suite from scenario…
agullon Jul 2, 2026
ba58d4d
refactor: rebalance RPM presubmit scenarios to keep all under 15 minutes
agullon Jul 2, 2026
c58ff69
fix: rebalance scenarios after rehearsal failures
agullon Jul 2, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 5 additions & 2 deletions test/bin/ci_phase_boot_and_test.sh
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ SCRIPTDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
source "${SCRIPTDIR}/common.sh"
# Directory to crawl for scenarios when creating/running in batch mode.
# The CI system will override this depending on the job its running.
SCENARIO_SOURCES="${SCENARIO_SOURCES:-${TESTDIR}/scenarios}"
SCENARIO_SOURCES="${SCENARIO_SOURCES:-${TESTDIR}/scenarios-ostree}"
# Directory where all the scenarios will be copied for execution, preserving
# the original scenario type derived from its directory name.
SCENARIOS_TO_RUN="${OUTPUTDIR}/scenarios-$(get_scenario_type_from_path "${SCENARIO_SOURCES}")"
Expand Down Expand Up @@ -53,7 +53,10 @@ bash -x ./bin/manage_hypervisor_config.sh create

# Setup a container registry and mirror images.
# Release jobs need to also mirror the images from the brew RPMs.
if [[ "${SCENARIO_SOURCES:-}" =~ .*releases.* ]]; then
# RPM-only presubmits skip the mirror registry — scenarios pull images directly.
if [[ "${SCENARIO_SOURCES:-}" =~ .*scenarios-rpm.* ]]; then
export SKIP_MIRROR_REGISTRY=true
elif [[ "${SCENARIO_SOURCES:-}" =~ .*releases.* ]]; then
Comment on lines +56 to +59

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🩺 Stability & Availability | 🟡 Minor | ⚡ Quick win

Reset SKIP_MIRROR_REGISTRY before branching.

This only exports true on the RPM-only path. Since scenario.sh now reads the inherited environment, a caller that already has SKIP_MIRROR_REGISTRY=true will also skip mirror setup for non-RPM jobs. Initialize it to false first, or clear it in the non-RPM branches.

Suggested fix
+# Default for all scenarios; override only for RPM-only presubmits.
+export SKIP_MIRROR_REGISTRY=false
+
 # RPM-only presubmits skip the mirror registry — scenarios pull images directly.
 if [[ "${SCENARIO_TYPE:-}" =~ ^rpm-presubmits-.*$ ]]; then
     export SKIP_MIRROR_REGISTRY=true
 elif [[ "${SCENARIO_SOURCES:-}" =~ .*releases.* ]]; then
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
# RPM-only presubmits skip the mirror registry — scenarios pull images directly.
if [[ "${SCENARIO_TYPE:-}" =~ ^rpm-presubmits-.*$ ]]; then
export SKIP_MIRROR_REGISTRY=true
elif [[ "${SCENARIO_SOURCES:-}" =~ .*releases.* ]]; then
# Default for all scenarios; override only for RPM-only presubmits.
export SKIP_MIRROR_REGISTRY=false
# RPM-only presubmits skip the mirror registry — scenarios pull images directly.
if [[ "${SCENARIO_TYPE:-}" =~ ^rpm-presubmits-.*$ ]]; then
export SKIP_MIRROR_REGISTRY=true
elif [[ "${SCENARIO_SOURCES:-}" =~ .*releases.* ]]; then
🤖 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 `@test/bin/ci_phase_boot_and_test.sh` around lines 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.

bash -x ./bin/mirror_registry.sh -ri "${BREW_RPM_SOURCE}"
else
bash -x ./bin/mirror_registry.sh
Expand Down
25 changes: 25 additions & 0 deletions test/bin/ci_phase_iso_build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,9 @@ COMPOSER_CLI_BUILDS=true
if [ -v CI_JOB_NAME ] && [[ "${CI_JOB_NAME}" =~ .*bootc.* ]]; then
COMPOSER_CLI_BUILDS=false
fi
if [ $# -gt 0 ] && [ "$1" = "-rpm_only" ]; then
COMPOSER_CLI_BUILDS=false
fi

# Allow for a dry-run option to save on testing time
BUILD_DRY_RUN=${BUILD_DRY_RUN:-false}
Expand All @@ -36,6 +39,19 @@ dry_run() {

# Try downloading the 'last' build cache.
# Return 0 on success or 1 otherwise.
download_build_cache_isos() {
local -r cache_last="$(\
./bin/manage_build_cache.sh getlast \
-b "${SCENARIO_BUILD_BRANCH}" -t "${SCENARIO_BUILD_TAG}" | \
awk '/LAST:/ {print $NF}' \
)"
if [[ -z "${cache_last}" ]]; then
echo "ERROR: Could not determine the 'last' build cache tag for branch '${SCENARIO_BUILD_BRANCH}'"
return 1
fi
./bin/manage_build_cache.sh download_isos -b "${SCENARIO_BUILD_BRANCH}" -t "${cache_last}"
}

download_build_cache() {
local -r cache_last="$(\
./bin/manage_build_cache.sh getlast \
Expand Down Expand Up @@ -215,6 +231,15 @@ if [ $# -gt 0 ] && [ "$1" = "-update_cache" ] ; then
echo "ERROR: Access to the build cache is not available"
exit 1
fi
elif [ $# -gt 0 ] && [ "$1" = "-rpm_only" ] ; then
mkdir -p "${VM_DISK_BASEDIR}"
if ${HAS_CACHE_ACCESS} ; then
download_build_cache_isos
else
echo "ERROR: RPM-only mode requires installer ISOs from the build cache, but cache access is not available"
exit 1
fi
$(dry_run) bash -x ./bin/build_rpms.sh
else
GOT_CACHED_DATA=false
if ${HAS_CACHE_ACCESS} ; then
Expand Down
5 changes: 4 additions & 1 deletion test/bin/common.sh
Original file line number Diff line number Diff line change
Expand Up @@ -265,7 +265,7 @@ get_scenario_type_from_path() {
local type

case "${1}" in
*/scenarios/*|*/scenarios-ostree/*)
*/scenarios-ostree/*)
type="ostree"
;;
*/scenarios-bootc/*)
Expand All @@ -274,6 +274,9 @@ get_scenario_type_from_path() {
*/scenarios-bootc-containers/*)
type="bootc-containers"
;;
*/scenarios-rpm/*)
type="rpm"
;;
*)
type="unknown"
;;
Expand Down
18 changes: 17 additions & 1 deletion test/bin/manage_build_cache.sh
Original file line number Diff line number Diff line change
Expand Up @@ -160,6 +160,22 @@ action_download() {
done
}

action_download_isos() {
local -r dst_base="${IMAGEDIR}"
local -r iso_dest="${dst_base}/${VM_POOL_BASENAME}"

mkdir -p "${iso_dest}"

local -r src_base="s3://${AWS_BUCKET_NAME}/${BCH_SUBDIR}/${ARCH_SUBDIR}/${TAG_SUBDIR}"
local -r iso_src="${src_base}/${VM_POOL_BASENAME}"

echo "Downloading installer ISOs from '${iso_src}'"
run_aws_cli s3 sync --quiet --exclude '*' --include '*-installer.iso' "${iso_src}" "${iso_dest}"

local -r iso_size="$(du -csh "${iso_dest}" | awk 'END{print $1}')"
echo "Downloaded ${iso_size} of installer ISOs"
}

action_verify() {
if check_contents ; then
echo OK
Expand Down Expand Up @@ -304,7 +320,7 @@ fi

# Run actions
case "${action}" in
upload|download|verify|setlast|getlast|dellast|keep)
upload|download|download_isos|verify|setlast|getlast|dellast|keep)
"action_${action}" "$@"
;;
-h|help)
Expand Down
39 changes: 36 additions & 3 deletions test/bin/scenario.sh
Original file line number Diff line number Diff line change
Expand Up @@ -1602,8 +1602,10 @@ check_dependencies() {
"${TESTDIR}/bin/manage_webserver.sh" "start"
fi

if ! sudo podman ps --format '{{.Names}}' | grep -q ^microshift-quay ; then
"${TESTDIR}/bin/mirror_registry.sh"
if [ "${SKIP_MIRROR_REGISTRY:-false}" != "true" ] ; then
if ! sudo podman ps --format '{{.Names}}' | grep -q ^microshift-quay ; then
"${TESTDIR}/bin/mirror_registry.sh"
fi
fi
}

Expand Down Expand Up @@ -1672,6 +1674,35 @@ action_login() {
fi
}

action_setup() {
start_junit
trap "close_junit" EXIT

if ! load_global_settings; then
record_junit "setup" "load_global_settings" "FAILED"
return 1
fi
record_junit "setup" "load_global_settings" "OK"

if ! load_scenario_script; then
record_junit "setup" "load_scenario_script" "FAILED"
return 1
fi
record_junit "setup" "load_scenario_script" "OK"

# shellcheck disable=SC2154
trap 'rc=$? ; \
[ "${rc}" -ne 0 ] && record_junit "setup" "scenario_setup_vms" "FAILED" ; \
collect_pcp_reports || true ; \
sos_report true || rc=1 ; \
close_junit ; exit "${rc}"' EXIT

if type scenario_setup_vms &>/dev/null; then
scenario_setup_vms
record_junit "setup" "scenario_setup_vms" "OK"
fi
}

action_run() {
start_junit
trap "close_junit" EXIT
Expand Down Expand Up @@ -1754,7 +1785,7 @@ JUNIT_OUTPUT_FILE="${SCENARIO_INFO_DIR}/${SCENARIO}/phase_${action}/junit.xml"
cd "${SCRIPTDIR}/.."

case "${action}" in
create|run|cleanup|login)
create|setup|run|cleanup|login)
"action_${action}" "$@"
;;
boot)
Expand All @@ -1767,10 +1798,12 @@ case "${action}" in
rerun)
action_cleanup "$@"
action_create "$@"
action_setup "$@"
action_run "$@"
;;
create-and-run)
action_create "$@"
action_setup "$@"
action_run "$@"
;;
*)
Expand Down
Loading