This is an automated email from the ASF dual-hosted git repository.

wusheng pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/skywalking.git


The following commit(s) were added to refs/heads/master by this push:
     new 88ca648759 Fix CI E2E failures caused by Docker 29 on GitHub Actions 
runners (#13706)
88ca648759 is described below

commit 88ca64875914613014cb0e99845d7a02b874a680
Author: 吴晟 Wu Sheng <[email protected]>
AuthorDate: Sat Feb 21 17:17:30 2026 +0800

    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`.
---
 .github/workflows/skywalking.yaml | 80 +++++++++++++++++++++++++++++++++++++++
 1 file changed, 80 insertions(+)

diff --git a/.github/workflows/skywalking.yaml 
b/.github/workflows/skywalking.yaml
index 695b18f50b..0a3813dcc3 100644
--- a/.github/workflows/skywalking.yaml
+++ b/.github/workflows/skywalking.yaml
@@ -204,6 +204,22 @@ jobs:
         with:
           submodules: true
           persist-credentials: false
+      - name: Disable containerd image store
+        shell: bash
+        run: |
+          DAEMON_JSON="/etc/docker/daemon.json"
+          if [ -f "$DAEMON_JSON" ]; then
+            sudo jq '. + {"features": {"containerd-snapshotter": false}}' 
"$DAEMON_JSON" \
+              | sudo tee "${DAEMON_JSON}.tmp" > /dev/null
+            sudo mv "${DAEMON_JSON}.tmp" "$DAEMON_JSON"
+          else
+            echo '{"features": {"containerd-snapshotter": false}}' \
+              | sudo tee "$DAEMON_JSON" > /dev/null
+          fi
+          sudo systemctl restart docker
+          docker version
+          docker info
+          echo "DOCKER_API_VERSION=$(docker version --format 
'{{.Server.APIVersion}}')" >> "$GITHUB_ENV"
       - uses: actions/download-artifact@v4
         name: Download distribution tar
         with:
@@ -739,6 +755,22 @@ jobs:
         with:
           submodules: true
           persist-credentials: false
+      - name: Disable containerd image store
+        shell: bash
+        run: |
+          DAEMON_JSON="/etc/docker/daemon.json"
+          if [ -f "$DAEMON_JSON" ]; then
+            sudo jq '. + {"features": {"containerd-snapshotter": false}}' 
"$DAEMON_JSON" \
+              | sudo tee "${DAEMON_JSON}.tmp" > /dev/null
+            sudo mv "${DAEMON_JSON}.tmp" "$DAEMON_JSON"
+          else
+            echo '{"features": {"containerd-snapshotter": false}}' \
+              | sudo tee "$DAEMON_JSON" > /dev/null
+          fi
+          sudo systemctl restart docker
+          docker version
+          docker info
+          echo "DOCKER_API_VERSION=$(docker version --format 
'{{.Server.APIVersion}}')" >> "$GITHUB_ENV"
       - run: grep -v '^#' test/e2e-v2/script/env >> "$GITHUB_ENV"
       - uses: apache/skywalking-cli/actions/setup@master
         with:
@@ -823,6 +855,22 @@ jobs:
         with:
           submodules: true
           persist-credentials: false
+      - name: Disable containerd image store
+        shell: bash
+        run: |
+          DAEMON_JSON="/etc/docker/daemon.json"
+          if [ -f "$DAEMON_JSON" ]; then
+            sudo jq '. + {"features": {"containerd-snapshotter": false}}' 
"$DAEMON_JSON" \
+              | sudo tee "${DAEMON_JSON}.tmp" > /dev/null
+            sudo mv "${DAEMON_JSON}.tmp" "$DAEMON_JSON"
+          else
+            echo '{"features": {"containerd-snapshotter": false}}' \
+              | sudo tee "$DAEMON_JSON" > /dev/null
+          fi
+          sudo systemctl restart docker
+          docker version
+          docker info
+          echo "DOCKER_API_VERSION=$(docker version --format 
'{{.Server.APIVersion}}')" >> "$GITHUB_ENV"
       - run: grep -v '^#' test/e2e-v2/script/env >> "$GITHUB_ENV"
       - uses: apache/skywalking-cli/actions/setup@master
         with:
@@ -884,6 +932,22 @@ jobs:
         with:
           submodules: true
           persist-credentials: false
+      - name: Disable containerd image store
+        shell: bash
+        run: |
+          DAEMON_JSON="/etc/docker/daemon.json"
+          if [ -f "$DAEMON_JSON" ]; then
+            sudo jq '. + {"features": {"containerd-snapshotter": false}}' 
"$DAEMON_JSON" \
+              | sudo tee "${DAEMON_JSON}.tmp" > /dev/null
+            sudo mv "${DAEMON_JSON}.tmp" "$DAEMON_JSON"
+          else
+            echo '{"features": {"containerd-snapshotter": false}}' \
+              | sudo tee "$DAEMON_JSON" > /dev/null
+          fi
+          sudo systemctl restart docker
+          docker version
+          docker info
+          echo "DOCKER_API_VERSION=$(docker version --format 
'{{.Server.APIVersion}}')" >> "$GITHUB_ENV"
       - run: grep -v '^#' test/e2e-v2/script/env >> "$GITHUB_ENV"
       - uses: apache/skywalking-cli/actions/setup@master
         with:
@@ -940,6 +1004,22 @@ jobs:
         with:
           submodules: true
           persist-credentials: false
+      - name: Disable containerd image store
+        shell: bash
+        run: |
+          DAEMON_JSON="/etc/docker/daemon.json"
+          if [ -f "$DAEMON_JSON" ]; then
+            sudo jq '. + {"features": {"containerd-snapshotter": false}}' 
"$DAEMON_JSON" \
+              | sudo tee "${DAEMON_JSON}.tmp" > /dev/null
+            sudo mv "${DAEMON_JSON}.tmp" "$DAEMON_JSON"
+          else
+            echo '{"features": {"containerd-snapshotter": false}}' \
+              | sudo tee "$DAEMON_JSON" > /dev/null
+          fi
+          sudo systemctl restart docker
+          docker version
+          docker info
+          echo "DOCKER_API_VERSION=$(docker version --format 
'{{.Server.APIVersion}}')" >> "$GITHUB_ENV"
       - run: grep -v '^#' test/e2e-v2/script/env >> "$GITHUB_ENV"
       - uses: apache/skywalking-cli/actions/setup@master
         with:

Reply via email to