Add OMR v2 disconnected presubmit for mirror-registry#82430
Conversation
WalkthroughChangesAdds a new OMR v2 mirror-registry CI configuration and disconnected AWS workflow. A preparation step publishes PR pipeline image references, while installation conditionally extracts, transfers, verifies, and installs the PR-built archive or downloads the official artifact. OMR v2 pipeline integration
Possibly related PRs
Suggested labels: Suggested reviewers: Important Pre-merge checks failedPlease resolve all errors before merging. Addressing warnings is optional. ❌ Failed checks (1 error)
✅ Passed checks (14 passed)
✨ 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: jbpratt 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 |
|
/pj-rehearse pull-ci-quay-mirror-registry-main-omr-v2-disconnected-install |
|
@jbpratt: now processing your pj-rehearse request. Please allow up to 10 minutes for jobs to trigger or cancel. |
|
[REHEARSALNOTIFIER]
Interacting with pj-rehearseComment: Once you are satisfied with the results of the rehearsals, comment: |
|
/pj-rehearse pull-ci-quay-mirror-registry-main-omr-v2-disconnected-install |
|
@jbpratt: now processing your pj-rehearse request. Please allow up to 10 minutes for jobs to trigger or cancel. |
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/step-registry/quay/omr-v2/prepare-pipeline/quay-omr-v2-prepare-pipeline-commands.sh`:
- Line 11: Update the publication and cleanup logic around the shared artifact
and the temporary file: stop deleting the existing destination before creating
or moving the temporary file, use mv -f to atomically replace
${SHARED_DIR}/omr_v2_pipeline_image, and ensure cleanup removes only the
temporary file. Set publication state so an interruption after a successful
rename cannot remove the destination.
🪄 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: Pro Plus
Run ID: 160a23ab-6a2b-4eee-b5ba-1864751aab50
📒 Files selected for processing (7)
ci-operator/step-registry/quay/aws-ipi-disconnected-omr-v2-provision/quay-aws-ipi-disconnected-omr-v2-provision-chain.yamlci-operator/step-registry/quay/omr-v2/install/quay-omr-v2-install-commands.shci-operator/step-registry/quay/omr-v2/install/quay-omr-v2-install-ref.yamlci-operator/step-registry/quay/omr-v2/prepare-pipeline/OWNERSci-operator/step-registry/quay/omr-v2/prepare-pipeline/quay-omr-v2-prepare-pipeline-commands.shci-operator/step-registry/quay/omr-v2/prepare-pipeline/quay-omr-v2-prepare-pipeline-ref.metadata.jsonci-operator/step-registry/quay/omr-v2/prepare-pipeline/quay-omr-v2-prepare-pipeline-ref.yaml
🚧 Files skipped from review as they are similar to previous changes (3)
- ci-operator/step-registry/quay/omr-v2/install/quay-omr-v2-install-ref.yaml
- ci-operator/step-registry/quay/aws-ipi-disconnected-omr-v2-provision/quay-aws-ipi-disconnected-omr-v2-provision-chain.yaml
- ci-operator/step-registry/quay/omr-v2/install/quay-omr-v2-install-commands.sh
|
|
||
| pipeline_image_file="${SHARED_DIR}/omr_v2_pipeline_image" | ||
| pipeline_image_tmp="" | ||
| published=false |
There was a problem hiding this comment.
🩺 Stability & Availability | 🟠 Major | ⚡ Quick win
Preserve the destination during atomic publication.
Line 41 deletes the existing shared artifact before the temporary file is created. If mktemp, printf, chmod, mv, or an interruption fails afterward, cleanup also removes the destination; because published=true is assigned only after mv, a successful rename can even be undone by TERM in that window. Let mv -f replace the destination atomically and clean up only the temporary file.
This follows the stated atomic-publication objective and the downstream installer contract for ${SHARED_DIR}/omr_v2_pipeline_image.
Proposed fix
-published=false
-
cleanup() {
local status=$?
trap - EXIT TERM
set +o errexit
if [[ -n "${pipeline_image_tmp}" ]]; then
rm -f -- "${pipeline_image_tmp}"
fi
- if [[ "${published}" != true ]]; then
- rm -f -- "${pipeline_image_file}"
- fi
exit "${status}"
}
-rm -f -- "${pipeline_image_file}"
pipeline_image_tmp=$(mktemp "${SHARED_DIR}/.omr_v2_pipeline_image.XXXXXX")
printf '%s\n' "${OMR_V2_IMAGE}" > "${pipeline_image_tmp}"
chmod 0644 "${pipeline_image_tmp}"
mv -f -- "${pipeline_image_tmp}" "${pipeline_image_file}"
pipeline_image_tmp=""
-published=trueAlso applies to: 21-23, 41-47
🤖 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/step-registry/quay/omr-v2/prepare-pipeline/quay-omr-v2-prepare-pipeline-commands.sh`
at line 11, Update the publication and cleanup logic around the shared artifact
and the temporary file: stop deleting the existing destination before creating
or moving the temporary file, use mv -f to atomically replace
${SHARED_DIR}/omr_v2_pipeline_image, and ensure cleanup removes only the
temporary file. Set publication state so an interruption after a successful
rename cannot remove the destination.
|
/pj-rehearse pull-ci-quay-mirror-registry-main-omr-v2-disconnected-install |
|
@jbpratt: now processing your pj-rehearse request. Please allow up to 10 minutes for jobs to trigger or cancel. |
|
/pj-rehearse pull-ci-quay-mirror-registry-main-omr-v2-disconnected-install |
|
@jbpratt: now processing your pj-rehearse request. Please allow up to 10 minutes for jobs to trigger or cancel. |
|
@jbpratt: all tests passed! 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
/test omr-v2-disconnected-installpresubmit forquay/mirror-registryquay/quaymigration periodic's released-artifact fallback behaviorquay/mirror-registryfor theaws-quay-qecluster profileValidation
make ci-operator-config SKIP_PULL=truemake jobs WHAT=quay/mirror-registry SKIP_PULL=truemake registry-metadata SKIP_PULL=truemake ci-operator-checkconfig SKIP_PULL=truecheckconfigwith the generated jobs and merged plugin configurationgit diff --checkEnvironment-limited checks
make checkconfig SKIP_PULL=truereaches a local supplemental-directorystat /release/core-services/prow/02_config: invalid argumenterror; targeted strict Prow validation passes.make validate-step-registry SKIP_PULL=trueis locally blocked by the current resolver's unsupported-prow-configflag. Running the resolver directly proceeds through config and registry loading, then requires in-cluster credentials.Summary by CodeRabbit
Adds an optional
omr-v2-disconnected-installpresubmit forquay/mirror-registry. The workflow builds the PR’s OMR v2 pipeline image, transfers and verifies its offline archive on a dedicated RHEL host, then reuses the existing disconnected AWS/OpenShift provisioning path for OMR v2 validation.Also preserves the released-artifact fallback for
quay/quay, enables Prow triggering forquay/mirror-registry, and authorizes the repository for theaws-quay-qecluster profile. The install flow now verifies archive checksums across transfer and installation, while supporting both PR-built and downloaded artifacts.