ci: skip emulator boot/verify on arm64 (same-arch TCG can't run backend)

The Start/Verify/Stop emulator steps boot the freshly-built qcow2 and
wait for all services — including the Next.js backend — to respond on
their ports. Under same-arch TCG on ubuntu-24.04-arm there's no KVM,
so the backend can't come up within any reasonable window (this is the
same reason the build-time smoke test is already skipped on arm64).
Today the step just burns the 53-minute EMULATOR_READY_TIMEOUT and
fails.

Gate those three steps to amd64. The build step still fully produces
and validates the arm64 image; it just doesn't try to run it under
emulation. The amd64 job continues to prove the image's service stack
end-to-end, and the arm64 artifact is trusted to be equivalent since
real arm64 hardware has KVM.
This commit is contained in:
Bilal Godil 2026-04-13 12:24:52 -07:00
parent 8146d359a8
commit 1910ea0ebf

View File

@ -80,7 +80,13 @@ jobs:
- name: Generate emulator env
run: node docker/local-emulator/generate-env-development.mjs
# VM boot + service verification is amd64-only. Under same-arch TCG on
# the arm64 runner there's no KVM, and the Next.js backend can't come
# up within any reasonable window under software emulation — same
# reason the build-time smoke test is skipped on arm64. The arm64
# image is built and uploaded blind; it runs on real arm64 hardware.
- name: Start emulator and verify
if: matrix.arch == 'amd64'
run: |
chmod +x docker/local-emulator/qemu/run-emulator.sh
EMULATOR_ARCH=${{ matrix.arch }} \
@ -88,12 +94,13 @@ jobs:
docker/local-emulator/qemu/run-emulator.sh start
- name: Verify services are healthy
if: matrix.arch == 'amd64'
run: |
EMULATOR_ARCH=${{ matrix.arch }} \
docker/local-emulator/qemu/run-emulator.sh status
- name: Stop emulator
if: always()
if: always() && matrix.arch == 'amd64'
run: |
EMULATOR_ARCH=${{ matrix.arch }} \
docker/local-emulator/qemu/run-emulator.sh stop