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

songxiaosheng pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/dubbo-spi-extensions.git


The following commit(s) were added to refs/heads/master by this push:
     new c431f44b Fix ci workflows (#617)
c431f44b is described below

commit c431f44bda22237251ee4eb90355583eacf63a92
Author: Ankit Shokeen <[email protected]>
AuthorDate: Tue Apr 29 19:52:42 2025 +0530

    Fix ci workflows (#617)
    
    * Support JDK17 for CI enviroment #13868
    
    * updated maven profile for jdk17
    
    * Fix CI: Update Checkstyle Plugin to v3.6.0 and Ensure Compatibility
    
    * fix CI
    
    * Added chekstle header file
    
    * Muted header file for checktyle
    
    * Disable Jacoco coverage reporting in CI workflows
    
    * jacoco vesion change
    
    * Fix indentation issue in GitHub Actions workflow
    
    * Fix Codecov upload issue
    
    * fix(ci): Improve GitHub Actions workflow for CI and Codecov
    
    * revert build-and-test-pr changes
    
    * [CI] Refactor workflows: optimize multi-version testing & caching
    
    * Remove dubbo-build-tools references from workflows
    
    * Remove obsolete merge-test-results.sh call from CI workflow
    
    * Fix CI workflow: quote version strings and remove obsolete script
    
    * fix: conformance.yml
    
    * Fix CI workflow
    
    * Fix CI: for master
    
    * Fix CI: conformance.yml muted chore
    
    * Fix CI: conformance.yml (Added conditional check in Build Test Image)
    
    * refactor: simplify workflow using matrix strategy and remove unused steps
    
    ---------
    
    Co-authored-by: xiaosheng <[email protected]>
---
 .github/workflows/build-and-test-pr.yml            |  45 +--
 .github/workflows/build-and-test-scheduled-3.0.yml | 346 ---------------------
 .github/workflows/build-and-test-scheduled-3.1.yml | 346 ---------------------
 .github/workflows/build-and-test-scheduled-3.2.yml | 346 ---------------------
 .github/workflows/build-and-test-scheduled-3.3.yml | 346 ---------------------
 .../workflows/build-and-test-scheduled-main.yml    | 331 --------------------
 .github/workflows/conformance.yml                  | 281 +++++++++--------
 .github/workflows/release-test.yml                 |  59 ++--
 8 files changed, 213 insertions(+), 1887 deletions(-)

diff --git a/.github/workflows/build-and-test-pr.yml 
b/.github/workflows/build-and-test-pr.yml
index b2bb5bdd..75975ddc 100644
--- a/.github/workflows/build-and-test-pr.yml
+++ b/.github/workflows/build-and-test-pr.yml
@@ -7,15 +7,15 @@ permissions:
 
 env:
   FORK_COUNT: 2
-  FAIL_FAST: 0
-  SHOW_ERROR_DETAIL: 1
-  #multi-version size limit
-  VERSIONS_LIMIT: 4
+  FAIL_FAST: false
+  SHOW_ERROR_DETAIL: true
+  VERSIONS_LIMIT: 5
   JACOCO_ENABLE: true
   CANDIDATE_VERSIONS: '
     spring.version:5.3.24;
     spring-boot.version:2.7.6;
-    '
+    dubbo.version:latest;
+  '
 
 jobs:
   # Check ASF License
@@ -55,38 +55,46 @@ jobs:
     needs: check-license
     runs-on: ${{ matrix.os }}
     strategy:
+      fail-fast: false
       matrix:
         os: [ ubuntu-latest, windows-latest ]
-      fail-fast: false
+        dubbo-version:
+          - "3.0"
+          - "3.1"
+          - "3.2"
+          - "3.3"
+          - "3.4"
     outputs:
-      cache-key: ${{ steps.dubbo-build-tools.cache }}
+      cache-key: ${{ steps.maven-cache.outputs.cache-hit }}
     steps:
       - name: Support long paths on Windows
-        if: ${{ startsWith( matrix.os, 'windows') }}
+        if: ${{ startsWith(matrix.os, 'windows') }}
         run: git config --system core.longpaths true
-      - uses: actions/checkout@v4
-        name: build tools
+
+      - name: Checkout Dubbo Code
+        uses: actions/checkout@v4
         with:
           repository: 'apache/dubbo'
-          ref: '3.2'
+          ref: ${{ matrix.dubbo-version }}
           path: dubbo
+
       - name: "Set up JDK 17"
         uses: actions/setup-java@v4
         with:
           distribution: 'zulu'
           java-version: 17
+
       - uses: actions/cache@v4
         name: "Cache local Maven repository"
+        id: maven-cache
         with:
           path: ~/.m2/repository
-          key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
+          key: maven-${{ runner.os }}-${{ hashFiles('**/pom.xml') }}
           restore-keys: |
-            ${{ runner.os }}-maven-
-            ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
-      - name: "Build tools"
-        run: |
-          cd ./dubbo
-          ./mvnw --batch-mode -U -e --no-transfer-progress install -pl 
dubbo-build-tools -am -DskipTests=true
+            maven-${{ runner.os }}-${{ matrix.dubbo-version }}-
+            maven-${{ runner.os }}-maven-
+            maven-${{ runner.os }}-
+
   # Build from source code
   build-source:
     name: "Build Dubbo-SPI-Extensions"
@@ -97,6 +105,7 @@ jobs:
       version: ${{ steps.dubbo-spi-extensions-version.outputs.version }}
     steps:
       - uses: actions/checkout@v4
+        if: steps.cache.outputs.cache-hit != 'true'
         with:
           path: dubbo-spi-extensions
       - uses: actions/setup-java@v4
diff --git a/.github/workflows/build-and-test-scheduled-3.0.yml 
b/.github/workflows/build-and-test-scheduled-3.0.yml
deleted file mode 100644
index 1e11d348..00000000
--- a/.github/workflows/build-and-test-scheduled-3.0.yml
+++ /dev/null
@@ -1,346 +0,0 @@
-name: Build and Test Scheduled On 3.0
-
-on:
-  schedule:
-    - cron: '0 0/6 * * *'
-  workflow_dispatch:
-
-permissions:
-  contents: read
-
-env:
-  FORK_COUNT: 2
-  FAIL_FAST: 0
-  SHOW_ERROR_DETAIL: 1
-  #multi-version size limit
-  VERSIONS_LIMIT: 4
-  JACOCO_ENABLE: true
-  CANDIDATE_VERSIONS: '
-    spring.version:5.3.24;
-    spring-boot.version:2.7.6;
-    '
-
-jobs:
-  # Check ASF License
-  check-license:
-    name: "Check License"
-    runs-on: ubuntu-latest
-    steps:
-      - name: Checkout
-        uses: actions/checkout@v4
-        with:
-          ref: '3.0.0'
-      - name: Check License
-        uses: apache/[email protected]
-        env:
-          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-      - name: "Set up JDK 17"
-        uses: actions/setup-java@v4
-        with:
-          distribution: 'zulu'
-          java-version: 17
-      - name: Restore Maven local repository cache
-        uses: actions/cache@v4
-        with:
-          path: ~/.m2/repository
-          key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
-          restore-keys: |
-            ${{ runner.os }}-maven-
-            ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
-      - name: Check Dependencies' License
-        uses: 
apache/skywalking-eyes/dependency@e1a02359b239bd28de3f6d35fdc870250fa513d5
-        env:
-          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-        with:
-          config: .licenserc.yaml
-          mode: check
-  # Build dubbo-build-tool
-  build-tools:
-    name: "Build-tools"
-    needs: check-license
-    runs-on: ${{ matrix.os }}
-    strategy:
-      matrix:
-        os: [ ubuntu-latest, windows-latest ]
-      fail-fast: false
-    outputs:
-      cache-key: ${{ steps.dubbo-build-tools.cache }}
-    steps:
-      - name: Support long paths on Windows
-        if: ${{ startsWith( matrix.os, 'windows') }}
-        run: git config --system core.longpaths true
-      - uses: actions/checkout@v4
-        name: build tools
-        with:
-          repository: 'apache/dubbo'
-          ref: '3.0'
-          path: dubbo
-      - name: "Set up JDK 17"
-        uses: actions/setup-java@v4
-        with:
-          distribution: 'zulu'
-          java-version: 17
-      - uses: actions/cache@v4
-        name: "Cache local Maven repository"
-        with:
-          path: ~/.m2/repository
-          key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
-          restore-keys: |
-            ${{ runner.os }}-maven-
-            ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
-      - name: "Build tools"
-        run: |
-          cd ./dubbo
-          ./mvnw --batch-mode -U -e --no-transfer-progress install -pl 
dubbo-build-tools -am -DskipTests=true
-  # Build from source code
-  build-source:
-    name: "Build Dubbo-SPI-Extensions"
-    needs: [check-license, build-tools]
-    runs-on: ubuntu-latest
-    # output dubbo-spi-extensions version to others jobs
-    outputs:
-      version: ${{ steps.dubbo-spi-extensions-version.outputs.version }}
-    steps:
-      - uses: actions/checkout@v4
-        with:
-          ref: "3.0"
-          path: dubbo-spi-extensions
-      - uses: actions/setup-java@v4
-        with:
-          distribution: 'zulu'
-          java-version: 17
-      - uses: actions/cache@v4
-        name: "Cache local Maven repository"
-        with:
-          path: ~/.m2/repository
-          key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}-${{ 
github.run_id }}
-          restore-keys: |
-            ${{ runner.os }}-maven-
-            ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
-      - name: "Compile Dubbo-SPI-Extensions (Linux)"
-        run: |
-          cd ./dubbo-spi-extensions
-          ./mvnw --batch-mode --no-snapshot-updates -e --no-transfer-progress 
--fail-fast -T 2C clean compile -DskipTests=true -DskipIntegrationTests=true 
-Dcheckstyle.skip=true -Dcheckstyle_unix.skip=true -Drat.skip=true 
-Dmaven.javadoc.skip=true
-      - name: "Build Dubbo-SPI-Extensions with Maven"
-        run: |
-          cd ./dubbo-spi-extensions
-          ./mvnw --batch-mode --no-snapshot-updates -e --no-transfer-progress 
--fail-fast clean source:jar install -Pjacoco,checkstyle 
-Dmaven.wagon.httpconnectionManager.ttlSeconds=120 
-Dmaven.wagon.http.retryHandler.count=5 -Dmaven.test.skip=true 
-Dmaven.test.skip.exec=true -DembeddedZookeeperPath=${{ github.workspace 
}}/.tmp/zookeeper
-      - name: "Pack class result"
-        run: |
-          shopt -s globstar
-          zip ${{ github.workspace }}/class.zip **/target/classes/* -r
-      - name: "Upload class result"
-        uses: actions/upload-artifact@v4
-        with:
-          name: "class-file"
-          path: ${{ github.workspace }}/class.zip
-      - name: "Pack checkstyle file if failure"
-        if: failure()
-        run: zip ${{ github.workspace }}/checkstyle.zip *checkstyle* -r
-      - name: "Upload checkstyle file if failure"
-        if: failure()
-        uses: actions/upload-artifact@v4
-        with:
-          name: "checkstyle-file"
-          path: ${{ github.workspace }}/checkstyle.zip
-      - name: "Calculate Dubbo-SPI-Extensions Version"
-        id: dubbo-spi-extensions-version
-        run: |
-          REVISION=`awk 
'/<revision>[^<]+<\/revision>/{gsub(/<revision>|<\/revision>/,"",$1);print 
$1;exit;}' ./dubbo-spi-extensions/pom.xml`
-          echo "version=$REVISION" >> $GITHUB_OUTPUT
-          echo "dubbo-spi-extensions version: $REVISION"
-  # Download dependencies Prepare for unit test
-  unit-test-prepare:
-    name: "Preparation for Unit Test On ${{ matrix.os }}"
-    needs: [check-license]
-    runs-on: ${{ matrix.os }}
-    strategy:
-      matrix:
-        os: [ ubuntu-latest, windows-latest ]
-      fail-fast: false
-    env:
-      ZOOKEEPER_VERSION: 3.6.3
-    steps:
-      - uses: actions/cache@v4
-        name: "Cache zookeeper binary archive"
-        id: "cache-zookeeper"
-        with:
-          path: ${{ github.workspace }}/.tmp/zookeeper
-          key: zookeeper-${{ runner.os }}-${{ env.ZOOKEEPER_VERSION }}
-          restore-keys: |
-            zookeeper-${{ runner.os }}-${{ env.ZOOKEEPER_VERSION }}
-      - name: "Set up msys2 if necessary"
-        if: ${{ startsWith( matrix.os, 'windows') && 
steps.cache-zookeeper.outputs.cache-hit != 'true' }}
-        uses: msys2/setup-msys2@v2
-        with:
-          release: false  # support cache, see 
https://github.com/msys2/setup-msys2#context
-      - name: "Download zookeeper binary archive in Linux OS"
-        if: ${{ startsWith( matrix.os, 'ubuntu') && 
steps.cache-zookeeper.outputs.cache-hit != 'true' }}
-        run: |
-          mkdir -p ${{ github.workspace }}/.tmp/zookeeper
-          wget -c https://archive.apache.org/dist/zookeeper/zookeeper-${{ 
env.ZOOKEEPER_VERSION }}/apache-zookeeper-${{ env.ZOOKEEPER_VERSION 
}}-bin.tar.gz -O ${{ github.workspace 
}}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz ||
-          wget -c https://apache.website-solution.net/zookeeper/zookeeper-${{ 
env.ZOOKEEPER_VERSION }}/apache-zookeeper-${{ env.ZOOKEEPER_VERSION 
}}-bin.tar.gz -O ${{ github.workspace 
}}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz ||
-          wget -c http://apache.stu.edu.tw/zookeeper/zookeeper-${{ 
env.ZOOKEEPER_VERSION }}/apache-zookeeper-${{ env.ZOOKEEPER_VERSION 
}}-bin.tar.gz -O ${{ github.workspace 
}}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz ||
-          wget -c http://ftp.jaist.ac.jp/pub/apache/zookeeper/zookeeper-${{ 
env.ZOOKEEPER_VERSION }}/apache-zookeeper-${{ env.ZOOKEEPER_VERSION 
}}-bin.tar.gz -O ${{ github.workspace 
}}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz ||
-          wget -c http://apache.mirror.cdnetworks.com/zookeeper/zookeeper-${{ 
env.ZOOKEEPER_VERSION }}/apache-zookeeper-${{ env.ZOOKEEPER_VERSION 
}}-bin.tar.gz -O ${{ github.workspace 
}}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz ||
-          wget -c http://mirror.apache-kr.org/apache/zookeeper/zookeeper-${{ 
env.ZOOKEEPER_VERSION }}/apache-zookeeper-${{ env.ZOOKEEPER_VERSION 
}}-bin.tar.gz -O ${{ github.workspace 
}}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz
-          echo "list the downloaded zookeeper binary archive"
-          ls -al ${{ github.workspace 
}}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz
-      - name: "Download zookeeper binary archive in Windows OS"
-        if: ${{ startsWith( matrix.os, 'windows') && 
steps.cache-zookeeper.outputs.cache-hit != 'true' }}
-        shell: msys2 {0}
-        run: |
-          mkdir -p ${{ github.workspace }}/.tmp/zookeeper
-          wget -c https://archive.apache.org/dist/zookeeper/zookeeper-${{ 
env.ZOOKEEPER_VERSION }}/apache-zookeeper-${{ env.ZOOKEEPER_VERSION 
}}-bin.tar.gz -O ${{ github.workspace 
}}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz ||
-          wget -c https://apache.website-solution.net/zookeeper/zookeeper-${{ 
env.ZOOKEEPER_VERSION }}/apache-zookeeper-${{ env.ZOOKEEPER_VERSION 
}}-bin.tar.gz -O ${{ github.workspace 
}}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz ||
-          wget -c http://apache.stu.edu.tw/zookeeper/zookeeper-${{ 
env.ZOOKEEPER_VERSION }}/apache-zookeeper-${{ env.ZOOKEEPER_VERSION 
}}-bin.tar.gz -O ${{ github.workspace 
}}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz ||
-          wget -c http://ftp.jaist.ac.jp/pub/apache/zookeeper/zookeeper-${{ 
env.ZOOKEEPER_VERSION }}/apache-zookeeper-${{ env.ZOOKEEPER_VERSION 
}}-bin.tar.gz -O ${{ github.workspace 
}}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz ||
-          wget -c http://apache.mirror.cdnetworks.com/zookeeper/zookeeper-${{ 
env.ZOOKEEPER_VERSION }}/apache-zookeeper-${{ env.ZOOKEEPER_VERSION 
}}-bin.tar.gz -O ${{ github.workspace 
}}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz ||
-          wget -c http://mirror.apache-kr.org/apache/zookeeper/zookeeper-${{ 
env.ZOOKEEPER_VERSION }}/apache-zookeeper-${{ env.ZOOKEEPER_VERSION 
}}-bin.tar.gz -O ${{ github.workspace 
}}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz
-          echo "list the downloaded zookeeper binary archive"
-          ls -al ${{ github.workspace 
}}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz
-      - uses: actions/cache@v4
-        name: "Cache secret key"
-        id: "cache-secret-cert"
-        with:
-          path: ${{ github.workspace }}/.tmp/rsa
-          key: secret-rsa-${{ runner.os }}-${{ github.run_id }}
-      - name: "Create Secret"
-        run: |
-          mkdir -p ${{ github.workspace }}/.tmp/rsa
-          cd ${{ github.workspace }}/.tmp/rsa
-          openssl genrsa -out rsa_private.pem 1024
-          openssl rsa -in rsa_private.pem -pubout -out rsa_public.pem
-          echo "Current workflow run id: ${{ github.run_id }}"
-          echo "Start Print Rsa Public Key ---"
-          cat rsa_public.pem
-          echo "--- End Print Rsa Public Key"
-  # Start unit test
-  unit-test:
-    needs: [check-license, build-source, unit-test-prepare]
-    name: "Unit Test ${{ matrix.os }} with JDK ${{ matrix.jdk }}"
-    runs-on: ${{ matrix.os }}
-    strategy:
-      matrix:
-        os: [ ubuntu-latest, windows-latest ]
-        jdk: [17]
-      fail-fast: false
-    env:
-      DISABLE_FILE_SYSTEM_TEST: true
-      CURRENT_ROLE: ${{ matrix.case-role }}
-      DUBBO_DEFAULT_SERIALIZATION: fastjson2
-    steps:
-      - name: Support Windows
-        if: ${{ startsWith( matrix.os, 'windows') }}
-        run: |
-          git config --system core.longpaths true
-      - uses: actions/checkout@v4
-        with:
-          fetch-depth: 0
-      - name: "Set up JDK ${{ matrix.jdk }}"
-        uses: actions/setup-java@v4
-        with:
-          distribution: 'zulu'
-          java-version: 17
-      - uses: actions/cache@v4
-        name: "Cache local Maven repository"
-        with:
-          path: ~/.m2/repository
-          key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}-${{ 
github.run_id }}
-          restore-keys: |
-            ${{ runner.os }}-maven-
-            ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
-      - uses: actions/cache@v4
-        name: "Cache zookeeper binary archive"
-        id: "cache-zookeeper"
-        with:
-          path: ${{ github.workspace }}/.tmp/zookeeper
-          key: zookeeper-${{ runner.os }}-${{ env.ZOOKEEPER_VERSION }}
-          restore-keys: |
-            zookeeper-${{ runner.os }}-
-      - uses: actions/cache@v4
-        name: "Cache secret key"
-        id: "cache-secret-cert"
-        with:
-          path: ${{ github.workspace }}/.tmp/rsa
-          key: secret-rsa-${{ runner.os }}-${{ github.run_id }}
-      #      - name: "Get sonarcloud token"
-      #        if: ${{ github.repository == 'apache/dubbo-spi-extensions' }}
-      #        run: |
-      #          curl "http://dubbo-vm.apache.org:8000/token?workflow_id=${{ 
github.run_id }}" -o ${{ github.workspace }}/.tmp/encrypted-sonarcloud-token
-      #          openssl rsautl -decrypt -in ${{ github.workspace 
}}/.tmp/encrypted-sonarcloud-token -out ${{ github.workspace 
}}/.tmp/decrypted-sonarcloud-token -inkey ${{ github.workspace 
}}/.tmp/rsa/rsa_private.pem
-      #      - name: "Test with Maven with SonarCloud Scan"
-      #        if: ${{ github.repository == 'apache/dubbo-spi-extensions' }}
-      #        timeout-minutes: 70
-      #        env:
-      #          # Needed to get some information about the pull request, if 
any
-      #          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-      #        run: |
-      #          source ${{ github.workspace }}/.tmp/decrypted-sonarcloud-token
-      #          ./mvnw --batch-mode --no-snapshot-updates -e 
--no-transfer-progress --fail-fast clean test verify 
org.sonarsource.scanner.maven:sonar-maven-plugin:sonar 
-Pjacoco,jdk15ge-simple,'!jdk15ge',jacoco089 
-Dsonar.host.url=https://sonarcloud.io -Dsonar.organization=apache 
-Dsonar.projectKey=apache_dubbo -DtrimStackTrace=false 
-Dmaven.wagon.httpconnectionManager.ttlSeconds=120 
-Dmaven.wagon.http.retryHandler.count=5 -DskipTests=false 
-DskipIntegrationTests=false -Dcheckstyle.skip [...]
-      - name: "Test with Maven without SonarCloud Scan On Linux"
-        if: ${{ startsWith( matrix.os, 'linux') || startsWith( matrix.os, 
'ubuntu') }}
-        timeout-minutes: 70
-        run: |
-          ./mvnw --batch-mode --no-snapshot-updates -e --no-transfer-progress 
--fail-fast clean test verify 
-D"maven.wagon.httpconnectionManager.ttlSeconds=120" -Pjacoco 
-DtrimStackTrace=false -D"maven.wagon.http.retryHandler.count=5" 
-DskipTests=false -DskipIntegrationTests=false -D"checkstyle.skip=false" 
-D"checkstyle_unix.skip=false" -D"rat.skip=false" -D"maven.javadoc.skip=true" 
-D"embeddedZookeeperPath=${{ github.workspace }}/.tmp/zookeeper"
-      - name: "Test with Maven without SonarCloud Scan On Windows"
-        if: ${{ startsWith( matrix.os, 'windows')  }}
-        timeout-minutes: 70
-        run: |
-          ./mvnw --batch-mode --no-snapshot-updates -e --no-transfer-progress 
--fail-fast clean test verify 
-D"maven.wagon.httpconnectionManager.ttlSeconds=120" -Pjacoco 
-DtrimStackTrace=false -D"maven.wagon.http.retryHandler.count=5" 
-DskipTests=false -DskipIntegrationTests=false -D"checkstyle.skip=false" 
-D"checkstyle_unix.skip=true" -D"rat.skip=false" -D"maven.javadoc.skip=true" 
-D"embeddedZookeeperPath=${{ github.workspace }}/.tmp/zookeeper"
-      - name: "Upload surefire-reports if failure"
-        if: ${{ failure() }}
-        uses: actions/upload-artifact@v4
-        with:
-          name: surefire-reports-${{ matrix.os }}-${{ matrix.jdk }}
-          path: "**/target/surefire-reports/**"
-      - name: "Upload coverage result"
-        uses: actions/upload-artifact@v4
-        with:
-          name: coverage-result-${{ matrix.os }}-${{ matrix.jdk }}
-          path: "**/target/site/**/jacoco.xml"
-      - name: "Upload coverage to Codecov"
-        uses: codecov/codecov-action@v4
-
-#  error-code-inspecting:
-#    needs: [check-license, build-tools]
-#    runs-on: ubuntu-latest
-#    steps:
-#      - uses: actions/checkout@v4
-#        with:
-#          path: "./dubbo-spi-extensions"
-#      - uses: actions/checkout@v4
-#        with:
-#          repository: 'apache/dubbo-test-tools'
-#          ref: main
-#          path: "./dubbo-test-tools"
-#      - name: "Set up JDK 21"
-#        uses: actions/setup-java@v4
-#        with:
-#          distribution: 'zulu'
-#          java-version: 21
-#      - name: Restore Maven local repository cache
-#        uses: actions/cache@v4
-#        with:
-#          path: ~/.m2/repository
-#          key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
-#          restore-keys: |
-#            ${{ runner.os }}-maven-
-#            ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
-#      - name: "Compile Dubbo-SPI-Extensions (Linux)"
-#        run: |
-#          cd ${{ github.workspace }}/dubbo-spi-extensions
-#          ./mvnw --batch-mode --no-snapshot-updates -e --no-transfer-progress 
--fail-fast -T 2C clean install -DskipTests=true -DskipIntegrationTests=true 
-Dcheckstyle.skip=true -Dcheckstyle_unix.skip=true -Drat.skip=true 
-Dmaven.javadoc.skip=true
-#      - name: "Run Error Code Inspecting"
-#        env:
-#          DUBBO_ECI_REPORT_AS_ERROR: true
-#        run: |
-#          cd ${{ github.workspace 
}}/dubbo-test-tools/dubbo-error-code-inspector
-#          ../mvnw --batch-mode --no-snapshot-updates -e 
--no-transfer-progress --fail-fast -T 2C package exec:java 
-Ddubbo.eci.report-as-error=${DUBBO_ECI_REPORT_AS_ERROR} -Dmaven.test.skip=true 
-Dmaven.test.skip.exec=true -Ddubbo.eci.path=${{ github.workspace 
}}/dubbo-spi-extensions
-#      - name: "Upload error code inspection result"
-#        # always() should not be used here, since we don't need to handle the 
'canceled' situation.
-#        if: ${{ success() || failure() }}
-#        uses: actions/upload-artifact@v4
-#        with:
-#          name: "error-inspection-result"
-#          path: ${{ github.workspace 
}}/dubbo-test-tools/dubbo-error-code-inspector/error-inspection-result.txt
diff --git a/.github/workflows/build-and-test-scheduled-3.1.yml 
b/.github/workflows/build-and-test-scheduled-3.1.yml
deleted file mode 100644
index 8e89fd19..00000000
--- a/.github/workflows/build-and-test-scheduled-3.1.yml
+++ /dev/null
@@ -1,346 +0,0 @@
-name: Build and Test Scheduled On 3.1
-
-on:
-  schedule:
-    - cron: '0 0/6 * * *'
-  workflow_dispatch:
-
-permissions:
-  contents: read
-
-env:
-  FORK_COUNT: 2
-  FAIL_FAST: 0
-  SHOW_ERROR_DETAIL: 1
-  #multi-version size limit
-  VERSIONS_LIMIT: 4
-  JACOCO_ENABLE: true
-  CANDIDATE_VERSIONS: '
-    spring.version:5.3.24;
-    spring-boot.version:2.7.6;
-    '
-
-jobs:
-  # Check ASF License
-  check-license:
-    name: "Check License"
-    runs-on: ubuntu-latest
-    steps:
-      - name: Checkout
-        uses: actions/checkout@v4
-        with:
-          ref: '3.1'
-      - name: Check License
-        uses: apache/[email protected]
-        env:
-          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-      - name: "Set up JDK 17"
-        uses: actions/setup-java@v4
-        with:
-          distribution: 'zulu'
-          java-version: 17
-      - name: Restore Maven local repository cache
-        uses: actions/cache@v4
-        with:
-          path: ~/.m2/repository
-          key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
-          restore-keys: |
-            ${{ runner.os }}-maven-
-            ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
-      - name: Check Dependencies' License
-        uses: 
apache/skywalking-eyes/dependency@e1a02359b239bd28de3f6d35fdc870250fa513d5
-        env:
-          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-        with:
-          config: .licenserc.yaml
-          mode: check
-  # Build dubbo-build-tool
-  build-tools:
-    name: "Build-tools"
-    needs: check-license
-    runs-on: ${{ matrix.os }}
-    strategy:
-      matrix:
-        os: [ ubuntu-latest, windows-latest ]
-      fail-fast: false
-    outputs:
-      cache-key: ${{ steps.dubbo-build-tools.cache }}
-    steps:
-      - name: Support long paths on Windows
-        if: ${{ startsWith( matrix.os, 'windows') }}
-        run: git config --system core.longpaths true
-      - uses: actions/checkout@v4
-        name: build tools
-        with:
-          repository: 'apache/dubbo'
-          ref: '3.1'
-          path: dubbo
-      - name: "Set up JDK 17"
-        uses: actions/setup-java@v4
-        with:
-          distribution: 'zulu'
-          java-version: 17
-      - uses: actions/cache@v4
-        name: "Cache local Maven repository"
-        with:
-          path: ~/.m2/repository
-          key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
-          restore-keys: |
-            ${{ runner.os }}-maven-
-            ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
-      - name: "Build tools"
-        run: |
-          cd ./dubbo
-          ./mvnw --batch-mode -U -e --no-transfer-progress install -pl 
dubbo-build-tools -am -DskipTests=true
-  # Build from source code
-  build-source:
-    name: "Build Dubbo-SPI-Extensions"
-    needs: [check-license, build-tools]
-    runs-on: ubuntu-latest
-    # output dubbo-spi-extensions version to others jobs
-    outputs:
-      version: ${{ steps.dubbo-spi-extensions-version.outputs.version }}
-    steps:
-      - uses: actions/checkout@v4
-        with:
-          ref: "3.1"
-          path: dubbo-spi-extensions
-      - uses: actions/setup-java@v4
-        with:
-          distribution: 'zulu'
-          java-version: 17
-      - uses: actions/cache@v4
-        name: "Cache local Maven repository"
-        with:
-          path: ~/.m2/repository
-          key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}-${{ 
github.run_id }}
-          restore-keys: |
-            ${{ runner.os }}-maven-
-            ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
-      - name: "Compile Dubbo-SPI-Extensions (Linux)"
-        run: |
-          cd ./dubbo-spi-extensions
-          ./mvnw --batch-mode --no-snapshot-updates -e --no-transfer-progress 
--fail-fast -T 2C clean compile -DskipTests=true -DskipIntegrationTests=true 
-Dcheckstyle.skip=true -Dcheckstyle_unix.skip=true -Drat.skip=true 
-Dmaven.javadoc.skip=true
-      - name: "Build Dubbo-SPI-Extensions with Maven"
-        run: |
-          cd ./dubbo-spi-extensions
-          ./mvnw --batch-mode --no-snapshot-updates -e --no-transfer-progress 
--fail-fast clean source:jar install -Pjacoco,checkstyle 
-Dmaven.wagon.httpconnectionManager.ttlSeconds=120 
-Dmaven.wagon.http.retryHandler.count=5 -Dmaven.test.skip=true 
-Dmaven.test.skip.exec=true -DembeddedZookeeperPath=${{ github.workspace 
}}/.tmp/zookeeper
-      - name: "Pack class result"
-        run: |
-          shopt -s globstar
-          zip ${{ github.workspace }}/class.zip **/target/classes/* -r
-      - name: "Upload class result"
-        uses: actions/upload-artifact@v4
-        with:
-          name: "class-file"
-          path: ${{ github.workspace }}/class.zip
-      - name: "Pack checkstyle file if failure"
-        if: failure()
-        run: zip ${{ github.workspace }}/checkstyle.zip *checkstyle* -r
-      - name: "Upload checkstyle file if failure"
-        if: failure()
-        uses: actions/upload-artifact@v4
-        with:
-          name: "checkstyle-file"
-          path: ${{ github.workspace }}/checkstyle.zip
-      - name: "Calculate Dubbo-SPI-Extensions Version"
-        id: dubbo-spi-extensions-version
-        run: |
-          REVISION=`awk 
'/<revision>[^<]+<\/revision>/{gsub(/<revision>|<\/revision>/,"",$1);print 
$1;exit;}' ./dubbo-spi-extensions/pom.xml`
-          echo "version=$REVISION" >> $GITHUB_OUTPUT
-          echo "dubbo-spi-extensions version: $REVISION"
-  # Download dependencies Prepare for unit test
-  unit-test-prepare:
-    name: "Preparation for Unit Test On ${{ matrix.os }}"
-    needs: [check-license]
-    runs-on: ${{ matrix.os }}
-    strategy:
-      matrix:
-        os: [ ubuntu-latest, windows-latest ]
-      fail-fast: false
-    env:
-      ZOOKEEPER_VERSION: 3.6.3
-    steps:
-      - uses: actions/cache@v4
-        name: "Cache zookeeper binary archive"
-        id: "cache-zookeeper"
-        with:
-          path: ${{ github.workspace }}/.tmp/zookeeper
-          key: zookeeper-${{ runner.os }}-${{ env.ZOOKEEPER_VERSION }}
-          restore-keys: |
-            zookeeper-${{ runner.os }}-${{ env.ZOOKEEPER_VERSION }}
-      - name: "Set up msys2 if necessary"
-        if: ${{ startsWith( matrix.os, 'windows') && 
steps.cache-zookeeper.outputs.cache-hit != 'true' }}
-        uses: msys2/setup-msys2@v2
-        with:
-          release: false  # support cache, see 
https://github.com/msys2/setup-msys2#context
-      - name: "Download zookeeper binary archive in Linux OS"
-        if: ${{ startsWith( matrix.os, 'ubuntu') && 
steps.cache-zookeeper.outputs.cache-hit != 'true' }}
-        run: |
-          mkdir -p ${{ github.workspace }}/.tmp/zookeeper
-          wget -c https://archive.apache.org/dist/zookeeper/zookeeper-${{ 
env.ZOOKEEPER_VERSION }}/apache-zookeeper-${{ env.ZOOKEEPER_VERSION 
}}-bin.tar.gz -O ${{ github.workspace 
}}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz ||
-          wget -c https://apache.website-solution.net/zookeeper/zookeeper-${{ 
env.ZOOKEEPER_VERSION }}/apache-zookeeper-${{ env.ZOOKEEPER_VERSION 
}}-bin.tar.gz -O ${{ github.workspace 
}}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz ||
-          wget -c http://apache.stu.edu.tw/zookeeper/zookeeper-${{ 
env.ZOOKEEPER_VERSION }}/apache-zookeeper-${{ env.ZOOKEEPER_VERSION 
}}-bin.tar.gz -O ${{ github.workspace 
}}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz ||
-          wget -c http://ftp.jaist.ac.jp/pub/apache/zookeeper/zookeeper-${{ 
env.ZOOKEEPER_VERSION }}/apache-zookeeper-${{ env.ZOOKEEPER_VERSION 
}}-bin.tar.gz -O ${{ github.workspace 
}}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz ||
-          wget -c http://apache.mirror.cdnetworks.com/zookeeper/zookeeper-${{ 
env.ZOOKEEPER_VERSION }}/apache-zookeeper-${{ env.ZOOKEEPER_VERSION 
}}-bin.tar.gz -O ${{ github.workspace 
}}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz ||
-          wget -c http://mirror.apache-kr.org/apache/zookeeper/zookeeper-${{ 
env.ZOOKEEPER_VERSION }}/apache-zookeeper-${{ env.ZOOKEEPER_VERSION 
}}-bin.tar.gz -O ${{ github.workspace 
}}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz
-          echo "list the downloaded zookeeper binary archive"
-          ls -al ${{ github.workspace 
}}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz
-      - name: "Download zookeeper binary archive in Windows OS"
-        if: ${{ startsWith( matrix.os, 'windows') && 
steps.cache-zookeeper.outputs.cache-hit != 'true' }}
-        shell: msys2 {0}
-        run: |
-          mkdir -p ${{ github.workspace }}/.tmp/zookeeper
-          wget -c https://archive.apache.org/dist/zookeeper/zookeeper-${{ 
env.ZOOKEEPER_VERSION }}/apache-zookeeper-${{ env.ZOOKEEPER_VERSION 
}}-bin.tar.gz -O ${{ github.workspace 
}}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz ||
-          wget -c https://apache.website-solution.net/zookeeper/zookeeper-${{ 
env.ZOOKEEPER_VERSION }}/apache-zookeeper-${{ env.ZOOKEEPER_VERSION 
}}-bin.tar.gz -O ${{ github.workspace 
}}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz ||
-          wget -c http://apache.stu.edu.tw/zookeeper/zookeeper-${{ 
env.ZOOKEEPER_VERSION }}/apache-zookeeper-${{ env.ZOOKEEPER_VERSION 
}}-bin.tar.gz -O ${{ github.workspace 
}}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz ||
-          wget -c http://ftp.jaist.ac.jp/pub/apache/zookeeper/zookeeper-${{ 
env.ZOOKEEPER_VERSION }}/apache-zookeeper-${{ env.ZOOKEEPER_VERSION 
}}-bin.tar.gz -O ${{ github.workspace 
}}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz ||
-          wget -c http://apache.mirror.cdnetworks.com/zookeeper/zookeeper-${{ 
env.ZOOKEEPER_VERSION }}/apache-zookeeper-${{ env.ZOOKEEPER_VERSION 
}}-bin.tar.gz -O ${{ github.workspace 
}}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz ||
-          wget -c http://mirror.apache-kr.org/apache/zookeeper/zookeeper-${{ 
env.ZOOKEEPER_VERSION }}/apache-zookeeper-${{ env.ZOOKEEPER_VERSION 
}}-bin.tar.gz -O ${{ github.workspace 
}}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz
-          echo "list the downloaded zookeeper binary archive"
-          ls -al ${{ github.workspace 
}}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz
-      - uses: actions/cache@v4
-        name: "Cache secret key"
-        id: "cache-secret-cert"
-        with:
-          path: ${{ github.workspace }}/.tmp/rsa
-          key: secret-rsa-${{ runner.os }}-${{ github.run_id }}
-      - name: "Create Secret"
-        run: |
-          mkdir -p ${{ github.workspace }}/.tmp/rsa
-          cd ${{ github.workspace }}/.tmp/rsa
-          openssl genrsa -out rsa_private.pem 1024
-          openssl rsa -in rsa_private.pem -pubout -out rsa_public.pem
-          echo "Current workflow run id: ${{ github.run_id }}"
-          echo "Start Print Rsa Public Key ---"
-          cat rsa_public.pem
-          echo "--- End Print Rsa Public Key"
-  # Start unit test
-  unit-test:
-    needs: [check-license, build-source, unit-test-prepare]
-    name: "Unit Test ${{ matrix.os }} with JDK ${{ matrix.jdk }}"
-    runs-on: ${{ matrix.os }}
-    strategy:
-      matrix:
-        os: [ ubuntu-latest, windows-latest ]
-        jdk: [17]
-      fail-fast: false
-    env:
-      DISABLE_FILE_SYSTEM_TEST: true
-      CURRENT_ROLE: ${{ matrix.case-role }}
-      DUBBO_DEFAULT_SERIALIZATION: fastjson2
-    steps:
-      - name: Support Windows
-        if: ${{ startsWith( matrix.os, 'windows') }}
-        run: |
-          git config --system core.longpaths true
-      - uses: actions/checkout@v4
-        with:
-          fetch-depth: 0
-      - name: "Set up JDK ${{ matrix.jdk }}"
-        uses: actions/setup-java@v4
-        with:
-          distribution: 'zulu'
-          java-version: 17
-      - uses: actions/cache@v4
-        name: "Cache local Maven repository"
-        with:
-          path: ~/.m2/repository
-          key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}-${{ 
github.run_id }}
-          restore-keys: |
-            ${{ runner.os }}-maven-
-            ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
-      - uses: actions/cache@v4
-        name: "Cache zookeeper binary archive"
-        id: "cache-zookeeper"
-        with:
-          path: ${{ github.workspace }}/.tmp/zookeeper
-          key: zookeeper-${{ runner.os }}-${{ env.ZOOKEEPER_VERSION }}
-          restore-keys: |
-            zookeeper-${{ runner.os }}-
-      - uses: actions/cache@v4
-        name: "Cache secret key"
-        id: "cache-secret-cert"
-        with:
-          path: ${{ github.workspace }}/.tmp/rsa
-          key: secret-rsa-${{ runner.os }}-${{ github.run_id }}
-      #      - name: "Get sonarcloud token"
-      #        if: ${{ github.repository == 'apache/dubbo-spi-extensions' }}
-      #        run: |
-      #          curl "http://dubbo-vm.apache.org:8000/token?workflow_id=${{ 
github.run_id }}" -o ${{ github.workspace }}/.tmp/encrypted-sonarcloud-token
-      #          openssl rsautl -decrypt -in ${{ github.workspace 
}}/.tmp/encrypted-sonarcloud-token -out ${{ github.workspace 
}}/.tmp/decrypted-sonarcloud-token -inkey ${{ github.workspace 
}}/.tmp/rsa/rsa_private.pem
-      #      - name: "Test with Maven with SonarCloud Scan"
-      #        if: ${{ github.repository == 'apache/dubbo-spi-extensions' }}
-      #        timeout-minutes: 70
-      #        env:
-      #          # Needed to get some information about the pull request, if 
any
-      #          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-      #        run: |
-      #          source ${{ github.workspace }}/.tmp/decrypted-sonarcloud-token
-      #          ./mvnw --batch-mode --no-snapshot-updates -e 
--no-transfer-progress --fail-fast clean test verify 
org.sonarsource.scanner.maven:sonar-maven-plugin:sonar 
-Pjacoco,jdk15ge-simple,'!jdk15ge',jacoco089 
-Dsonar.host.url=https://sonarcloud.io -Dsonar.organization=apache 
-Dsonar.projectKey=apache_dubbo -DtrimStackTrace=false 
-Dmaven.wagon.httpconnectionManager.ttlSeconds=120 
-Dmaven.wagon.http.retryHandler.count=5 -DskipTests=false 
-DskipIntegrationTests=false -Dcheckstyle.skip [...]
-      - name: "Test with Maven without SonarCloud Scan On Linux"
-        if: ${{ startsWith( matrix.os, 'linux') || startsWith( matrix.os, 
'ubuntu') }}
-        timeout-minutes: 70
-        run: |
-          ./mvnw --batch-mode --no-snapshot-updates -e --no-transfer-progress 
--fail-fast clean test verify 
-D"maven.wagon.httpconnectionManager.ttlSeconds=120" -Pjacoco 
-DtrimStackTrace=false -D"maven.wagon.http.retryHandler.count=5" 
-DskipTests=false -DskipIntegrationTests=false -D"checkstyle.skip=false" 
-D"checkstyle_unix.skip=false" -D"rat.skip=false" -D"maven.javadoc.skip=true" 
-D"embeddedZookeeperPath=${{ github.workspace }}/.tmp/zookeeper"
-      - name: "Test with Maven without SonarCloud Scan On Windows"
-        if: ${{ startsWith( matrix.os, 'windows')  }}
-        timeout-minutes: 70
-        run: |
-          ./mvnw --batch-mode --no-snapshot-updates -e --no-transfer-progress 
--fail-fast clean test verify 
-D"maven.wagon.httpconnectionManager.ttlSeconds=120" -Pjacoco 
-DtrimStackTrace=false -D"maven.wagon.http.retryHandler.count=5" 
-DskipTests=false -DskipIntegrationTests=false -D"checkstyle.skip=false" 
-D"checkstyle_unix.skip=true" -D"rat.skip=false" -D"maven.javadoc.skip=true" 
-D"embeddedZookeeperPath=${{ github.workspace }}/.tmp/zookeeper"
-      - name: "Upload surefire-reports if failure"
-        if: ${{ failure() }}
-        uses: actions/upload-artifact@v4
-        with:
-          name: surefire-reports-${{ matrix.os }}-${{ matrix.jdk }}
-          path: "**/target/surefire-reports/**"
-      - name: "Upload coverage result"
-        uses: actions/upload-artifact@v4
-        with:
-          name: coverage-result-${{ matrix.os }}-${{ matrix.jdk }}
-          path: "**/target/site/**/jacoco.xml"
-      - name: "Upload coverage to Codecov"
-        uses: codecov/codecov-action@v4
-
-#  error-code-inspecting:
-#    needs: [check-license, build-tools]
-#    runs-on: ubuntu-latest
-#    steps:
-#      - uses: actions/checkout@v4
-#        with:
-#          path: "./dubbo-spi-extensions"
-#      - uses: actions/checkout@v4
-#        with:
-#          repository: 'apache/dubbo-test-tools'
-#          ref: main
-#          path: "./dubbo-test-tools"
-#      - name: "Set up JDK 21"
-#        uses: actions/setup-java@v4
-#        with:
-#          distribution: 'zulu'
-#          java-version: 21
-#      - name: Restore Maven local repository cache
-#        uses: actions/cache@v4
-#        with:
-#          path: ~/.m2/repository
-#          key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
-#          restore-keys: |
-#            ${{ runner.os }}-maven-
-#            ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
-#      - name: "Compile Dubbo-SPI-Extensions (Linux)"
-#        run: |
-#          cd ${{ github.workspace }}/dubbo-spi-extensions
-#          ./mvnw --batch-mode --no-snapshot-updates -e --no-transfer-progress 
--fail-fast -T 2C clean install -DskipTests=true -DskipIntegrationTests=true 
-Dcheckstyle.skip=true -Dcheckstyle_unix.skip=true -Drat.skip=true 
-Dmaven.javadoc.skip=true
-#      - name: "Run Error Code Inspecting"
-#        env:
-#          DUBBO_ECI_REPORT_AS_ERROR: true
-#        run: |
-#          cd ${{ github.workspace 
}}/dubbo-test-tools/dubbo-error-code-inspector
-#          ../mvnw --batch-mode --no-snapshot-updates -e 
--no-transfer-progress --fail-fast -T 2C package exec:java 
-Ddubbo.eci.report-as-error=${DUBBO_ECI_REPORT_AS_ERROR} -Dmaven.test.skip=true 
-Dmaven.test.skip.exec=true -Ddubbo.eci.path=${{ github.workspace 
}}/dubbo-spi-extensions
-#      - name: "Upload error code inspection result"
-#        # always() should not be used here, since we don't need to handle the 
'canceled' situation.
-#        if: ${{ success() || failure() }}
-#        uses: actions/upload-artifact@v4
-#        with:
-#          name: "error-inspection-result"
-#          path: ${{ github.workspace 
}}/dubbo-test-tools/dubbo-error-code-inspector/error-inspection-result.txt
diff --git a/.github/workflows/build-and-test-scheduled-3.2.yml 
b/.github/workflows/build-and-test-scheduled-3.2.yml
deleted file mode 100644
index 6b95af24..00000000
--- a/.github/workflows/build-and-test-scheduled-3.2.yml
+++ /dev/null
@@ -1,346 +0,0 @@
-name: Build and Test Scheduled On 3.2
-
-on:
-  schedule:
-    - cron: '0 0/6 * * *'
-  workflow_dispatch:
-
-permissions:
-  contents: read
-
-env:
-  FORK_COUNT: 2
-  FAIL_FAST: 0
-  SHOW_ERROR_DETAIL: 1
-  #multi-version size limit
-  VERSIONS_LIMIT: 4
-  JACOCO_ENABLE: true
-  CANDIDATE_VERSIONS: '
-    spring.version:5.3.24;
-    spring-boot.version:2.7.6;
-    '
-
-jobs:
-  # Check ASF License
-  check-license:
-    name: "Check License"
-    runs-on: ubuntu-latest
-    steps:
-      - name: Checkout
-        uses: actions/checkout@v4
-        with:
-          ref: '3.2'
-      - name: Check License
-        uses: apache/[email protected]
-        env:
-          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-      - name: "Set up JDK 17"
-        uses: actions/setup-java@v4
-        with:
-          distribution: 'zulu'
-          java-version: 17
-      - name: Restore Maven local repository cache
-        uses: actions/cache@v4
-        with:
-          path: ~/.m2/repository
-          key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
-          restore-keys: |
-            ${{ runner.os }}-maven-
-            ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
-      - name: Check Dependencies' License
-        uses: 
apache/skywalking-eyes/dependency@e1a02359b239bd28de3f6d35fdc870250fa513d5
-        env:
-          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-        with:
-          config: .licenserc.yaml
-          mode: check
-  # Build dubbo-build-tool
-  build-tools:
-    name: "Build-tools"
-    needs: check-license
-    runs-on: ${{ matrix.os }}
-    strategy:
-      matrix:
-        os: [ ubuntu-latest, windows-latest ]
-      fail-fast: false
-    outputs:
-      cache-key: ${{ steps.dubbo-build-tools.cache }}
-    steps:
-      - name: Support long paths on Windows
-        if: ${{ startsWith( matrix.os, 'windows') }}
-        run: git config --system core.longpaths true
-      - uses: actions/checkout@v4
-        name: build tools
-        with:
-          repository: 'apache/dubbo'
-          ref: '3.2'
-          path: dubbo
-      - name: "Set up JDK 17"
-        uses: actions/setup-java@v4
-        with:
-          distribution: 'zulu'
-          java-version: 17
-      - uses: actions/cache@v4
-        name: "Cache local Maven repository"
-        with:
-          path: ~/.m2/repository
-          key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
-          restore-keys: |
-            ${{ runner.os }}-maven-
-            ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
-      - name: "Build tools"
-        run: |
-          cd ./dubbo
-          ./mvnw --batch-mode -U -e --no-transfer-progress install -pl 
dubbo-build-tools -am -DskipTests=true
-  # Build from source code
-  build-source:
-    name: "Build Dubbo-SPI-Extensions"
-    needs: [check-license, build-tools]
-    runs-on: ubuntu-latest
-    # output dubbo-spi-extensions version to others jobs
-    outputs:
-      version: ${{ steps.dubbo-spi-extensions-version.outputs.version }}
-    steps:
-      - uses: actions/checkout@v4
-        with:
-          ref: "3.2"
-          path: dubbo-spi-extensions
-      - uses: actions/setup-java@v4
-        with:
-          distribution: 'zulu'
-          java-version: 17
-      - uses: actions/cache@v4
-        name: "Cache local Maven repository"
-        with:
-          path: ~/.m2/repository
-          key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}-${{ 
github.run_id }}
-          restore-keys: |
-            ${{ runner.os }}-maven-
-            ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
-      - name: "Compile Dubbo-SPI-Extensions (Linux)"
-        run: |
-          cd ./dubbo-spi-extensions
-          ./mvnw --batch-mode --no-snapshot-updates -e --no-transfer-progress 
--fail-fast -T 2C clean compile -DskipTests=true -DskipIntegrationTests=true 
-Dcheckstyle.skip=true -Dcheckstyle_unix.skip=true -Drat.skip=true 
-Dmaven.javadoc.skip=true
-      - name: "Build Dubbo-SPI-Extensions with Maven"
-        run: |
-          cd ./dubbo-spi-extensions
-          ./mvnw --batch-mode --no-snapshot-updates -e --no-transfer-progress 
--fail-fast clean source:jar install -Pjacoco,checkstyle 
-Dmaven.wagon.httpconnectionManager.ttlSeconds=120 
-Dmaven.wagon.http.retryHandler.count=5 -Dmaven.test.skip=true 
-Dmaven.test.skip.exec=true -DembeddedZookeeperPath=${{ github.workspace 
}}/.tmp/zookeeper
-      - name: "Pack class result"
-        run: |
-          shopt -s globstar
-          zip ${{ github.workspace }}/class.zip **/target/classes/* -r
-      - name: "Upload class result"
-        uses: actions/upload-artifact@v4
-        with:
-          name: "class-file"
-          path: ${{ github.workspace }}/class.zip
-      - name: "Pack checkstyle file if failure"
-        if: failure()
-        run: zip ${{ github.workspace }}/checkstyle.zip *checkstyle* -r
-      - name: "Upload checkstyle file if failure"
-        if: failure()
-        uses: actions/upload-artifact@v4
-        with:
-          name: "checkstyle-file"
-          path: ${{ github.workspace }}/checkstyle.zip
-      - name: "Calculate Dubbo-SPI-Extensions Version"
-        id: dubbo-spi-extensions-version
-        run: |
-          REVISION=`awk 
'/<revision>[^<]+<\/revision>/{gsub(/<revision>|<\/revision>/,"",$1);print 
$1;exit;}' ./dubbo-spi-extensions/pom.xml`
-          echo "version=$REVISION" >> $GITHUB_OUTPUT
-          echo "dubbo-spi-extensions version: $REVISION"
-  # Download dependencies Prepare for unit test
-  unit-test-prepare:
-    name: "Preparation for Unit Test On ${{ matrix.os }}"
-    needs: [check-license]
-    runs-on: ${{ matrix.os }}
-    strategy:
-      matrix:
-        os: [ ubuntu-latest, windows-latest ]
-      fail-fast: false
-    env:
-      ZOOKEEPER_VERSION: 3.6.3
-    steps:
-      - uses: actions/cache@v4
-        name: "Cache zookeeper binary archive"
-        id: "cache-zookeeper"
-        with:
-          path: ${{ github.workspace }}/.tmp/zookeeper
-          key: zookeeper-${{ runner.os }}-${{ env.ZOOKEEPER_VERSION }}
-          restore-keys: |
-            zookeeper-${{ runner.os }}-${{ env.ZOOKEEPER_VERSION }}
-      - name: "Set up msys2 if necessary"
-        if: ${{ startsWith( matrix.os, 'windows') && 
steps.cache-zookeeper.outputs.cache-hit != 'true' }}
-        uses: msys2/setup-msys2@v2
-        with:
-          release: false  # support cache, see 
https://github.com/msys2/setup-msys2#context
-      - name: "Download zookeeper binary archive in Linux OS"
-        if: ${{ startsWith( matrix.os, 'ubuntu') && 
steps.cache-zookeeper.outputs.cache-hit != 'true' }}
-        run: |
-          mkdir -p ${{ github.workspace }}/.tmp/zookeeper
-          wget -c https://archive.apache.org/dist/zookeeper/zookeeper-${{ 
env.ZOOKEEPER_VERSION }}/apache-zookeeper-${{ env.ZOOKEEPER_VERSION 
}}-bin.tar.gz -O ${{ github.workspace 
}}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz ||
-          wget -c https://apache.website-solution.net/zookeeper/zookeeper-${{ 
env.ZOOKEEPER_VERSION }}/apache-zookeeper-${{ env.ZOOKEEPER_VERSION 
}}-bin.tar.gz -O ${{ github.workspace 
}}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz ||
-          wget -c http://apache.stu.edu.tw/zookeeper/zookeeper-${{ 
env.ZOOKEEPER_VERSION }}/apache-zookeeper-${{ env.ZOOKEEPER_VERSION 
}}-bin.tar.gz -O ${{ github.workspace 
}}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz ||
-          wget -c http://ftp.jaist.ac.jp/pub/apache/zookeeper/zookeeper-${{ 
env.ZOOKEEPER_VERSION }}/apache-zookeeper-${{ env.ZOOKEEPER_VERSION 
}}-bin.tar.gz -O ${{ github.workspace 
}}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz ||
-          wget -c http://apache.mirror.cdnetworks.com/zookeeper/zookeeper-${{ 
env.ZOOKEEPER_VERSION }}/apache-zookeeper-${{ env.ZOOKEEPER_VERSION 
}}-bin.tar.gz -O ${{ github.workspace 
}}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz ||
-          wget -c http://mirror.apache-kr.org/apache/zookeeper/zookeeper-${{ 
env.ZOOKEEPER_VERSION }}/apache-zookeeper-${{ env.ZOOKEEPER_VERSION 
}}-bin.tar.gz -O ${{ github.workspace 
}}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz
-          echo "list the downloaded zookeeper binary archive"
-          ls -al ${{ github.workspace 
}}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz
-      - name: "Download zookeeper binary archive in Windows OS"
-        if: ${{ startsWith( matrix.os, 'windows') && 
steps.cache-zookeeper.outputs.cache-hit != 'true' }}
-        shell: msys2 {0}
-        run: |
-          mkdir -p ${{ github.workspace }}/.tmp/zookeeper
-          wget -c https://archive.apache.org/dist/zookeeper/zookeeper-${{ 
env.ZOOKEEPER_VERSION }}/apache-zookeeper-${{ env.ZOOKEEPER_VERSION 
}}-bin.tar.gz -O ${{ github.workspace 
}}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz ||
-          wget -c https://apache.website-solution.net/zookeeper/zookeeper-${{ 
env.ZOOKEEPER_VERSION }}/apache-zookeeper-${{ env.ZOOKEEPER_VERSION 
}}-bin.tar.gz -O ${{ github.workspace 
}}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz ||
-          wget -c http://apache.stu.edu.tw/zookeeper/zookeeper-${{ 
env.ZOOKEEPER_VERSION }}/apache-zookeeper-${{ env.ZOOKEEPER_VERSION 
}}-bin.tar.gz -O ${{ github.workspace 
}}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz ||
-          wget -c http://ftp.jaist.ac.jp/pub/apache/zookeeper/zookeeper-${{ 
env.ZOOKEEPER_VERSION }}/apache-zookeeper-${{ env.ZOOKEEPER_VERSION 
}}-bin.tar.gz -O ${{ github.workspace 
}}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz ||
-          wget -c http://apache.mirror.cdnetworks.com/zookeeper/zookeeper-${{ 
env.ZOOKEEPER_VERSION }}/apache-zookeeper-${{ env.ZOOKEEPER_VERSION 
}}-bin.tar.gz -O ${{ github.workspace 
}}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz ||
-          wget -c http://mirror.apache-kr.org/apache/zookeeper/zookeeper-${{ 
env.ZOOKEEPER_VERSION }}/apache-zookeeper-${{ env.ZOOKEEPER_VERSION 
}}-bin.tar.gz -O ${{ github.workspace 
}}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz
-          echo "list the downloaded zookeeper binary archive"
-          ls -al ${{ github.workspace 
}}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz
-      - uses: actions/cache@v4
-        name: "Cache secret key"
-        id: "cache-secret-cert"
-        with:
-          path: ${{ github.workspace }}/.tmp/rsa
-          key: secret-rsa-${{ runner.os }}-${{ github.run_id }}
-      - name: "Create Secret"
-        run: |
-          mkdir -p ${{ github.workspace }}/.tmp/rsa
-          cd ${{ github.workspace }}/.tmp/rsa
-          openssl genrsa -out rsa_private.pem 1024
-          openssl rsa -in rsa_private.pem -pubout -out rsa_public.pem
-          echo "Current workflow run id: ${{ github.run_id }}"
-          echo "Start Print Rsa Public Key ---"
-          cat rsa_public.pem
-          echo "--- End Print Rsa Public Key"
-  # Start unit test
-  unit-test:
-    needs: [check-license, build-source, unit-test-prepare]
-    name: "Unit Test ${{ matrix.os }} with JDK ${{ matrix.jdk }}"
-    runs-on: ${{ matrix.os }}
-    strategy:
-      matrix:
-        os: [ ubuntu-latest, windows-latest ]
-        jdk: [17]
-      fail-fast: false
-    env:
-      DISABLE_FILE_SYSTEM_TEST: true
-      CURRENT_ROLE: ${{ matrix.case-role }}
-      DUBBO_DEFAULT_SERIALIZATION: fastjson2
-    steps:
-      - name: Support Windows
-        if: ${{ startsWith( matrix.os, 'windows') }}
-        run: |
-          git config --system core.longpaths true
-      - uses: actions/checkout@v4
-        with:
-          fetch-depth: 0
-      - name: "Set up JDK ${{ matrix.jdk }}"
-        uses: actions/setup-java@v4
-        with:
-          distribution: 'zulu'
-          java-version: 17
-      - uses: actions/cache@v4
-        name: "Cache local Maven repository"
-        with:
-          path: ~/.m2/repository
-          key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}-${{ 
github.run_id }}
-          restore-keys: |
-            ${{ runner.os }}-maven-
-            ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
-      - uses: actions/cache@v4
-        name: "Cache zookeeper binary archive"
-        id: "cache-zookeeper"
-        with:
-          path: ${{ github.workspace }}/.tmp/zookeeper
-          key: zookeeper-${{ runner.os }}-${{ env.ZOOKEEPER_VERSION }}
-          restore-keys: |
-            zookeeper-${{ runner.os }}-
-      - uses: actions/cache@v4
-        name: "Cache secret key"
-        id: "cache-secret-cert"
-        with:
-          path: ${{ github.workspace }}/.tmp/rsa
-          key: secret-rsa-${{ runner.os }}-${{ github.run_id }}
-      #      - name: "Get sonarcloud token"
-      #        if: ${{ github.repository == 'apache/dubbo-spi-extensions' }}
-      #        run: |
-      #          curl "http://dubbo-vm.apache.org:8000/token?workflow_id=${{ 
github.run_id }}" -o ${{ github.workspace }}/.tmp/encrypted-sonarcloud-token
-      #          openssl rsautl -decrypt -in ${{ github.workspace 
}}/.tmp/encrypted-sonarcloud-token -out ${{ github.workspace 
}}/.tmp/decrypted-sonarcloud-token -inkey ${{ github.workspace 
}}/.tmp/rsa/rsa_private.pem
-      #      - name: "Test with Maven with SonarCloud Scan"
-      #        if: ${{ github.repository == 'apache/dubbo-spi-extensions' }}
-      #        timeout-minutes: 70
-      #        env:
-      #          # Needed to get some information about the pull request, if 
any
-      #          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-      #        run: |
-      #          source ${{ github.workspace }}/.tmp/decrypted-sonarcloud-token
-      #          ./mvnw --batch-mode --no-snapshot-updates -e 
--no-transfer-progress --fail-fast clean test verify 
org.sonarsource.scanner.maven:sonar-maven-plugin:sonar 
-Pjacoco,jdk15ge-simple,'!jdk15ge',jacoco089 
-Dsonar.host.url=https://sonarcloud.io -Dsonar.organization=apache 
-Dsonar.projectKey=apache_dubbo -DtrimStackTrace=false 
-Dmaven.wagon.httpconnectionManager.ttlSeconds=120 
-Dmaven.wagon.http.retryHandler.count=5 -DskipTests=false 
-DskipIntegrationTests=false -Dcheckstyle.skip [...]
-      - name: "Test with Maven without SonarCloud Scan On Linux"
-        if: ${{ startsWith( matrix.os, 'linux') || startsWith( matrix.os, 
'ubuntu') }}
-        timeout-minutes: 70
-        run: |
-          ./mvnw --batch-mode --no-snapshot-updates -e --no-transfer-progress 
--fail-fast clean test verify 
-D"maven.wagon.httpconnectionManager.ttlSeconds=120" -Pjacoco 
-DtrimStackTrace=false -D"maven.wagon.http.retryHandler.count=5" 
-DskipTests=false -DskipIntegrationTests=false -D"checkstyle.skip=false" 
-D"checkstyle_unix.skip=false" -D"rat.skip=false" -D"maven.javadoc.skip=true" 
-D"embeddedZookeeperPath=${{ github.workspace }}/.tmp/zookeeper"
-      - name: "Test with Maven without SonarCloud Scan On Windows"
-        if: ${{ startsWith( matrix.os, 'windows')  }}
-        timeout-minutes: 70
-        run: |
-          ./mvnw --batch-mode --no-snapshot-updates -e --no-transfer-progress 
--fail-fast clean test verify 
-D"maven.wagon.httpconnectionManager.ttlSeconds=120" -Pjacoco 
-DtrimStackTrace=false -D"maven.wagon.http.retryHandler.count=5" 
-DskipTests=false -DskipIntegrationTests=false -D"checkstyle.skip=false" 
-D"checkstyle_unix.skip=true" -D"rat.skip=false" -D"maven.javadoc.skip=true" 
-D"embeddedZookeeperPath=${{ github.workspace }}/.tmp/zookeeper"
-      - name: "Upload surefire-reports if failure"
-        if: ${{ failure() }}
-        uses: actions/upload-artifact@v4
-        with:
-          name: surefire-reports-${{ matrix.os }}-${{ matrix.jdk }}
-          path: "**/target/surefire-reports/**"
-      - name: "Upload coverage result"
-        uses: actions/upload-artifact@v4
-        with:
-          name: coverage-result-${{ matrix.os }}-${{ matrix.jdk }}
-          path: "**/target/site/**/jacoco.xml"
-      - name: "Upload coverage to Codecov"
-        uses: codecov/codecov-action@v4
-
-#  error-code-inspecting:
-#    needs: [check-license, build-tools]
-#    runs-on: ubuntu-latest
-#    steps:
-#      - uses: actions/checkout@v4
-#        with:
-#          path: "./dubbo-spi-extensions"
-#      - uses: actions/checkout@v4
-#        with:
-#          repository: 'apache/dubbo-test-tools'
-#          ref: main
-#          path: "./dubbo-test-tools"
-#      - name: "Set up JDK 21"
-#        uses: actions/setup-java@v4
-#        with:
-#          distribution: 'zulu'
-#          java-version: 21
-#      - name: Restore Maven local repository cache
-#        uses: actions/cache@v4
-#        with:
-#          path: ~/.m2/repository
-#          key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
-#          restore-keys: |
-#            ${{ runner.os }}-maven-
-#            ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
-#      - name: "Compile Dubbo-SPI-Extensions (Linux)"
-#        run: |
-#          cd ${{ github.workspace }}/dubbo-spi-extensions
-#          ./mvnw --batch-mode --no-snapshot-updates -e --no-transfer-progress 
--fail-fast -T 2C clean install -DskipTests=true -DskipIntegrationTests=true 
-Dcheckstyle.skip=true -Dcheckstyle_unix.skip=true -Drat.skip=true 
-Dmaven.javadoc.skip=true
-#      - name: "Run Error Code Inspecting"
-#        env:
-#          DUBBO_ECI_REPORT_AS_ERROR: true
-#        run: |
-#          cd ${{ github.workspace 
}}/dubbo-test-tools/dubbo-error-code-inspector
-#          ../mvnw --batch-mode --no-snapshot-updates -e 
--no-transfer-progress --fail-fast -T 2C package exec:java 
-Ddubbo.eci.report-as-error=${DUBBO_ECI_REPORT_AS_ERROR} -Dmaven.test.skip=true 
-Dmaven.test.skip.exec=true -Ddubbo.eci.path=${{ github.workspace 
}}/dubbo-spi-extensions
-#      - name: "Upload error code inspection result"
-#        # always() should not be used here, since we don't need to handle the 
'canceled' situation.
-#        if: ${{ success() || failure() }}
-#        uses: actions/upload-artifact@v4
-#        with:
-#          name: "error-inspection-result"
-#          path: ${{ github.workspace 
}}/dubbo-test-tools/dubbo-error-code-inspector/error-inspection-result.txt
diff --git a/.github/workflows/build-and-test-scheduled-3.3.yml 
b/.github/workflows/build-and-test-scheduled-3.3.yml
deleted file mode 100644
index fd044f90..00000000
--- a/.github/workflows/build-and-test-scheduled-3.3.yml
+++ /dev/null
@@ -1,346 +0,0 @@
-name: Build and Test Scheduled On 3.3
-
-on:
-  schedule:
-    - cron: '0 0/6 * * *'
-  workflow_dispatch:
-
-permissions:
-  contents: read
-
-env:
-  FORK_COUNT: 2
-  FAIL_FAST: 0
-  SHOW_ERROR_DETAIL: 1
-  #multi-version size limit
-  VERSIONS_LIMIT: 4
-  JACOCO_ENABLE: true
-  CANDIDATE_VERSIONS: '
-    spring.version:5.3.24;
-    spring-boot.version:2.7.6;
-    '
-
-jobs:
-  # Check ASF License
-  check-license:
-    name: "Check License"
-    runs-on: ubuntu-latest
-    steps:
-      - name: Checkout
-        uses: actions/checkout@v4
-        with:
-          ref: '3.3'
-      - name: Check License
-        uses: apache/[email protected]
-        env:
-          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-      - name: "Set up JDK 17"
-        uses: actions/setup-java@v4
-        with:
-          distribution: 'zulu'
-          java-version: 17
-      - name: Restore Maven local repository cache
-        uses: actions/cache@v4
-        with:
-          path: ~/.m2/repository
-          key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
-          restore-keys: |
-            ${{ runner.os }}-maven-
-            ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
-      - name: Check Dependencies' License
-        uses: 
apache/skywalking-eyes/dependency@e1a02359b239bd28de3f6d35fdc870250fa513d5
-        env:
-          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-        with:
-          config: .licenserc.yaml
-          mode: check
-  # Build dubbo-build-tool
-  build-tools:
-    name: "Build-tools"
-    needs: check-license
-    runs-on: ${{ matrix.os }}
-    strategy:
-      matrix:
-        os: [ ubuntu-latest, windows-latest ]
-      fail-fast: false
-    outputs:
-      cache-key: ${{ steps.dubbo-build-tools.cache }}
-    steps:
-      - name: Support long paths on Windows
-        if: ${{ startsWith( matrix.os, 'windows') }}
-        run: git config --system core.longpaths true
-      - uses: actions/checkout@v4
-        name: build tools
-        with:
-          repository: 'apache/dubbo'
-          ref: '3.2'
-          path: dubbo
-      - name: "Set up JDK 17"
-        uses: actions/setup-java@v4
-        with:
-          distribution: 'zulu'
-          java-version: 17
-      - uses: actions/cache@v4
-        name: "Cache local Maven repository"
-        with:
-          path: ~/.m2/repository
-          key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
-          restore-keys: |
-            ${{ runner.os }}-maven-
-            ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
-      - name: "Build tools"
-        run: |
-          cd ./dubbo
-          ./mvnw --batch-mode -U -e --no-transfer-progress install -pl 
dubbo-build-tools -am -DskipTests=true
-  # Build from source code
-  build-source:
-    name: "Build Dubbo-SPI-Extensions"
-    needs: [check-license, build-tools]
-    runs-on: ubuntu-latest
-    # output dubbo-spi-extensions version to others jobs
-    outputs:
-      version: ${{ steps.dubbo-spi-extensions-version.outputs.version }}
-    steps:
-      - uses: actions/checkout@v4
-        with:
-          ref: "3.3"
-          path: dubbo-spi-extensions
-      - uses: actions/setup-java@v4
-        with:
-          distribution: 'zulu'
-          java-version: 17
-      - uses: actions/cache@v4
-        name: "Cache local Maven repository"
-        with:
-          path: ~/.m2/repository
-          key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}-${{ 
github.run_id }}
-          restore-keys: |
-            ${{ runner.os }}-maven-
-            ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
-      - name: "Compile Dubbo-SPI-Extensions (Linux)"
-        run: |
-          cd ./dubbo-spi-extensions
-          ./mvnw --batch-mode --no-snapshot-updates -e --no-transfer-progress 
--fail-fast -T 2C clean compile -DskipTests=true -DskipIntegrationTests=true 
-Dcheckstyle.skip=true -Dcheckstyle_unix.skip=true -Drat.skip=true 
-Dmaven.javadoc.skip=true
-      - name: "Build Dubbo-SPI-Extensions with Maven"
-        run: |
-          cd ./dubbo-spi-extensions
-          ./mvnw --batch-mode --no-snapshot-updates -e --no-transfer-progress 
--fail-fast clean source:jar install -Pjacoco,checkstyle 
-Dmaven.wagon.httpconnectionManager.ttlSeconds=120 
-Dmaven.wagon.http.retryHandler.count=5 -Dmaven.test.skip=true 
-Dmaven.test.skip.exec=true -DembeddedZookeeperPath=${{ github.workspace 
}}/.tmp/zookeeper
-      - name: "Pack class result"
-        run: |
-          shopt -s globstar
-          zip ${{ github.workspace }}/class.zip **/target/classes/* -r
-      - name: "Upload class result"
-        uses: actions/upload-artifact@v4
-        with:
-          name: "class-file"
-          path: ${{ github.workspace }}/class.zip
-      - name: "Pack checkstyle file if failure"
-        if: failure()
-        run: zip ${{ github.workspace }}/checkstyle.zip *checkstyle* -r
-      - name: "Upload checkstyle file if failure"
-        if: failure()
-        uses: actions/upload-artifact@v4
-        with:
-          name: "checkstyle-file"
-          path: ${{ github.workspace }}/checkstyle.zip
-      - name: "Calculate Dubbo-SPI-Extensions Version"
-        id: dubbo-spi-extensions-version
-        run: |
-          REVISION=`awk 
'/<revision>[^<]+<\/revision>/{gsub(/<revision>|<\/revision>/,"",$1);print 
$1;exit;}' ./dubbo-spi-extensions/pom.xml`
-          echo "version=$REVISION" >> $GITHUB_OUTPUT
-          echo "dubbo-spi-extensions version: $REVISION"
-  # Download dependencies Prepare for unit test
-  unit-test-prepare:
-    name: "Preparation for Unit Test On ${{ matrix.os }}"
-    needs: [check-license]
-    runs-on: ${{ matrix.os }}
-    strategy:
-      matrix:
-        os: [ ubuntu-latest, windows-latest ]
-      fail-fast: false
-    env:
-      ZOOKEEPER_VERSION: 3.6.3
-    steps:
-      - uses: actions/cache@v4
-        name: "Cache zookeeper binary archive"
-        id: "cache-zookeeper"
-        with:
-          path: ${{ github.workspace }}/.tmp/zookeeper
-          key: zookeeper-${{ runner.os }}-${{ env.ZOOKEEPER_VERSION }}
-          restore-keys: |
-            zookeeper-${{ runner.os }}-${{ env.ZOOKEEPER_VERSION }}
-      - name: "Set up msys2 if necessary"
-        if: ${{ startsWith( matrix.os, 'windows') && 
steps.cache-zookeeper.outputs.cache-hit != 'true' }}
-        uses: msys2/setup-msys2@v2
-        with:
-          release: false  # support cache, see 
https://github.com/msys2/setup-msys2#context
-      - name: "Download zookeeper binary archive in Linux OS"
-        if: ${{ startsWith( matrix.os, 'ubuntu') && 
steps.cache-zookeeper.outputs.cache-hit != 'true' }}
-        run: |
-          mkdir -p ${{ github.workspace }}/.tmp/zookeeper
-          wget -c https://archive.apache.org/dist/zookeeper/zookeeper-${{ 
env.ZOOKEEPER_VERSION }}/apache-zookeeper-${{ env.ZOOKEEPER_VERSION 
}}-bin.tar.gz -O ${{ github.workspace 
}}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz ||
-          wget -c https://apache.website-solution.net/zookeeper/zookeeper-${{ 
env.ZOOKEEPER_VERSION }}/apache-zookeeper-${{ env.ZOOKEEPER_VERSION 
}}-bin.tar.gz -O ${{ github.workspace 
}}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz ||
-          wget -c http://apache.stu.edu.tw/zookeeper/zookeeper-${{ 
env.ZOOKEEPER_VERSION }}/apache-zookeeper-${{ env.ZOOKEEPER_VERSION 
}}-bin.tar.gz -O ${{ github.workspace 
}}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz ||
-          wget -c http://ftp.jaist.ac.jp/pub/apache/zookeeper/zookeeper-${{ 
env.ZOOKEEPER_VERSION }}/apache-zookeeper-${{ env.ZOOKEEPER_VERSION 
}}-bin.tar.gz -O ${{ github.workspace 
}}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz ||
-          wget -c http://apache.mirror.cdnetworks.com/zookeeper/zookeeper-${{ 
env.ZOOKEEPER_VERSION }}/apache-zookeeper-${{ env.ZOOKEEPER_VERSION 
}}-bin.tar.gz -O ${{ github.workspace 
}}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz ||
-          wget -c http://mirror.apache-kr.org/apache/zookeeper/zookeeper-${{ 
env.ZOOKEEPER_VERSION }}/apache-zookeeper-${{ env.ZOOKEEPER_VERSION 
}}-bin.tar.gz -O ${{ github.workspace 
}}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz
-          echo "list the downloaded zookeeper binary archive"
-          ls -al ${{ github.workspace 
}}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz
-      - name: "Download zookeeper binary archive in Windows OS"
-        if: ${{ startsWith( matrix.os, 'windows') && 
steps.cache-zookeeper.outputs.cache-hit != 'true' }}
-        shell: msys2 {0}
-        run: |
-          mkdir -p ${{ github.workspace }}/.tmp/zookeeper
-          wget -c https://archive.apache.org/dist/zookeeper/zookeeper-${{ 
env.ZOOKEEPER_VERSION }}/apache-zookeeper-${{ env.ZOOKEEPER_VERSION 
}}-bin.tar.gz -O ${{ github.workspace 
}}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz ||
-          wget -c https://apache.website-solution.net/zookeeper/zookeeper-${{ 
env.ZOOKEEPER_VERSION }}/apache-zookeeper-${{ env.ZOOKEEPER_VERSION 
}}-bin.tar.gz -O ${{ github.workspace 
}}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz ||
-          wget -c http://apache.stu.edu.tw/zookeeper/zookeeper-${{ 
env.ZOOKEEPER_VERSION }}/apache-zookeeper-${{ env.ZOOKEEPER_VERSION 
}}-bin.tar.gz -O ${{ github.workspace 
}}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz ||
-          wget -c http://ftp.jaist.ac.jp/pub/apache/zookeeper/zookeeper-${{ 
env.ZOOKEEPER_VERSION }}/apache-zookeeper-${{ env.ZOOKEEPER_VERSION 
}}-bin.tar.gz -O ${{ github.workspace 
}}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz ||
-          wget -c http://apache.mirror.cdnetworks.com/zookeeper/zookeeper-${{ 
env.ZOOKEEPER_VERSION }}/apache-zookeeper-${{ env.ZOOKEEPER_VERSION 
}}-bin.tar.gz -O ${{ github.workspace 
}}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz ||
-          wget -c http://mirror.apache-kr.org/apache/zookeeper/zookeeper-${{ 
env.ZOOKEEPER_VERSION }}/apache-zookeeper-${{ env.ZOOKEEPER_VERSION 
}}-bin.tar.gz -O ${{ github.workspace 
}}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz
-          echo "list the downloaded zookeeper binary archive"
-          ls -al ${{ github.workspace 
}}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz
-      - uses: actions/cache@v4
-        name: "Cache secret key"
-        id: "cache-secret-cert"
-        with:
-          path: ${{ github.workspace }}/.tmp/rsa
-          key: secret-rsa-${{ runner.os }}-${{ github.run_id }}
-      - name: "Create Secret"
-        run: |
-          mkdir -p ${{ github.workspace }}/.tmp/rsa
-          cd ${{ github.workspace }}/.tmp/rsa
-          openssl genrsa -out rsa_private.pem 1024
-          openssl rsa -in rsa_private.pem -pubout -out rsa_public.pem
-          echo "Current workflow run id: ${{ github.run_id }}"
-          echo "Start Print Rsa Public Key ---"
-          cat rsa_public.pem
-          echo "--- End Print Rsa Public Key"
-  # Start unit test
-  unit-test:
-    needs: [check-license, build-source, unit-test-prepare]
-    name: "Unit Test ${{ matrix.os }} with JDK ${{ matrix.jdk }}"
-    runs-on: ${{ matrix.os }}
-    strategy:
-      matrix:
-        os: [ ubuntu-latest, windows-latest ]
-        jdk: [17]
-      fail-fast: false
-    env:
-      DISABLE_FILE_SYSTEM_TEST: true
-      CURRENT_ROLE: ${{ matrix.case-role }}
-      DUBBO_DEFAULT_SERIALIZATION: fastjson2
-    steps:
-      - name: Support Windows
-        if: ${{ startsWith( matrix.os, 'windows') }}
-        run: |
-          git config --system core.longpaths true
-      - uses: actions/checkout@v4
-        with:
-          fetch-depth: 0
-      - name: "Set up JDK ${{ matrix.jdk }}"
-        uses: actions/setup-java@v4
-        with:
-          distribution: 'zulu'
-          java-version: 17
-      - uses: actions/cache@v4
-        name: "Cache local Maven repository"
-        with:
-          path: ~/.m2/repository
-          key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}-${{ 
github.run_id }}
-          restore-keys: |
-            ${{ runner.os }}-maven-
-            ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
-      - uses: actions/cache@v4
-        name: "Cache zookeeper binary archive"
-        id: "cache-zookeeper"
-        with:
-          path: ${{ github.workspace }}/.tmp/zookeeper
-          key: zookeeper-${{ runner.os }}-${{ env.ZOOKEEPER_VERSION }}
-          restore-keys: |
-            zookeeper-${{ runner.os }}-
-      - uses: actions/cache@v4
-        name: "Cache secret key"
-        id: "cache-secret-cert"
-        with:
-          path: ${{ github.workspace }}/.tmp/rsa
-          key: secret-rsa-${{ runner.os }}-${{ github.run_id }}
-      #      - name: "Get sonarcloud token"
-      #        if: ${{ github.repository == 'apache/dubbo-spi-extensions' }}
-      #        run: |
-      #          curl "http://dubbo-vm.apache.org:8000/token?workflow_id=${{ 
github.run_id }}" -o ${{ github.workspace }}/.tmp/encrypted-sonarcloud-token
-      #          openssl rsautl -decrypt -in ${{ github.workspace 
}}/.tmp/encrypted-sonarcloud-token -out ${{ github.workspace 
}}/.tmp/decrypted-sonarcloud-token -inkey ${{ github.workspace 
}}/.tmp/rsa/rsa_private.pem
-      #      - name: "Test with Maven with SonarCloud Scan"
-      #        if: ${{ github.repository == 'apache/dubbo-spi-extensions' }}
-      #        timeout-minutes: 70
-      #        env:
-      #          # Needed to get some information about the pull request, if 
any
-      #          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-      #        run: |
-      #          source ${{ github.workspace }}/.tmp/decrypted-sonarcloud-token
-      #          ./mvnw --batch-mode --no-snapshot-updates -e 
--no-transfer-progress --fail-fast clean test verify 
org.sonarsource.scanner.maven:sonar-maven-plugin:sonar 
-Pjacoco,jdk15ge-simple,'!jdk15ge',jacoco089 
-Dsonar.host.url=https://sonarcloud.io -Dsonar.organization=apache 
-Dsonar.projectKey=apache_dubbo -DtrimStackTrace=false 
-Dmaven.wagon.httpconnectionManager.ttlSeconds=120 
-Dmaven.wagon.http.retryHandler.count=5 -DskipTests=false 
-DskipIntegrationTests=false -Dcheckstyle.skip [...]
-      - name: "Test with Maven without SonarCloud Scan On Linux"
-        if: ${{ startsWith( matrix.os, 'linux') || startsWith( matrix.os, 
'ubuntu') }}
-        timeout-minutes: 70
-        run: |
-          ./mvnw --batch-mode --no-snapshot-updates -e --no-transfer-progress 
--fail-fast clean test verify 
-D"maven.wagon.httpconnectionManager.ttlSeconds=120" -Pjacoco 
-DtrimStackTrace=false -D"maven.wagon.http.retryHandler.count=5" 
-DskipTests=false -DskipIntegrationTests=false -D"checkstyle.skip=false" 
-D"checkstyle_unix.skip=false" -D"rat.skip=false" -D"maven.javadoc.skip=true" 
-D"embeddedZookeeperPath=${{ github.workspace }}/.tmp/zookeeper"
-      - name: "Test with Maven without SonarCloud Scan On Windows"
-        if: ${{ startsWith( matrix.os, 'windows')  }}
-        timeout-minutes: 70
-        run: |
-          ./mvnw --batch-mode --no-snapshot-updates -e --no-transfer-progress 
--fail-fast clean test verify 
-D"maven.wagon.httpconnectionManager.ttlSeconds=120" -Pjacoco 
-DtrimStackTrace=false -D"maven.wagon.http.retryHandler.count=5" 
-DskipTests=false -DskipIntegrationTests=false -D"checkstyle.skip=false" 
-D"checkstyle_unix.skip=true" -D"rat.skip=false" -D"maven.javadoc.skip=true" 
-D"embeddedZookeeperPath=${{ github.workspace }}/.tmp/zookeeper"
-      - name: "Upload surefire-reports if failure"
-        if: ${{ failure() }}
-        uses: actions/upload-artifact@v4
-        with:
-          name: surefire-reports-${{ matrix.os }}-${{ matrix.jdk }}
-          path: "**/target/surefire-reports/**"
-      - name: "Upload coverage result"
-        uses: actions/upload-artifact@v4
-        with:
-          name: coverage-result-${{ matrix.os }}-${{ matrix.jdk }}
-          path: "**/target/site/**/jacoco.xml"
-      - name: "Upload coverage to Codecov"
-        uses: codecov/codecov-action@v4
-
-#  error-code-inspecting:
-#    needs: [check-license, build-tools]
-#    runs-on: ubuntu-latest
-#    steps:
-#      - uses: actions/checkout@v4
-#        with:
-#          path: "./dubbo-spi-extensions"
-#      - uses: actions/checkout@v4
-#        with:
-#          repository: 'apache/dubbo-test-tools'
-#          ref: main
-#          path: "./dubbo-test-tools"
-#      - name: "Set up JDK 21"
-#        uses: actions/setup-java@v4
-#        with:
-#          distribution: 'zulu'
-#          java-version: 21
-#      - name: Restore Maven local repository cache
-#        uses: actions/cache@v4
-#        with:
-#          path: ~/.m2/repository
-#          key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
-#          restore-keys: |
-#            ${{ runner.os }}-maven-
-#            ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
-#      - name: "Compile Dubbo-SPI-Extensions (Linux)"
-#        run: |
-#          cd ${{ github.workspace }}/dubbo-spi-extensions
-#          ./mvnw --batch-mode --no-snapshot-updates -e --no-transfer-progress 
--fail-fast -T 2C clean install -DskipTests=true -DskipIntegrationTests=true 
-Dcheckstyle.skip=true -Dcheckstyle_unix.skip=true -Drat.skip=true 
-Dmaven.javadoc.skip=true
-#      - name: "Run Error Code Inspecting"
-#        env:
-#          DUBBO_ECI_REPORT_AS_ERROR: true
-#        run: |
-#          cd ${{ github.workspace 
}}/dubbo-test-tools/dubbo-error-code-inspector
-#          ../mvnw --batch-mode --no-snapshot-updates -e 
--no-transfer-progress --fail-fast -T 2C package exec:java 
-Ddubbo.eci.report-as-error=${DUBBO_ECI_REPORT_AS_ERROR} -Dmaven.test.skip=true 
-Dmaven.test.skip.exec=true -Ddubbo.eci.path=${{ github.workspace 
}}/dubbo-spi-extensions
-#      - name: "Upload error code inspection result"
-#        # always() should not be used here, since we don't need to handle the 
'canceled' situation.
-#        if: ${{ success() || failure() }}
-#        uses: actions/upload-artifact@v4
-#        with:
-#          name: "error-inspection-result"
-#          path: ${{ github.workspace 
}}/dubbo-test-tools/dubbo-error-code-inspector/error-inspection-result.txt
diff --git a/.github/workflows/build-and-test-scheduled-main.yml 
b/.github/workflows/build-and-test-scheduled-main.yml
deleted file mode 100644
index ac1c9a79..00000000
--- a/.github/workflows/build-and-test-scheduled-main.yml
+++ /dev/null
@@ -1,331 +0,0 @@
-name: Build and Test Scheduled On master
-
-on:
-  schedule:
-    - cron: '0 0/6 * * *'
-  workflow_dispatch:
-
-permissions:
-  contents: read
-
-env:
-  FORK_COUNT: 2
-  FAIL_FAST: 0
-  SHOW_ERROR_DETAIL: 1
-  #multi-version size limit
-  VERSIONS_LIMIT: 4
-  JACOCO_ENABLE: true
-  CANDIDATE_VERSIONS: '
-    spring.version:5.3.24;
-    spring-boot.version:2.7.6;
-    '
-
-jobs:
-  # Check ASF License
-  check-license:
-    name: "Check License"
-    runs-on: ubuntu-latest
-    steps:
-      - name: Checkout
-        uses: actions/checkout@v4
-        with:
-          ref: 'master'
-      - name: Check License
-        uses: apache/[email protected]
-        env:
-          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-      - name: "Set up JDK 17"
-        uses: actions/setup-java@v4
-        with:
-          distribution: 'zulu'
-          java-version: 17
-      - name: Restore Maven local repository cache
-        uses: actions/cache@v4
-        with:
-          path: ~/.m2/repository
-          key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
-          restore-keys: |
-            ${{ runner.os }}-maven-
-            ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
-      - name: Check Dependencies' License
-        uses: 
apache/skywalking-eyes/dependency@e1a02359b239bd28de3f6d35fdc870250fa513d5
-        env:
-          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-        with:
-          config: .licenserc.yaml
-          mode: check
-  # Build dubbo-build-tool
-  build-tools:
-    name: "Build-tools"
-    needs: check-license
-    runs-on: ${{ matrix.os }}
-    strategy:
-      matrix:
-        os: [ ubuntu-latest, windows-latest ]
-      fail-fast: false
-    outputs:
-      cache-key: ${{ steps.dubbo-build-tools.cache }}
-    steps:
-      - name: Support long paths on Windows
-        if: ${{ startsWith( matrix.os, 'windows') }}
-        run: git config --system core.longpaths true
-      - uses: actions/checkout@v4
-        name: build tools
-        with:
-          repository: 'apache/dubbo'
-          ref: '3.2'
-          path: dubbo
-      - name: "Set up JDK 17"
-        uses: actions/setup-java@v4
-        with:
-          distribution: 'zulu'
-          java-version: 17
-      - uses: actions/cache@v4
-        name: "Cache local Maven repository"
-        with:
-          path: ~/.m2/repository
-          key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
-          restore-keys: |
-            ${{ runner.os }}-maven-
-            ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
-      - name: "Build tools"
-        run: |
-          cd ./dubbo
-          ./mvnw --batch-mode -U -e --no-transfer-progress install -pl 
dubbo-build-tools -am -DskipTests=true
-  # Build from source code
-  build-source:
-    name: "Build Dubbo-SPI-Extensions"
-    needs: [check-license, build-tools]
-    runs-on: ubuntu-latest
-    # output dubbo-spi-extensions version to others jobs
-    outputs:
-      version: ${{ steps.dubbo-spi-extensions-version.outputs.version }}
-    steps:
-      - uses: actions/checkout@v4
-        with:
-          ref: "master"
-          path: dubbo-spi-extensions
-      - uses: actions/setup-java@v4
-        with:
-          distribution: 'zulu'
-          java-version: 17
-      - uses: actions/cache@v4
-        name: "Cache local Maven repository"
-        with:
-          path: ~/.m2/repository
-          key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}-${{ 
github.run_id }}
-          restore-keys: |
-            ${{ runner.os }}-maven-
-            ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
-      - name: "Compile Dubbo-SPI-Extensions (Linux)"
-        run: |
-          cd ./dubbo-spi-extensions
-          ./mvnw --batch-mode --no-snapshot-updates -e --no-transfer-progress 
--fail-fast -T 2C clean compile -DskipIntegrationTests=true 
-Dcheckstyle.skip=true -Dcheckstyle_unix.skip=true -Drat.skip=true 
-Dmaven.javadoc.skip=true
-      - name: "Build Dubbo-SPI-Extensions with Maven"
-        run: |
-          cd ./dubbo-spi-extensions
-          ./mvnw --batch-mode --no-snapshot-updates -e --no-transfer-progress 
--fail-fast clean source:jar install -Pjacoco,checkstyle 
-Dmaven.wagon.httpconnectionManager.ttlSeconds=120 
-Dmaven.wagon.http.retryHandler.count=5 -Dmaven.test.skip=true 
-Dmaven.test.skip.exec=true -DembeddedZookeeperPath=${{ github.workspace 
}}/.tmp/zookeeper
-      - name: "Pack class result"
-        run: |
-          shopt -s globstar
-          zip ${{ github.workspace }}/class.zip **/target/classes/* -r
-      - name: "Upload class result"
-        uses: actions/upload-artifact@v4
-        with:
-          name: "class-file"
-          path: ${{ github.workspace }}/class.zip
-      - name: "Pack checkstyle file if failure"
-        if: failure()
-        run: zip ${{ github.workspace }}/checkstyle.zip *checkstyle* -r
-      - name: "Upload checkstyle file if failure"
-        if: failure()
-        uses: actions/upload-artifact@v4
-        with:
-          name: "checkstyle-file"
-          path: ${{ github.workspace }}/checkstyle.zip
-      - name: "Calculate Dubbo-SPI-Extensions Version"
-        id: dubbo-spi-extensions-version
-        run: |
-          REVISION=`awk 
'/<revision>[^<]+<\/revision>/{gsub(/<revision>|<\/revision>/,"",$1);print 
$1;exit;}' ./dubbo-spi-extensions/pom.xml`
-          echo "version=$REVISION" >> $GITHUB_OUTPUT
-          echo "dubbo-spi-extensions version: $REVISION"
-  # Download dependencies Prepare for unit test
-  unit-test-prepare:
-    name: "Preparation for Unit Test"
-    needs: [check-license]
-    runs-on: ${{ matrix.os }}
-    strategy:
-      matrix:
-        os: [ ubuntu-latest, windows-latest ]
-    env:
-      ZOOKEEPER_VERSION: 3.6.3
-    steps:
-      - uses: actions/cache@v4
-        name: "Cache zookeeper binary archive"
-        id: "cache-zookeeper"
-        with:
-          path: ${{ github.workspace }}/.tmp/zookeeper
-          key: zookeeper-${{ runner.os }}-${{ env.ZOOKEEPER_VERSION }}
-          restore-keys: |
-            zookeeper-${{ runner.os }}-${{ env.ZOOKEEPER_VERSION }}
-      - name: "Set up msys2 if necessary"
-        if: ${{ startsWith( matrix.os, 'windows') && 
steps.cache-zookeeper.outputs.cache-hit != 'true' }}
-        uses: msys2/setup-msys2@v2
-        with:
-          release: false  # support cache, see 
https://github.com/msys2/setup-msys2#context
-      - name: "Download zookeeper binary archive in Linux OS"
-        run: |
-          mkdir -p ${{ github.workspace }}/.tmp/zookeeper
-          wget -c https://archive.apache.org/dist/zookeeper/zookeeper-${{ 
env.ZOOKEEPER_VERSION }}/apache-zookeeper-${{ env.ZOOKEEPER_VERSION 
}}-bin.tar.gz -O ${{ github.workspace 
}}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz ||
-          wget -c https://apache.website-solution.net/zookeeper/zookeeper-${{ 
env.ZOOKEEPER_VERSION }}/apache-zookeeper-${{ env.ZOOKEEPER_VERSION 
}}-bin.tar.gz -O ${{ github.workspace 
}}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz ||
-          wget -c http://apache.stu.edu.tw/zookeeper/zookeeper-${{ 
env.ZOOKEEPER_VERSION }}/apache-zookeeper-${{ env.ZOOKEEPER_VERSION 
}}-bin.tar.gz -O ${{ github.workspace 
}}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz ||
-          wget -c http://ftp.jaist.ac.jp/pub/apache/zookeeper/zookeeper-${{ 
env.ZOOKEEPER_VERSION }}/apache-zookeeper-${{ env.ZOOKEEPER_VERSION 
}}-bin.tar.gz -O ${{ github.workspace 
}}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz ||
-          wget -c http://apache.mirror.cdnetworks.com/zookeeper/zookeeper-${{ 
env.ZOOKEEPER_VERSION }}/apache-zookeeper-${{ env.ZOOKEEPER_VERSION 
}}-bin.tar.gz -O ${{ github.workspace 
}}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz ||
-          wget -c http://mirror.apache-kr.org/apache/zookeeper/zookeeper-${{ 
env.ZOOKEEPER_VERSION }}/apache-zookeeper-${{ env.ZOOKEEPER_VERSION 
}}-bin.tar.gz -O ${{ github.workspace 
}}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz
-          echo "list the downloaded zookeeper binary archive"
-          ls -al ${{ github.workspace 
}}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz
-      - uses: actions/cache@v4
-        name: "Cache secret key"
-        id: "cache-secret-cert"
-        with:
-          path: ${{ github.workspace }}/.tmp/rsa
-          key: secret-rsa-${{ runner.os }}-${{ github.run_id }}
-      - name: "Create Secret"
-        run: |
-          mkdir -p ${{ github.workspace }}/.tmp/rsa
-          cd ${{ github.workspace }}/.tmp/rsa
-          openssl genrsa -out rsa_private.pem 1024
-          openssl rsa -in rsa_private.pem -pubout -out rsa_public.pem
-          echo "Current workflow run id: ${{ github.run_id }}"
-          echo "Start Print Rsa Public Key ---"
-          cat rsa_public.pem
-          echo "--- End Print Rsa Public Key"
-  # Start unit test
-  unit-test:
-    needs: [check-license, build-source, unit-test-prepare]
-    name: "Unit Test ${{ matrix.os }} with JDK ${{ matrix.jdk }}"
-    runs-on: ${{ matrix.os }}
-    strategy:
-      matrix:
-        os: [ ubuntu-latest, windows-latest ]
-        jdk: [17]
-      fail-fast: false
-    env:
-      DISABLE_FILE_SYSTEM_TEST: true
-      CURRENT_ROLE: ${{ matrix.case-role }}
-      DUBBO_DEFAULT_SERIALIZATION: fastjson2
-    steps:
-      - name: Support Windows
-        if: ${{ startsWith( matrix.os, 'windows') }}
-        run: |
-          git config --system core.longpaths true
-      - uses: actions/checkout@v4
-        with:
-          fetch-depth: 0
-      - name: "Set up JDK ${{ matrix.jdk }}"
-        uses: actions/setup-java@v4
-        with:
-          distribution: 'zulu'
-          java-version: 17
-      - uses: actions/cache@v4
-        name: "Cache local Maven repository"
-        with:
-          path: ~/.m2/repository
-          key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}-${{ 
github.run_id }}
-          restore-keys: |
-            ${{ runner.os }}-maven-
-            ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
-      - uses: actions/cache@v4
-        name: "Cache zookeeper binary archive"
-        id: "cache-zookeeper"
-        with:
-          path: ${{ github.workspace }}/.tmp/zookeeper
-          key: zookeeper-${{ runner.os }}-${{ env.ZOOKEEPER_VERSION }}
-          restore-keys: |
-            zookeeper-${{ runner.os }}-
-      - uses: actions/cache@v4
-        name: "Cache secret key"
-        id: "cache-secret-cert"
-        with:
-          path: ${{ github.workspace }}/.tmp/rsa
-          key: secret-rsa-${{ runner.os }}-${{ github.run_id }}
-      #      - name: "Get sonarcloud token"
-      #        if: ${{ github.repository == 'apache/dubbo-spi-extensions' }}
-      #        run: |
-      #          curl "http://dubbo-vm.apache.org:8000/token?workflow_id=${{ 
github.run_id }}" -o ${{ github.workspace }}/.tmp/encrypted-sonarcloud-token
-      #          openssl rsautl -decrypt -in ${{ github.workspace 
}}/.tmp/encrypted-sonarcloud-token -out ${{ github.workspace 
}}/.tmp/decrypted-sonarcloud-token -inkey ${{ github.workspace 
}}/.tmp/rsa/rsa_private.pem
-      #      - name: "Test with Maven with SonarCloud Scan"
-      #        if: ${{ github.repository == 'apache/dubbo-spi-extensions' }}
-      #        timeout-minutes: 70
-      #        env:
-      #          # Needed to get some information about the pull request, if 
any
-      #          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-      #        run: |
-      #          source ${{ github.workspace }}/.tmp/decrypted-sonarcloud-token
-      #          ./mvnw --batch-mode --no-snapshot-updates -e 
--no-transfer-progress --fail-fast clean test verify 
org.sonarsource.scanner.maven:sonar-maven-plugin:sonar 
-Pjacoco,jdk15ge-simple,'!jdk15ge',jacoco089 
-Dsonar.host.url=https://sonarcloud.io -Dsonar.organization=apache 
-Dsonar.projectKey=apache_dubbo -DtrimStackTrace=false 
-Dmaven.wagon.httpconnectionManager.ttlSeconds=120 
-Dmaven.wagon.http.retryHandler.count=5 -DskipTests=false 
-DskipIntegrationTests=false -Dcheckstyle.skip [...]
-      - name: "Test with Maven without SonarCloud Scan On Linux"
-        if: ${{ startsWith( matrix.os, 'linux') || startsWith( matrix.os, 
'ubuntu') }}
-        timeout-minutes: 70
-        run: |
-          ./mvnw --batch-mode --no-snapshot-updates -e --no-transfer-progress 
--fail-fast clean test verify 
-D"maven.wagon.httpconnectionManager.ttlSeconds=120" -Pjacoco 
-DtrimStackTrace=false -D"maven.wagon.http.retryHandler.count=5" 
-DskipTests=false -DskipIntegrationTests=false -D"checkstyle.skip=false" 
-D"checkstyle_unix.skip=false" -D"rat.skip=false" -D"maven.javadoc.skip=true" 
-D"embeddedZookeeperPath=${{ github.workspace }}/.tmp/zookeeper"
-      - name: "Test with Maven without SonarCloud Scan On Windows"
-        if: ${{ startsWith( matrix.os, 'windows')  }}
-        timeout-minutes: 70
-        run: |
-          ./mvnw --batch-mode --no-snapshot-updates -e --no-transfer-progress 
--fail-fast clean test verify 
-D"maven.wagon.httpconnectionManager.ttlSeconds=120" -Pjacoco 
-DtrimStackTrace=false -D"maven.wagon.http.retryHandler.count=5" 
-DskipTests=false -DskipIntegrationTests=false -D"checkstyle.skip=false" 
-D"checkstyle_unix.skip=true" -D"rat.skip=false" -D"maven.javadoc.skip=true" 
-D"embeddedZookeeperPath=${{ github.workspace }}/.tmp/zookeeper"
-      - name: "Upload surefire-reports if failure"
-        if: ${{ failure() }}
-        uses: actions/upload-artifact@v4
-        with:
-          name: surefire-reports-${{ matrix.os }}-${{ matrix.jdk }}
-          path: "**/target/surefire-reports/**"
-      - name: "Upload coverage result"
-        uses: actions/upload-artifact@v4
-        with:
-          name: coverage-result-${{ matrix.os }}-${{ matrix.jdk }}
-          path: "**/target/site/**/jacoco.xml"
-      - name: "Upload coverage to Codecov"
-        uses: codecov/codecov-action@v4
-
-#  error-code-inspecting:
-#    needs: [check-license, build-tools]
-#    runs-on: ubuntu-latest
-#    steps:
-#      - uses: actions/checkout@v4
-#        with:
-#          path: "./dubbo-spi-extensions"
-#      - uses: actions/checkout@v4
-#        with:
-#          repository: 'apache/dubbo-test-tools'
-#          ref: main
-#          path: "./dubbo-test-tools"
-#      - name: "Set up JDK 21"
-#        uses: actions/setup-java@v4
-#        with:
-#          distribution: 'zulu'
-#          java-version: 21
-#      - name: Restore Maven local repository cache
-#        uses: actions/cache@v4
-#        with:
-#          path: ~/.m2/repository
-#          key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
-#          restore-keys: |
-#            ${{ runner.os }}-maven-
-#            ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
-#      - name: "Compile Dubbo-SPI-Extensions (Linux)"
-#        run: |
-#          cd ${{ github.workspace }}/dubbo-spi-extensions
-#          ./mvnw --batch-mode --no-snapshot-updates -e --no-transfer-progress 
--fail-fast -T 2C clean install -DskipTests=true -DskipIntegrationTests=true 
-Dcheckstyle.skip=true -Dcheckstyle_unix.skip=true -Drat.skip=true 
-Dmaven.javadoc.skip=true
-#      - name: "Run Error Code Inspecting"
-#        env:
-#          DUBBO_ECI_REPORT_AS_ERROR: true
-#        run: |
-#          cd ${{ github.workspace 
}}/dubbo-test-tools/dubbo-error-code-inspector
-#          ../mvnw --batch-mode --no-snapshot-updates -e 
--no-transfer-progress --fail-fast -T 2C package exec:java 
-Ddubbo.eci.report-as-error=${DUBBO_ECI_REPORT_AS_ERROR} -Dmaven.test.skip=true 
-Dmaven.test.skip.exec=true -Ddubbo.eci.path=${{ github.workspace 
}}/dubbo-spi-extensions
-#      - name: "Upload error code inspection result"
-#        # always() should not be used here, since we don't need to handle the 
'canceled' situation.
-#        if: ${{ success() || failure() }}
-#        uses: actions/upload-artifact@v4
-#        with:
-#          name: "error-inspection-result"
-#          path: ${{ github.workspace 
}}/dubbo-test-tools/dubbo-error-code-inspector/error-inspection-result.txt
diff --git a/.github/workflows/conformance.yml 
b/.github/workflows/conformance.yml
index c0afb953..d91e5303 100644
--- a/.github/workflows/conformance.yml
+++ b/.github/workflows/conformance.yml
@@ -1,108 +1,131 @@
-#name: Extensions Conformance Tests
-#
-#on:
-#  pull_request:
-#    paths:
-#      - "**"
-#      - "!**/*.md"
-#      - "!docs/**"
-#  push:
-#    paths:
-#      - '**'
-#      - "!**/*.md"
-#      - "!docs/**"
-#
-#env:
-#  FORK_COUNT: 2
-#  FAIL_FAST: 0
-#  SHOW_ERROR_DETAIL: 1
-#  BUILD_OPTS: --batch-mode --no-snapshot-updates --no-transfer-progress 
-Dmaven.wagon.http.retryHandler.count=3 clean package 
dependency:copy-dependencies -DskipTests
-#
-#jobs:
-#  build-extensions:
-#    name: "Build Extensions"
-#    runs-on: ubuntu-latest
-#    steps:
-#      - uses: actions/checkout@v4
-#        with:
-#          path: dubbo-spi-extensions
-#      - uses: actions/checkout@v4
-#        with:
-#          repository: 'apache/dubbo'
-#          ref: '3.0'
-#          path: dubbo
-#      - name: Set up JDK 8
-#        uses: actions/setup-java@v4
-#        with:
-#          distribution: 'zulu'
-#          java-version: 8
-#      - uses: actions/cache@v4
-#        name: "Cache local Maven repository"
-#        with:
-#          path: ~/.m2/repository
-#          key: ${{ runner.os }}-extensions-maven${{ hashFiles('**/pom.xml') }}
-#          restore-keys: |
-#            ${{ runner.os }}-extensions-maven
-#      - name: "Build tools"
-#        run: |
-#          cd ./dubbo
-#          ./mvnw --batch-mode -U -e --no-transfer-progress install -pl 
dubbo-build-tools -am
-#      - name: "Build with Maven"
-#  run: |
-#    cd ./dubbo-spi-extensions
-#    ./mvnw --batch-mode -U -e --no-transfer-progress install -am
-#
-#
-#  testjob:
-#    needs: [ build-extensions ]
-#    name: 'Conformance Test'
-#    runs-on: ubuntu-latest
-#    env:
-#      JAVA_VER: ${{matrix.java}}
-#    strategy:
-#      fail-fast: false
-#      matrix:
-#        # use the unsafe only run on the jdk8
-#        java: [ 17 ]
-#        #testjob id list MUST match 'JOB_COUNT' of 'prepare_test'
-#        job_id: [ 1,2,3 ]
-#    steps:
-#      - uses: actions/checkout@v4
-#      - name: Set up JDK ${{matrix.java}}
-#        uses: actions/setup-java@v4
-#        with:
-#          distribution: 'zulu'
-#          java-version: ${{matrix.java}}
-#      - name: Cache local Maven repository
-#        uses: actions/cache@v4
-#        with:
-#          path: ~/.m2/repository
-#          key: ${{ runner.os }}-extensions-maven${{ hashFiles('**/pom.xml') }}
-#          restore-keys: |
-#            ${{ runner.os }}-extensions-maven
-#      - name: Download test list
-#        uses: actions/download-artifact@v4
-#        with:
-#          name: test-list
-#          path: test/jobs/
-#      - name: Build test image
-#        run: |
-#          cd test && bash ./build-test-image.sh
-#      - name: Run tests
-#        run: cd test && bash ./run-tests.sh
-#      - name: Upload log if test failed
-#        if: failure()
-#        uses: actions/upload-artifact@v4
-#        with:
-#          name: test-log-${{matrix.java}}-${{matrix.job_id}}
-#          path: "**/test/scenarios/**/logs/*"
-#      - name: Upload test result
-#        if: always()
-#        uses: actions/upload-artifact@v4
-#        with:
-#          name: test-result-${{matrix.job_id}}
-#          path: test/jobs/*-result*
-#
+name: Extensions Conformance Tests
+
+on:
+  pull_request:
+    paths:
+      - "**"
+      - "!**/*.md"
+      - "!docs/**"
+  push:
+    paths:
+      - '**'
+      - "!**/*.md"
+      - "!docs/**"
+
+env:
+  FORK_COUNT: 2
+  FAIL_FAST: 0
+  SHOW_ERROR_DETAIL: 1
+  BUILD_OPTS: --batch-mode --no-snapshot-updates --no-transfer-progress 
-Dmaven.wagon.http.retryHandler.count=3 clean package 
dependency:copy-dependencies -DskipTests
+
+jobs:
+  build-extensions:
+    name: "Build Extensions"
+    runs-on: ubuntu-latest
+    strategy:
+      matrix:
+        dubbo-version:
+          - "3.0"
+          - "3.1"
+          - "3.2"
+          - "3.3"
+          - "3.4"
+    steps:
+      - name: Checkout Dubbo SPI Extensions
+        uses: actions/checkout@v4
+        with:
+          path: dubbo-spi-extensions
+
+      - name: Checkout Apache Dubbo
+        uses: actions/checkout@v4
+        with:
+          repository: apache/dubbo
+          ref: ${{ matrix.dubbo-version }}
+          path: dubbo
+          fetch-depth: 0
+
+
+      - name: Set up JDK 17
+        uses: actions/setup-java@v4
+        with:
+          distribution: 'zulu'
+          java-version: 17
+
+      - name: Cache local Maven repository
+        uses: actions/cache@v4
+        id: maven-cache
+        with:
+          path: ~/.m2/repository
+          key: maven-${{ runner.os }}-${{ matrix.java }}-${{ 
hashFiles('**/pom.xml') }}
+          restore-keys: |
+            maven-${{ runner.os }}-${{ matrix.java }}-
+            maven-${{ runner.os }}-
+      
+
+      - name: "Build with Maven"
+        run: |
+          cd ./dubbo-spi-extensions
+          ./mvnw --batch-mode -U -e --no-transfer-progress install -am
+  
+  
+
+  testjob:
+    needs: [ build-extensions ]
+    name: 'Conformance Test'
+    runs-on: ubuntu-latest
+    env:
+      JAVA_VER: ${{matrix.java}}
+    strategy:
+      fail-fast: false
+      matrix:
+        java: [ 17 ]
+        job_id: [ 1,2,3 ]
+        os: [ ubuntu-latest ]
+    steps:
+      - uses: actions/checkout@v4
+      - name: Set up JDK ${{matrix.java}}
+        uses: actions/setup-java@v4
+        with:
+          distribution: 'zulu'
+          java-version: ${{matrix.java}}
+
+      - name: "Cache local Maven repository"
+        id: maven-cache
+        uses: actions/cache@v4
+        with:
+          path: ~/.m2/repository
+          key: maven-${{ runner.os }}-${{ matrix.java }}-${{ 
hashFiles('**/pom.xml') }}
+          restore-keys: |
+            maven-${{ runner.os }}-${{ matrix.java }}-
+            maven-${{ runner.os }}-
+      
+
+  #    - name: Download test list
+  #      uses: actions/download-artifact@v4
+  #      with:
+  #        name: test-list
+  #        path: test/jobs/
+      - name: Build Test Image (if test folder exists)
+        if: ${{ hashFiles('test/build-test-image.sh') != '' }}
+        run: cd test && bash ./build-test-image.sh
+      - name: Run tests
+        run: |
+          for i in {1..2}; do
+            cd test && bash ./run-tests.sh && break || sleep 10;
+          done
+      - name: Upload log if test failed
+        if: failure()
+        uses: actions/upload-artifact@v4
+        with:
+          name: test-log-${{matrix.java}}-${{matrix.job_id}}
+          path: "**/test/scenarios/**/logs/*"
+  #    - name: Upload test result
+  #      if: always()
+  #      uses: actions/upload-artifact@v4
+  #      with:
+  #        name: test-result-${{matrix.job_id}}
+  #        path: test/jobs/*-result*
+
 #  merge_test:
 #    needs: [ testjob ]
 #    name: 'Merge Test Result (Java${{matrix.java}})'
