From 4d3b56714921c5bad2e1cc6e8e14e93bed8fd02c Mon Sep 17 00:00:00 2001 From: Kristoffer Dalby Date: Wed, 13 May 2026 13:17:37 +0000 Subject: [PATCH] ci: use overlay2 storage driver instead of pinning docker v28 Docker 29 itself works; the breakage on the GHA runner image was the overlayfs default. Setting storage-driver=overlay2 restores the long-standing default and lets the suite run on the current Docker without the apt downgrade dance. Fixes #3094 --- .../workflows/integration-test-template.yml | 18 ++------- .github/workflows/test-integration.yaml | 38 +++++-------------- 2 files changed, 12 insertions(+), 44 deletions(-) diff --git a/.github/workflows/integration-test-template.yml b/.github/workflows/integration-test-template.yml index 75a1d275..efaaac4c 100644 --- a/.github/workflows/integration-test-template.yml +++ b/.github/workflows/integration-test-template.yml @@ -67,22 +67,10 @@ jobs: with: name: postgres-image path: /tmp/artifacts - - name: Pin Docker to v28 (avoid v29 breaking changes) + - name: Force overlay2 storage driver run: | - # Docker 29 breaks docker build via Go client libraries and - # docker load/save with certain tarball formats. - # Pin to Docker 28.x until our tooling is updated. - # https://github.com/actions/runner-images/issues/13474 - sudo install -m 0755 -d /etc/apt/keyrings - curl -fsSL https://download.docker.com/linux/ubuntu/gpg \ - | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg - echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \ - https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" \ - | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null - sudo apt-get update -qq - VERSION=$(apt-cache madison docker-ce | grep '28\.5' | head -1 | awk '{print $3}') - sudo apt-get install -y --allow-downgrades \ - "docker-ce=${VERSION}" "docker-ce-cli=${VERSION}" + sudo mkdir -p /etc/docker + echo '{"storage-driver":"overlay2"}' | sudo tee /etc/docker/daemon.json sudo systemctl restart docker docker version - name: Load Docker images, Go cache, and prepare binary diff --git a/.github/workflows/test-integration.yaml b/.github/workflows/test-integration.yaml index b30a5e1d..67fe0c47 100644 --- a/.github/workflows/test-integration.yaml +++ b/.github/workflows/test-integration.yaml @@ -69,23 +69,15 @@ jobs: name: go-cache path: go-cache.tar.gz retention-days: 10 - - name: Pin Docker to v28 (avoid v29 breaking changes) + - name: Force overlay2 storage driver if: steps.changed-files.outputs.files == 'true' run: | - # Docker 29 breaks docker build via Go client libraries and - # docker load/save with certain tarball formats. - # Pin to Docker 28.x until our tooling is updated. + # Docker 29 runner images default to overlayfs, which breaks + # docker build via Go SDK libraries and docker save/load + # tarball formats. overlay2 is the long-standing default. # https://github.com/actions/runner-images/issues/13474 - sudo install -m 0755 -d /etc/apt/keyrings - curl -fsSL https://download.docker.com/linux/ubuntu/gpg \ - | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg - echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \ - https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" \ - | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null - sudo apt-get update -qq - VERSION=$(apt-cache madison docker-ce | grep '28\.5' | head -1 | awk '{print $3}') - sudo apt-get install -y --allow-downgrades \ - "docker-ce=${VERSION}" "docker-ce-cli=${VERSION}" + sudo mkdir -p /etc/docker + echo '{"storage-driver":"overlay2"}' | sudo tee /etc/docker/daemon.json sudo systemctl restart docker docker version - name: Build headscale image @@ -123,22 +115,10 @@ jobs: needs: build if: needs.build.outputs.files-changed == 'true' steps: - - name: Pin Docker to v28 (avoid v29 breaking changes) + - name: Force overlay2 storage driver run: | - # Docker 29 breaks docker build via Go client libraries and - # docker load/save with certain tarball formats. - # Pin to Docker 28.x until our tooling is updated. - # https://github.com/actions/runner-images/issues/13474 - sudo install -m 0755 -d /etc/apt/keyrings - curl -fsSL https://download.docker.com/linux/ubuntu/gpg \ - | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg - echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \ - https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" \ - | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null - sudo apt-get update -qq - VERSION=$(apt-cache madison docker-ce | grep '28\.5' | head -1 | awk '{print $3}') - sudo apt-get install -y --allow-downgrades \ - "docker-ce=${VERSION}" "docker-ce-cli=${VERSION}" + sudo mkdir -p /etc/docker + echo '{"storage-driver":"overlay2"}' | sudo tee /etc/docker/daemon.json sudo systemctl restart docker docker version - name: Pull and save postgres image