Skip to content

Commit 88ca648

Browse files
authored
Fix CI E2E failures caused by Docker 29 on GitHub Actions runners (#13706)
GitHub Actions runners upgraded to Docker 29, which enables containerd image store by default. This causes two problems: 1. **containerd v2.1.5 lowered the default file descriptor limit** from 1,048,576 to 1,024, causing applications like Elasticsearch to crash immediately at startup (ES requires at least 65,536). 2. **Docker 29 raised the minimum API version to 1.44**, while the current `skywalking-infra-e2e` tool uses Docker SDK API v1.41, causing `client version 1.41 is too old` errors. This PR fixes both issues by: - Disabling the containerd image store (`containerd-snapshotter: false`) in all Docker-related CI jobs, restoring the classic overlay2 storage driver and its default ulimits. - Exporting `DOCKER_API_VERSION` from the server's supported version so the Docker SDK client negotiates correctly after restart. Affected jobs: `docker` (image build), `e2e-test`, `e2e-test-istio`, `e2e-test-istio-ambient`, `e2e-test-java-versions`.
1 parent b537891 commit 88ca648

File tree

1 file changed

+80
-0
lines changed

1 file changed

+80
-0
lines changed

.github/workflows/skywalking.yaml

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -204,6 +204,22 @@ jobs:
204204
with:
205205
submodules: true
206206
persist-credentials: false
207+
- name: Disable containerd image store
208+
shell: bash
209+
run: |
210+
DAEMON_JSON="/etc/docker/daemon.json"
211+
if [ -f "$DAEMON_JSON" ]; then
212+
sudo jq '. + {"features": {"containerd-snapshotter": false}}' "$DAEMON_JSON" \
213+
| sudo tee "${DAEMON_JSON}.tmp" > /dev/null
214+
sudo mv "${DAEMON_JSON}.tmp" "$DAEMON_JSON"
215+
else
216+
echo '{"features": {"containerd-snapshotter": false}}' \
217+
| sudo tee "$DAEMON_JSON" > /dev/null
218+
fi
219+
sudo systemctl restart docker
220+
docker version
221+
docker info
222+
echo "DOCKER_API_VERSION=$(docker version --format '{{.Server.APIVersion}}')" >> "$GITHUB_ENV"
207223
- uses: actions/download-artifact@v4
208224
name: Download distribution tar
209225
with:
@@ -739,6 +755,22 @@ jobs:
739755
with:
740756
submodules: true
741757
persist-credentials: false
758+
- name: Disable containerd image store
759+
shell: bash
760+
run: |
761+
DAEMON_JSON="/etc/docker/daemon.json"
762+
if [ -f "$DAEMON_JSON" ]; then
763+
sudo jq '. + {"features": {"containerd-snapshotter": false}}' "$DAEMON_JSON" \
764+
| sudo tee "${DAEMON_JSON}.tmp" > /dev/null
765+
sudo mv "${DAEMON_JSON}.tmp" "$DAEMON_JSON"
766+
else
767+
echo '{"features": {"containerd-snapshotter": false}}' \
768+
| sudo tee "$DAEMON_JSON" > /dev/null
769+
fi
770+
sudo systemctl restart docker
771+
docker version
772+
docker info
773+
echo "DOCKER_API_VERSION=$(docker version --format '{{.Server.APIVersion}}')" >> "$GITHUB_ENV"
742774
- run: grep -v '^#' test/e2e-v2/script/env >> "$GITHUB_ENV"
743775
- uses: apache/skywalking-cli/actions/setup@master
744776
with:
@@ -823,6 +855,22 @@ jobs:
823855
with:
824856
submodules: true
825857
persist-credentials: false
858+
- name: Disable containerd image store
859+
shell: bash
860+
run: |
861+
DAEMON_JSON="/etc/docker/daemon.json"
862+
if [ -f "$DAEMON_JSON" ]; then
863+
sudo jq '. + {"features": {"containerd-snapshotter": false}}' "$DAEMON_JSON" \
864+
| sudo tee "${DAEMON_JSON}.tmp" > /dev/null
865+
sudo mv "${DAEMON_JSON}.tmp" "$DAEMON_JSON"
866+
else
867+
echo '{"features": {"containerd-snapshotter": false}}' \
868+
| sudo tee "$DAEMON_JSON" > /dev/null
869+
fi
870+
sudo systemctl restart docker
871+
docker version
872+
docker info
873+
echo "DOCKER_API_VERSION=$(docker version --format '{{.Server.APIVersion}}')" >> "$GITHUB_ENV"
826874
- run: grep -v '^#' test/e2e-v2/script/env >> "$GITHUB_ENV"
827875
- uses: apache/skywalking-cli/actions/setup@master
828876
with:
@@ -884,6 +932,22 @@ jobs:
884932
with:
885933
submodules: true
886934
persist-credentials: false
935+
- name: Disable containerd image store
936+
shell: bash
937+
run: |
938+
DAEMON_JSON="/etc/docker/daemon.json"
939+
if [ -f "$DAEMON_JSON" ]; then
940+
sudo jq '. + {"features": {"containerd-snapshotter": false}}' "$DAEMON_JSON" \
941+
| sudo tee "${DAEMON_JSON}.tmp" > /dev/null
942+
sudo mv "${DAEMON_JSON}.tmp" "$DAEMON_JSON"
943+
else
944+
echo '{"features": {"containerd-snapshotter": false}}' \
945+
| sudo tee "$DAEMON_JSON" > /dev/null
946+
fi
947+
sudo systemctl restart docker
948+
docker version
949+
docker info
950+
echo "DOCKER_API_VERSION=$(docker version --format '{{.Server.APIVersion}}')" >> "$GITHUB_ENV"
887951
- run: grep -v '^#' test/e2e-v2/script/env >> "$GITHUB_ENV"
888952
- uses: apache/skywalking-cli/actions/setup@master
889953
with:
@@ -940,6 +1004,22 @@ jobs:
9401004
with:
9411005
submodules: true
9421006
persist-credentials: false
1007+
- name: Disable containerd image store
1008+
shell: bash
1009+
run: |
1010+
DAEMON_JSON="/etc/docker/daemon.json"
1011+
if [ -f "$DAEMON_JSON" ]; then
1012+
sudo jq '. + {"features": {"containerd-snapshotter": false}}' "$DAEMON_JSON" \
1013+
| sudo tee "${DAEMON_JSON}.tmp" > /dev/null
1014+
sudo mv "${DAEMON_JSON}.tmp" "$DAEMON_JSON"
1015+
else
1016+
echo '{"features": {"containerd-snapshotter": false}}' \
1017+
| sudo tee "$DAEMON_JSON" > /dev/null
1018+
fi
1019+
sudo systemctl restart docker
1020+
docker version
1021+
docker info
1022+
echo "DOCKER_API_VERSION=$(docker version --format '{{.Server.APIVersion}}')" >> "$GITHUB_ENV"
9431023
- run: grep -v '^#' test/e2e-v2/script/env >> "$GITHUB_ENV"
9441024
- uses: apache/skywalking-cli/actions/setup@master
9451025
with:

0 commit comments

Comments
 (0)