@@ -110,7 +133,7 @@
 #    strategy:
 #      fail-fast: false
 #      matrix:
-#        java: [ 8 ]
+#        java: [ 17 ]
 #    env:
 #      JAVA_VER: ${{matrix.java}}
 #    steps:
@@ -122,27 +145,25 @@
 #          pattern: test-result-*
 #          delete-merged: true
 
-#  test_result:
-#    needs: [ testjob ]
-#    name: 'Test Result (Java${{matrix.java}})'
-#    if: always()
-#    runs-on: ubuntu-latest
-#    strategy:
-#      fail-fast: false
-#      matrix:
-#        java: [ 8 ]
-#    env:
-#      JAVA_VER: ${{matrix.java}}
-#    steps:
-#      - uses: actions/checkout@v4
-#      - name: Download test result
-#        uses: actions/download-artifact@v4
-#        with:
-#          path: test/jobs/
-#      - name: Merge test result - java ${{matrix.java}}
-#        run: ./test/scripts/merge-test-results.sh
-#      - name: Upload merge test result
-#        uses: actions/upload-artifact@v4
-#        with:
-#          name: merge-test-result-${{matrix.java}}
-#          path: test/jobs/*-result*
+  test_result:
+    needs: [ testjob ]
+    name: 'Test Result (Java${{matrix.java}})'
+    if: always()
+    runs-on: ubuntu-latest
+    strategy:
+      fail-fast: false
+      matrix:
+        java: [ 17 ]
+    env:
+      JAVA_VER: ${{matrix.java}}
+    steps:
+      - uses: actions/checkout@v4
+      - name: Download test result
+        uses: actions/download-artifact@v4
+        with:
+          path: test/jobs/
+      - name: Upload merge test result
+        uses: actions/upload-artifact@v4
+        with:
+          name: merge-test-result-${{matrix.java}}
+          path: test/jobs/*-result*
diff --git a/.github/workflows/release-test.yml 
b/.github/workflows/release-test.yml
index af20e26b..03482940 100644
--- a/.github/workflows/release-test.yml
+++ b/.github/workflows/release-test.yml
@@ -41,10 +41,11 @@ jobs:
         uses: actions/cache@v4
         with:
           path: ~/.m2/repository
-          key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
+          key: maven-${{ runner.os }}-${{ hashFiles('**/pom.xml') }}
           restore-keys: |
