From cd4a6bd3a8a85a0c7819cd2d195f3d65ab410c45 Mon Sep 17 00:00:00 2001 From: David Montero Date: Fri, 12 Jun 2026 04:39:41 +0200 Subject: [PATCH] ci(e2e): retry QEMU/ROM downloads to survive transient velxio.dev blips The 5 binary downloads used a bare `curl -fSL` with no retries. The assets are served from velxio.dev, which has brief unavailable windows during a deploy (the app container is recreated -> a few seconds of 502). A single blip mid-download failed the whole Backend E2E job even though nothing was wrong with the change under test. Add a shared retry policy (--retry 5 --retry-delay 10 --retry-all-errors --retry-connrefused --connect-timeout 15) so the step rides out a container recreate (~50s of headroom) instead of failing hard. --- .github/workflows/backend-e2e-tests.yml | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/.github/workflows/backend-e2e-tests.yml b/.github/workflows/backend-e2e-tests.yml index 29453727..8437ea1c 100644 --- a/.github/workflows/backend-e2e-tests.yml +++ b/.github/workflows/backend-e2e-tests.yml @@ -50,14 +50,22 @@ jobs: mkdir -p $QEMU_DIR cd $QEMU_DIR + # Retry on transient blips: the binaries are served from velxio.dev, + # which has brief windows of unavailability during a deploy (the app + # container is recreated -> a few seconds of 502). Without retries a + # single blip mid-download fails the whole e2e job. --retry-all-errors + # covers 5xx (the deploy case), --retry-connrefused the cold-restart + # case; 5 x 10s buys ~50s, enough to ride out a container recreate. + RETRY="--retry 5 --retry-delay 10 --retry-all-errors --retry-connrefused --connect-timeout 15" + echo "Downloading QEMU shared libraries..." - curl -fSL -o libqemu-xtensa.so "$VELXIO_BINARY_BASE_URL/libqemu-xtensa-amd64?key=$VELXIO_LICENSE_KEY" - curl -fSL -o libqemu-riscv32.so "$VELXIO_BINARY_BASE_URL/libqemu-riscv32-amd64?key=$VELXIO_LICENSE_KEY" + curl -fSL $RETRY -o libqemu-xtensa.so "$VELXIO_BINARY_BASE_URL/libqemu-xtensa-amd64?key=$VELXIO_LICENSE_KEY" + curl -fSL $RETRY -o libqemu-riscv32.so "$VELXIO_BINARY_BASE_URL/libqemu-riscv32-amd64?key=$VELXIO_LICENSE_KEY" echo "Downloading ROM files..." - curl -fSL -o esp32-v3-rom.bin "$VELXIO_BINARY_BASE_URL/esp32-v3-rom?key=$VELXIO_LICENSE_KEY" - curl -fSL -o esp32-v3-rom-app.bin "$VELXIO_BINARY_BASE_URL/esp32-v3-rom-app?key=$VELXIO_LICENSE_KEY" - curl -fSL -o esp32c3-rom.bin "$VELXIO_BINARY_BASE_URL/esp32c3-rom?key=$VELXIO_LICENSE_KEY" + curl -fSL $RETRY -o esp32-v3-rom.bin "$VELXIO_BINARY_BASE_URL/esp32-v3-rom?key=$VELXIO_LICENSE_KEY" + curl -fSL $RETRY -o esp32-v3-rom-app.bin "$VELXIO_BINARY_BASE_URL/esp32-v3-rom-app?key=$VELXIO_LICENSE_KEY" + curl -fSL $RETRY -o esp32c3-rom.bin "$VELXIO_BINARY_BASE_URL/esp32c3-rom?key=$VELXIO_LICENSE_KEY" chmod +x libqemu-xtensa.so libqemu-riscv32.so ls -lh .