chore(ci): multi-arch e2e-runner image & add oc-mirror and podman#5036
Conversation
PR Summary by Qodochore(ci): make e2e-runner image builds multi-arch (amd64 + arm64)
AI Description
Diagram
High-Level Assessment
Files changed (2)
|
9b20e13 to
ebb1f3f
Compare
bda8d90 to
cc32cb7
Compare
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #5036 +/- ##
==========================================
- Coverage 55.39% 54.77% -0.62%
==========================================
Files 122 110 -12
Lines 2365 2147 -218
Branches 562 541 -21
==========================================
- Hits 1310 1176 -134
+ Misses 1048 969 -79
+ Partials 7 2 -5
Continue to review full report in Codecov by Harness.
🚀 New features to boost your workflow:
|
|
The container image build workflow finished with status: |
e7f2401 to
452bf05
Compare
|
The container image build workflow finished with status: |
452bf05 to
d7171bb
Compare
|
The container image build workflow finished with status: |
d7171bb to
27fcb80
Compare
|
The container image build workflow finished with status: |
oc-mirror and podman
Code Review by Qodo
1. TARGETARCH may be unset
|
|
/agentic_review |
|
Code review by qodo was updated up to the latest commit 27fcb80 |
|
The container image build workflow finished with status: |
|
The container image build workflow finished with status: |
d519eba to
c6f5844
Compare
|
The container image build workflow finished with status: |
|
I believe the issues flagged by Qodo and SonarCloud aren't relevant.
|
|
/retest |
Bump OC client to 4.22.3 and install oc-mirror alongside oc for the upcoming disconnected CI job. Co-authored-by: Cursor <cursoragent@cursor.com>
Parameterize all architecture-hardcoded tool downloads to support building the e2e-runner image for both linux/amd64 and linux/arm64. Changes: - Pin base image to manifest list digest (supports both platforms) - Add ARG TARGETARCH for dynamic arch resolution - Helm, oc, oc-mirror, ocm-cli, yq, opm: use TARGETARCH in URLs - AWS CLI: use $(uname -m) for native x86_64/aarch64 mapping - umoci: upgrade v0.4.7 -> v0.6.0 (first version with arm64 binaries) - Operator SDK: already multi-arch, unchanged - Azure/GCloud/apt packages: already arch-agnostic, unchanged - Remove unused Go env vars (GO_VERSION, GO_SHA256, GOPATH) - local-run.sh: remove --platform=linux/amd64 from podman pull Tested: both images build and all tools verified on both architectures. Assisted-by: OpenCode
Add matrix strategy (ubuntu-24.04 + ubuntu-24.04-arm) to build the e2e-runner image natively on both amd64 and arm64 runners. A merge job assembles the per-arch digests into a multi-arch manifest list. - build-image: matrix builds per-arch images, pushes arch-specific tags, exports digest as artifact - merge: downloads digests, creates multi-arch manifest with docker buildx imagetools create, tags with branch and branch-sha Assisted-by: OpenCode
Remove the downloaded zip and extracted aws/ directory after install to reduce image size. Assisted-by: OpenCode
Add apt-get clean and list removal to match all other apt-get install blocks in the Dockerfile and reduce layer size. Assisted-by: OpenCode
Pin the merge job to ubuntu-24.04 for consistency with the build jobs instead of using ubuntu-latest. Assisted-by: OpenCode
Add pull_request trigger so the e2e-runner image is built (without pushing) on PRs that modify .ci/images/Dockerfile or .yarnrc.yml. This catches build failures before merge. - Add pull_request trigger with same path filters - Guard push-only steps (login, digest export, merge) with event check - Widen branch glob from 'release-1.*' to 'release-*' for future majors - Use PR number in concurrency group and image tag Assisted-by: OpenCode
Add -i/--runner-image CLI parameter to override the e2e runner container image. Defaults to quay.io/rhdh-community/rhdh-e2e-runner:main. Local images (localhost/ prefix) skip the podman pull step. Assisted-by: OpenCode
…it.sh - local-run.sh: remove -t from podman run flags. The -t (allocate TTY) is incompatible with piping through tee, causing a spurious exit code 127 when bash misparses continuation lines. The -i flag alone is sufficient. - container-init.sh: use dpkg --print-architecture instead of hardcoded amd64 for the vault binary download, so arm64 containers get the native binary instead of relying on QEMU emulation. Assisted-by: OpenCode
Re-add the localhost/ prefix check that was lost during rebase. When using --runner-image localhost/..., skip the pull step since the image is already available locally. Assisted-by: OpenCode
Remove 2>/dev/null from podman pull so auth, network, and tag errors are visible to the user when a pull fails. Assisted-by: OpenCode
Add timeout-minutes: 20 to the merge job to prevent hangs on registry hiccups. Aligns with the build-image job which already has an explicit timeout. Assisted-by: OpenCode
Use ${RUNNER_IMAGE:-default} so an exported env var is not silently
clobbered by the hardcoded default. The --runner-image CLI flag
still takes precedence over both.
Assisted-by: OpenCode
Document that -t (TTY allocation) is intentionally omitted because stdout is piped through tee and CI has no TTY. Prevents future contributors from adding it back. Assisted-by: OpenCode
Add quay.expires-after=1w label to per-arch images so intermediate tags (main-amd64, main-arm64, etc.) are automatically cleaned up by Quay after one week. The multi-arch manifest tags are unaffected. Assisted-by: OpenCode
a2108d1 to
524341e
Compare
|
|
/retest |
|
/test e2e-ocp-helm |
|
/override "SonarCloud Code Analysis" Changes scoped to the E2E runner. Might make sense to explicitly exclude those E2E-related folders from SonarCloud analysis: https://github.com/redhat-developer/rhdh/blob/main/.sonarcloud.properties |
|
@rm3l: Overrode contexts on behalf of rm3l: SonarCloud Code Analysis DetailsIn response to this:
Instructions 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. |
830ac72
into
redhat-developer:main
Both oc-mirror and podman are now pre-installed in the e2e-runner image (PR redhat-developer#5036). Remove: - disconnected::install_oc_mirror function and OC_MIRROR_BIN variable - Runtime apt-get install podman block in operator handler - Section lettering from both handlers Assisted-by: OpenCode
Both oc-mirror and podman are now pre-installed in the e2e-runner image (PR redhat-developer#5036). Remove: - disconnected::install_oc_mirror function and OC_MIRROR_BIN variable - Runtime apt-get install podman block in operator handler - Section lettering from both handlers Assisted-by: OpenCode

Make the e2e-runner container image buildable for both
linux/amd64andlinux/arm64, and add tools required for disconnected environment smoke tests.Dockerfile
4.22ARG TARGETARCH— all tool downloads use it instead of hardcodedamd64/x86_64GO_VERSION,GO_SHA256,GOPATH)rm -rf awscliv2.zip aws/)apt-get cleanto skopeo/podman install stepCI Workflow
ubuntu-24.04(amd64) +ubuntu-24.04-arm(arm64)mergejob assembles per-arch digests into a multi-arch manifest listpull_requesttrigger — builds both platforms (without pushing) on Dockerfile/yarnrc changes to catch build failures before mergeif: github.event_name != 'pull_request'dpkg --print-architectureinstead of mapping runner label namesHAS_QUAY_AUTHguard,timeout-minutes: 120, pin merge runner toubuntu-24.04release-1.*torelease-*for future major versionslocal-run.sh
--platform=linux/amd64frompodman pull(auto-detects host arch)Verified locally
Both images built and all tools (helm, oc, oc-mirror, ocm, yq, aws, az, gcloud, umoci, opm, operator-sdk, node, yarn, psql, skopeo, podman) confirmed working on both architectures.
https://redhat.atlassian.net/browse/RHIDP-13974