diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml index 914c432d2..433e99c26 100644 --- a/.github/workflows/e2e.yml +++ b/.github/workflows/e2e.yml @@ -57,12 +57,12 @@ jobs: echo "FUSE device: $(ls -la /dev/fuse 2>&1 || echo '/dev/fuse not found')" - name: Start SeaweedFS - timeout-minutes: 10 + timeout-minutes: 15 run: | # Enable Docker buildkit for better caching export DOCKER_BUILDKIT=1 export COMPOSE_DOCKER_CLI_BUILD=1 - + # Build with retry logic for i in {1..3}; do echo "Build attempt $i/3" @@ -77,10 +77,18 @@ jobs: sleep 30 fi done - + # Start services with wait docker compose -f ./compose/e2e-mount.yml up --wait + - name: Rotate buildx cache + if: always() + run: | + # Without this, --cache-to writes to .buildx-cache-new but actions/cache only + # uploads .buildx-cache, so layers (notably the slow apt RUN) never persist. + rm -rf /tmp/.buildx-cache + if [ -d /tmp/.buildx-cache-new ]; then mv /tmp/.buildx-cache-new /tmp/.buildx-cache; fi + - name: Run FIO 4k timeout-minutes: 15 run: | diff --git a/docker/Dockerfile.e2e b/docker/Dockerfile.e2e index 77e93eaed..99b2b9163 100644 --- a/docker/Dockerfile.e2e +++ b/docker/Dockerfile.e2e @@ -2,13 +2,15 @@ FROM ubuntu:22.04 LABEL author="Chris Lu" -# Use faster mirrors and optimize package installation +# Use Azure's Ubuntu mirror — much faster than archive.ubuntu.com from GitHub-hosted runners, +# which have been hanging long enough on Ign:/retry to trip the 10-min step timeout. # Note: This e2e test image intentionally runs as root for simplicity and compatibility. # Production images (Dockerfile.go_build) use proper user isolation with su-exec. # For testing purposes, running as root avoids permission complexities and dependency # on Alpine-specific tools like su-exec (not available in Ubuntu repos). -RUN apt-get -o Acquire::Retries=5 -o Acquire::http::Timeout=30 update && \ - DEBIAN_FRONTEND=noninteractive apt-get -o Acquire::Retries=5 -o Acquire::http::Timeout=30 install -y \ +RUN sed -i 's|http://archive.ubuntu.com/ubuntu|http://azure.archive.ubuntu.com/ubuntu|g; s|http://security.ubuntu.com/ubuntu|http://azure.archive.ubuntu.com/ubuntu|g' /etc/apt/sources.list && \ + apt-get -o Acquire::http::Timeout=15 update && \ + DEBIAN_FRONTEND=noninteractive apt-get -o Acquire::http::Timeout=15 install -y \ --no-install-recommends \ --no-install-suggests \ curl \