virt-platform-autopilot: add periodic e2e test on Azure with CNV#80925
virt-platform-autopilot: add periodic e2e test on Azure with CNV#80925rlobillo wants to merge 2 commits into
Conversation
Add a periodic CI job that deploys OCP 5.0 nightly on Azure, installs CNV 4.99 via cnv-ci, and runs e2e tests for virt-platform-autopilot. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Repository YAML (base), Central YAML (inherited) Review profile: CHILL Plan: Enterprise Run ID: 📒 Files selected for processing (1)
🚧 Files skipped from review as they are similar to previous changes (1)
WalkthroughA new periodic CI configuration is added for ChangesPeriodic CI Configuration for virt-platform-autopilot
Estimated code review effort🎯 2 (Simple) | ⏱️ ~10 minutes Suggested labels
🚥 Pre-merge checks | ✅ 14 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (14 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
[APPROVALNOTIFIER] This PR is NOT APPROVED This pull-request has been approved by: rlobillo 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 |
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
`@ci-operator/config/openshift-virtualization/virt-platform-autopilot/openshift-virtualization-virt-platform-autopilot-main__periodics.yaml`:
- Around line 34-59: The curl command downloading the cnv-ci tarball is
hardcoded to fetch from `tarball/master`, but the job declares a specific
`CNV_VERSION: "4.99"`. Replace the hardcoded `master` reference in the curl URL
with a reference to the `CNV_VERSION` variable so the tarball version matches
the declared release version. This ensures the test infrastructure version
remains synchronized with the declared release versions rather than always
pulling from the master branch.
🪄 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: 977612ad-9c02-4ab3-b2e5-c223a3aa1935
⛔ Files ignored due to path filters (1)
ci-operator/jobs/openshift-virtualization/virt-platform-autopilot/openshift-virtualization-virt-platform-autopilot-main-periodics.yamlis excluded by!ci-operator/jobs/**
📒 Files selected for processing (1)
ci-operator/config/openshift-virtualization/virt-platform-autopilot/openshift-virtualization-virt-platform-autopilot-main__periodics.yaml
| curl -L https://github.com/openshift-cnv/cnv-ci/tarball/master -o /tmp/cnv-ci.tgz | ||
| mkdir -p /tmp/cnv-ci | ||
| tar -xvzf /tmp/cnv-ci.tgz -C /tmp/cnv-ci --strip-components=1 | ||
| cd /tmp/cnv-ci | ||
| make update_pull_secret set_imagedigestmirrorset deploy_cnv | ||
| oc patch hco kubevirt-hyperconverged -n openshift-cnv --type=json -p='[{"op": "add", "path": "/spec/defaultCPUModel", "value": "Broadwell"}]' | ||
| credentials: | ||
| - mount_path: /var/run/cnv-ci-brew-pull-secret | ||
| name: cnv-ci-brew-pull-secret | ||
| namespace: test-credentials | ||
| - mount_path: /var/run/cnv-ci-konflux-pull-secret | ||
| name: konflux-pull-secret | ||
| namespace: test-credentials | ||
| env: | ||
| - default: '|7820aea2-0d75-11e7-9259-28d244ea5a6d.hhav.f63e13' | ||
| name: BREW_IMAGE_REGISTRY_USERNAME | ||
| - default: /var/run/cnv-ci-brew-pull-secret/token | ||
| name: BREW_IMAGE_REGISTRY_TOKEN_PATH | ||
| - default: openshift-virtualization+konflux_ro_bot | ||
| name: KONFLUX_REGISTRY_USERNAME | ||
| - default: /var/run/cnv-ci-konflux-pull-secret/token | ||
| name: KONFLUX_REGISTRY_TOKEN_PATH | ||
| - default: "5.0" | ||
| name: OCP_VERSION | ||
| - default: "4.99" | ||
| name: CNV_VERSION |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟠 Major
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
set -euo pipefail
FILE="ci-operator/config/openshift-virtualization/virt-platform-autopilot/openshift-virtualization-virt-platform-autopilot-main__periodics.yaml"
echo "1) Verify current tarball source in config:"
rg -n 'cnv-ci/tarball|CNV_VERSION|OCP_VERSION' "$FILE"
echo
echo "2) Verify release tarball endpoints resolve:"
CNV_VERSION="$(awk '/name: CNV_VERSION/{getline; gsub(/"/,"",$2); print $2}' "$FILE")"
OCP_VERSION="$(awk '/name: OCP_VERSION/{getline; gsub(/"/,"",$2); print $2}' "$FILE")"
echo "Checking release-\${CNV_VERSION}: ${CNV_VERSION}"
curl -sSI "https://github.com/openshift-cnv/cnv-ci/tarball/release-${CNV_VERSION}" | head -n 1
echo "Checking release-\${OCP_VERSION}: ${OCP_VERSION}"
curl -sSI "https://github.com/openshift-cnv/cnv-ci/tarball/release-${OCP_VERSION}" | head -n 1Repository: openshift/release
Length of output: 506
🏁 Script executed:
#!/bin/bash
set -euo pipefail
FILE="ci-operator/config/openshift-virtualization/virt-platform-autopilot/openshift-virtualization-virt-platform-autopilot-main__periodics.yaml"
echo "=== Full file content for context ==="
cat -n "$FILE"
echo
echo "=== Check for other cnv-ci tarball references in codebase ==="
rg 'cnv-ci/tarball' --type yaml -A 2 -B 2 | head -60Repository: openshift/release
Length of output: 3555
Pin cnv-ci tarball to the declared CNV_VERSION.
Line 34 hardcodes tarball/master, but the job declares CNV_VERSION: "4.99" and OCP_VERSION: "5.0" (lines 56–59). This creates nondeterminism—the test infrastructure diverges from the declared release versions, causing unpredictable failures.
Suggested fix
- curl -L https://github.com/openshift-cnv/cnv-ci/tarball/master -o /tmp/cnv-ci.tgz
+ curl -fsSL "https://github.com/openshift-cnv/cnv-ci/tarball/release-${CNV_VERSION}" -o /tmp/cnv-ci.tgz📝 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.
| curl -L https://github.com/openshift-cnv/cnv-ci/tarball/master -o /tmp/cnv-ci.tgz | |
| mkdir -p /tmp/cnv-ci | |
| tar -xvzf /tmp/cnv-ci.tgz -C /tmp/cnv-ci --strip-components=1 | |
| cd /tmp/cnv-ci | |
| make update_pull_secret set_imagedigestmirrorset deploy_cnv | |
| oc patch hco kubevirt-hyperconverged -n openshift-cnv --type=json -p='[{"op": "add", "path": "/spec/defaultCPUModel", "value": "Broadwell"}]' | |
| credentials: | |
| - mount_path: /var/run/cnv-ci-brew-pull-secret | |
| name: cnv-ci-brew-pull-secret | |
| namespace: test-credentials | |
| - mount_path: /var/run/cnv-ci-konflux-pull-secret | |
| name: konflux-pull-secret | |
| namespace: test-credentials | |
| env: | |
| - default: '|7820aea2-0d75-11e7-9259-28d244ea5a6d.hhav.f63e13' | |
| name: BREW_IMAGE_REGISTRY_USERNAME | |
| - default: /var/run/cnv-ci-brew-pull-secret/token | |
| name: BREW_IMAGE_REGISTRY_TOKEN_PATH | |
| - default: openshift-virtualization+konflux_ro_bot | |
| name: KONFLUX_REGISTRY_USERNAME | |
| - default: /var/run/cnv-ci-konflux-pull-secret/token | |
| name: KONFLUX_REGISTRY_TOKEN_PATH | |
| - default: "5.0" | |
| name: OCP_VERSION | |
| - default: "4.99" | |
| name: CNV_VERSION | |
| curl -fsSL "https://github.com/openshift-cnv/cnv-ci/tarball/release-${CNV_VERSION}" -o /tmp/cnv-ci.tgz | |
| mkdir -p /tmp/cnv-ci | |
| tar -xvzf /tmp/cnv-ci.tgz -C /tmp/cnv-ci --strip-components=1 | |
| cd /tmp/cnv-ci | |
| make update_pull_secret set_imagedigestmirrorset deploy_cnv | |
| oc patch hco kubevirt-hyperconverged -n openshift-cnv --type=json -p='[{"op": "add", "path": "/spec/defaultCPUModel", "value": "Broadwell"}]' | |
| credentials: | |
| - mount_path: /var/run/cnv-ci-brew-pull-secret | |
| name: cnv-ci-brew-pull-secret | |
| namespace: test-credentials | |
| - mount_path: /var/run/cnv-ci-konflux-pull-secret | |
| name: konflux-pull-secret | |
| namespace: test-credentials | |
| env: | |
| - default: '|7820aea2-0d75-11e7-9259-28d244ea5a6d.hhav.f63e13' | |
| name: BREW_IMAGE_REGISTRY_USERNAME | |
| - default: /var/run/cnv-ci-brew-pull-secret/token | |
| name: BREW_IMAGE_REGISTRY_TOKEN_PATH | |
| - default: openshift-virtualization+konflux_ro_bot | |
| name: KONFLUX_REGISTRY_USERNAME | |
| - default: /var/run/cnv-ci-konflux-pull-secret/token | |
| name: KONFLUX_REGISTRY_TOKEN_PATH | |
| - default: "5.0" | |
| name: OCP_VERSION | |
| - default: "4.99" | |
| name: CNV_VERSION |
🤖 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
`@ci-operator/config/openshift-virtualization/virt-platform-autopilot/openshift-virtualization-virt-platform-autopilot-main__periodics.yaml`
around lines 34 - 59, The curl command downloading the cnv-ci tarball is
hardcoded to fetch from `tarball/master`, but the job declares a specific
`CNV_VERSION: "4.99"`. Replace the hardcoded `master` reference in the curl URL
with a reference to the `CNV_VERSION` variable so the tarball version matches
the declared release version. This ensures the test infrastructure version
remains synchronized with the declared release versions rather than always
pulling from the master branch.
|
/pj-rehearse periodic-ci-openshift-virtualization-virt-platform-autopilot-main-periodics-e2e-azure |
|
@rlobillo: now processing your pj-rehearse request. Please allow up to 10 minutes for jobs to trigger or cancel. |
|
/pj-rehearse periodic-ci-openshift-virtualization-virt-platform-autopilot-main-periodics-e2e-azure |
|
@rlobillo: now processing your pj-rehearse request. Please allow up to 10 minutes for jobs to trigger or cancel. |
CNV 4.99 IIB was not available in brew registry, causing install timeout. Try CNV 4.23 instead. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
[REHEARSALNOTIFIER]
Interacting with pj-rehearseComment: Once you are satisfied with the results of the rehearsals, comment: |
|
@rlobillo: 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. |
|
/rehearse periodic-ci-openshift-virtualization-virt-platform-autopilot-main-periodics-e2e-azure |
|
/pj-rehearse periodic-ci-openshift-virtualization-virt-platform-autopilot-main-periodics-e2e-azure |
|
@rlobillo: now processing your pj-rehearse request. Please allow up to 10 minutes for jobs to trigger or cancel. |
Summary
virt-platform-autopilotthat deploys OCP 5.0 nightly on Azure, installs CNV 4.99 viacnv-ci, and runsmake run-e2e-tests-only__periodics.yamlto avoid duplication viaconfig-branchertrap EXITTest plan
make run-e2e-tests-onlyexecutes and artifacts are collected🤖 Generated with Claude Code
Summary by CodeRabbit
This PR adds a new periodic CI job in the OpenShift release repository for the OpenShift Virtualization team’s
virt-platform-autopilotproject. It runs nightly weekday end-to-end validation against OCP 5.0 on Azure using theipi-azureworkflow.Concretely, it introduces a dedicated
__periodics.yamlto define ane2e-azurescheduled test that:azure-virtualizationcluster profiling) and sets Azure base domain + compute node type.openshift-cnv/cnv-citoolchain, deriving CNV catalog image/channel fromversion-mapping.json, updating pull secret/imagedigest mirror set, and deploying CNV.kubevirt-hyperconverged(hco) custom resource to setspec.defaultCPUModeltoBroadwell.make run-e2e-tests-onlyfor the E2E suite.trap ... EXITin the test step to copy_output/*into the configured artifacts directory so artifacts are collected whether the tests succeed or fail.The periodic job is configured to use a shared
resources: '*'default and an explicit artifacts/grace-period/resource configuration for the test run.