-            ${{ runner.os }}-maven-
-            ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
+            maven-${{ runner.os }}-${{ matrix.dubbo-version }}-
+            maven-${{ runner.os }}-maven-
+            maven-${{ runner.os }}-
       - name: Check Dependencies' License
         uses: 
apache/skywalking-eyes/dependency@e1a02359b239bd28de3f6d35fdc870250fa513d5
         env:
@@ -58,38 +59,46 @@ jobs:
     needs: check-license
     runs-on: ${{ matrix.os }}
     strategy:
+      fail-fast: false
       matrix:
         os: [ ubuntu-latest, windows-latest ]
-      fail-fast: false
+        dubbo-version:
+          - "3.0"
+          - "3.1"
+          - "3.2"
+          - "3.3"
+          - "master"
     outputs:
-      cache-key: ${{ steps.dubbo-build-tools.cache }}
+      cache-key: ${{ steps.maven-cache.outputs.cache-hit }}
     steps:
       - name: Support long paths on Windows
-        if: ${{ startsWith( matrix.os, 'windows') }}
+        if: ${{ startsWith(matrix.os, 'windows') }}
         run: git config --system core.longpaths true
-      - uses: actions/checkout@v4
-        name: build tools
+
+      - name: Checkout Dubbo Code
+        uses: actions/checkout@v4
         with:
           repository: 'apache/dubbo'
-          ref: '3.2'
+          ref: ${{ matrix.dubbo-version }}
           path: dubbo
+
       - name: "Set up JDK 17"
         uses: actions/setup-java@v4
         with:
           distribution: 'zulu'
           java-version: 17
-      - uses: actions/cache@v4
-        name: "Cache local Maven repository"
+
+      - name: "Cache local Maven repository"
+        id: maven-cache
+        uses: actions/cache@v4
         with:
           path: ~/.m2/repository
-          key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
+          key: maven-${{ runner.os }}-dubbo-${{ matrix.dubbo-version }}-${{ 
hashFiles('**/pom.xml') }}
           restore-keys: |
-            ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
-            ${{ runner.os }}-maven-
-      - name: "Build tools"
-        run: |
-          cd ./dubbo
-          ./mvnw --batch-mode -U -e --no-transfer-progress install -pl 
dubbo-build-tools -am -DskipTests=true
+            maven-${{ runner.os }}-dubbo-${{ matrix.dubbo-version }}-
+            maven-${{ runner.os }}-dubbo-
+            maven-${{ runner.os }}-
+
   # Build from source code
   build-source:
     name: "Build Dubbo-SPI-Extensions"
@@ -113,10 +122,11 @@ jobs:
         name: "Cache local Maven repository"
         with:
           path: ~/.m2/repository
-          key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}-${{ 
github.run_id }}
+          key: maven-${{ runner.os }}-${{ hashFiles('**/pom.xml') }}
           restore-keys: |
-            ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
-            ${{ runner.os }}-maven-
+            maven-${{ runner.os }}-${{ matrix.dubbo-version }}-
+            maven-${{ runner.os }}-maven-
+            maven-${{ runner.os }}-
       - name: "Compile Dubbo-SPI-Extensions (Linux)"
         run: |
           cd ./dubbo-spi-extensions
@@ -248,10 +258,11 @@ jobs:
         name: "Cache local Maven repository"
         with:
           path: ~/.m2/repository
-          key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}-${{ 
github.run_id }}
+          key: maven-${{ runner.os }}-${{ hashFiles('**/pom.xml') }}
           restore-keys: |
-            ${{ runner.os }}-maven-
-            ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
+            maven-${{ runner.os }}-${{ matrix.dubbo-version }}-
+            maven-${{ runner.os }}-maven-
+            maven-${{ runner.os }}-
       - uses: actions/cache@v4
         name: "Cache zookeeper binary archive"
         id: "cache-zookeeper"

Reply via email to