This is an automated email from the ASF dual-hosted git repository. albumenj pushed a commit to branch 3.2 in repository https://gitbox.apache.org/repos/asf/dubbo.git
commit fa485deb47560e61e794124c42a415dc73edcecb Author: Albumen Kevin <[email protected]> AuthorDate: Sat Oct 22 15:52:35 2022 +0800 Fix conflit --- .github/workflows/build-and-test-pr.yml | 273 ++++++++++++++++ .github/workflows/build-and-test-scheduled-3.0.yml | 269 ++++++++++++++++ .github/workflows/build-and-test-scheduled-3.2.yml | 344 +++++++++++++++++++++ 3 files changed, 886 insertions(+) diff --git a/.github/workflows/build-and-test-pr.yml b/.github/workflows/build-and-test-pr.yml new file mode 100644 index 0000000000..a1673482de --- /dev/null +++ b/.github/workflows/build-and-test-pr.yml @@ -0,0 +1,273 @@ +name: Build and Test For PR + +on: [push, pull_request, workflow_dispatch] + +permissions: + contents: read + +env: + FORK_COUNT: 2 + FAIL_FAST: 0 + SHOW_ERROR_DETAIL: 1 + #multi-version size limit + VERSIONS_LIMIT: 4 + CANDIDATE_VERSIONS: ' + spring.version:4.3.30.RELEASE; + spring-boot.version:1.5.22.RELEASE; + spring-boot.version:2.4.1; + ' + +jobs: + license: + runs-on: ubuntu-20.04 + steps: + - uses: actions/checkout@v2 + - name: Check License + uses: apache/skywalking-eyes@main + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + build-source: + runs-on: ubuntu-20.04 + outputs: + version: ${{ steps.dubbo-version.outputs.version }} + steps: + - uses: actions/checkout@v2 + with: + path: dubbo + - uses: actions/setup-java@v1 + with: + java-version: 8 + - uses: actions/cache@v2 + name: "Cache local Maven repository" + with: + path: ~/.m2/repository + key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}-${{ github.run_id }} + restore-keys: | + ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} + ${{ runner.os }}-maven- + - name: "Dubbo cache" + uses: actions/cache@v2 + with: + path: ~/.m2/repository/org/apache/dubbo + key: ${{ runner.os }}-dubbo-snapshot-${{ github.sha }}-${{ github.run_id }} + - name: "Build Dubbo with Maven" + run: | + cd ./dubbo + ./mvnw --batch-mode --no-snapshot-updates -e --no-transfer-progress --fail-fast clean source:jar install -Pjacoco,rat,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 rat file if failure" + if: failure() + run: 7z a ${{ github.workspace }}/rat.zip *rat.txt -r + - name: "Upload rat file if failure" + if: failure() + uses: actions/upload-artifact@v2 + with: + name: "rat-file" + path: ${{ github.workspace }}/rat.zip + - name: "Pack checkstyle file if failure" + if: failure() + run: 7z a ${{ github.workspace }}/checkstyle.zip *checkstyle* -r + - name: "Upload checkstyle file if failure" + if: failure() + uses: actions/upload-artifact@v2 + with: + name: "checkstyle-file" + path: ${{ github.workspace }}/checkstyle.zip + - name: "Calculate Dubbo Version" + id: dubbo-version + run: | + REVISION=`awk '/<revision>[^<]+<\/revision>/{gsub(/<revision>|<\/revision>/,"",$1);print $1;exit;}' ./dubbo/pom.xml` + echo "::set-output name=version::$REVISION" + echo "dubbo version: $REVISION" + + unit-test-prepare: + name: "Preparation for Unit Test" + runs-on: ubuntu-20.04 + strategy: + fail-fast: false + env: + ZOOKEEPER_VERSION: 3.6.3 + steps: + - uses: actions/cache@v2 + 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 + + unit-test: + needs: [build-source, unit-test-prepare] + name: "Unit Test On ubuntu-20.04" + runs-on: ubuntu-20.04 + strategy: + fail-fast: false + env: + DISABLE_FILE_SYSTEM_TEST: true + CURRENT_ROLE: ${{ matrix.case-role }} + steps: + - uses: actions/checkout@v2 + - name: "Set up JDK ${{ matrix.jdk }}" + uses: actions/setup-java@v1 + with: + java-version: 17 + - uses: actions/cache@v2 + name: "Cache local Maven repository" + with: + path: ~/.m2/repository + key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}-${{ github.run_id }} + restore-keys: | + ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} + ${{ runner.os }}-maven- + - name: "Test with Maven with Integration Tests" + timeout-minutes: 70 + run: ./mvnw --batch-mode --no-snapshot-updates -e --no-transfer-progress --fail-fast clean test verify -Pjacoco -Dmaven.wagon.httpconnectionManager.ttlSeconds=120 -Dmaven.wagon.http.retryHandler.count=5 -DskipTests=false -DskipIntegrationTests=false -Dcheckstyle.skip=false -Dcheckstyle_unix.skip=false -Drat.skip=false -Dmaven.javadoc.skip=true -DembeddedZookeeperPath=${{ github.workspace }}/.tmp/zookeeper + - name: "Upload coverage to Codecov" + uses: codecov/codecov-action@v1 + + integration-test-prepare: + runs-on: ubuntu-20.04 + env: + JOB_COUNT: 3 + steps: + - uses: actions/checkout@v2 + with: + repository: 'apache/dubbo-samples' + ref: master + - name: "Prepare test list" + run: | + bash ./test/scripts/prepare-test.sh + - name: "Upload test list" + uses: actions/upload-artifact@v2 + with: + name: test-list + path: test/jobs + + integration-test-job: + needs: [build-source, integration-test-prepare] + name: "Integration Test on ubuntu-20.04 (JobId: ${{matrix.job_id}})" + runs-on: ubuntu-20.04 + timeout-minutes: 30 + env: + JAVA_VER: 8 + TEST_CASE_FILE: jobs/testjob_${{matrix.job_id}}.txt + strategy: + fail-fast: false + matrix: + job_id: [1, 2, 3] + steps: + - uses: actions/checkout@v2 + with: + repository: 'apache/dubbo-samples' + ref: master + - name: "Cache local Maven repository" + uses: actions/cache@v2 + with: + path: ~/.m2/repository + key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}-${{ github.run_id }} + restore-keys: | + ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} + ${{ runner.os }}-maven- + - name: "Restore Dubbo cache" + uses: actions/cache@v2 + with: + path: ~/.m2/repository/org/apache/dubbo + key: ${{ runner.os }}-dubbo-snapshot-${{ github.sha }}-${{ github.run_id }} + restore-keys: | + ${{ runner.os }}-dubbo-snapshot-${{ github.sha }} + ${{ runner.os }}-dubbo-snapshot- + - name: "Download test list" + uses: actions/download-artifact@v2 + with: + name: test-list + path: test/jobs/ + - name: "Set up JDK 8" + uses: actions/setup-java@v1 + with: + java-version: 8 + - name: "Init Candidate Versions" + run: | + DUBBO_VERSION="${{needs.build-source.outputs.version}}" + CANDIDATE_VERSIONS="dubbo.version:$DUBBO_VERSION;compiler.version:$DUBBO_VERSION;$CANDIDATE_VERSIONS;dubbo.compiler.version:$DUBBO_VERSION" + echo "CANDIDATE_VERSIONS=$CANDIDATE_VERSIONS" >> $GITHUB_ENV + - name: "Build test image" + run: | + cd test && bash ./build-test-image.sh + - name: "Run tests" + run: cd test && bash ./run-tests.sh + - name: "Upload test result" + if: always() + uses: actions/upload-artifact@v2 + with: + name: test-result + path: test/jobs/*-result* + + integration-test-result: + needs: [integration-test-job] + if: always() + runs-on: ubuntu-20.04 + env: + JAVA_VER: 8 + steps: + - uses: actions/checkout@v2 + with: + repository: 'apache/dubbo-samples' + ref: master + - name: "Download test result" + uses: actions/download-artifact@v2 + with: + name: test-result + path: test/jobs/ + - name: "Merge test result" + run: ./test/scripts/merge-test-results.sh + + error-code-inspecting: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + with: + path: "./dubbo" + + - uses: actions/checkout@v2 + with: + repository: 'apache/dubbo-test-tools' + ref: main + path: "./dubbo-test-tools" + + - name: "Set up JDK 17" + uses: actions/setup-java@v1 + with: + java-version: 17 + + - name: "Compile Dubbo (Linux)" + run: | + cd ${{ github.workspace }}/dubbo + ./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": false + 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 -Dmaven.test.skip=true -Dmaven.test.skip.exec=true -Ddubbo.eci.path=${{ github.workspace }}/dubbo + + - name: "Upload error code inspection result" + uses: actions/upload-artifact@v2 + 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.0.yml b/.github/workflows/build-and-test-scheduled-3.0.yml new file mode 100644 index 0000000000..9ade11e0d7 --- /dev/null +++ b/.github/workflows/build-and-test-scheduled-3.0.yml @@ -0,0 +1,269 @@ +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 + CANDIDATE_VERSIONS: ' + spring.version:4.3.30.RELEASE; + spring-boot.version:1.5.22.RELEASE; + spring-boot.version:2.4.1; + ' + +jobs: + license: + runs-on: ubuntu-20.04 + steps: + - uses: actions/checkout@v2 + with: + ref: 3.0 + - name: Check License + uses: apache/skywalking-eyes@main + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + build-source: + runs-on: ubuntu-20.04 + outputs: + version: ${{ steps.dubbo-version.outputs.version }} + steps: + - uses: actions/checkout@v2 + with: + ref: 3.0 + path: dubbo + - uses: actions/setup-java@v1 + with: + java-version: 8 + - uses: actions/cache@v2 + name: "Cache local Maven repository" + with: + path: ~/.m2/repository + key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}-${{ github.run_id }} + restore-keys: | + ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} + ${{ runner.os }}-maven- + - name: "Dubbo cache" + uses: actions/cache@v2 + with: + path: ~/.m2/repository/org/apache/dubbo + key: ${{ runner.os }}-dubbo-snapshot-${{ github.sha }}-${{ github.run_id }} + - name: "Build Dubbo with Maven" + run: | + cd ./dubbo + ./mvnw --batch-mode --no-snapshot-updates -e --no-transfer-progress --fail-fast clean source:jar install -Pjacoco,rat,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 rat file if failure" + if: failure() + run: 7z a ${{ github.workspace }}/rat.zip *rat.txt -r + - name: "Upload rat file if failure" + if: failure() + uses: actions/upload-artifact@v2 + with: + name: "rat-file" + path: ${{ github.workspace }}/rat.zip + - name: "Pack checkstyle file if failure" + if: failure() + run: 7z a ${{ github.workspace }}/checkstyle.zip *checkstyle* -r + - name: "Upload checkstyle file if failure" + if: failure() + uses: actions/upload-artifact@v2 + with: + name: "checkstyle-file" + path: ${{ github.workspace }}/checkstyle.zip + - name: "Calculate Dubbo Version" + id: dubbo-version + run: | + REVISION=`awk '/<revision>[^<]+<\/revision>/{gsub(/<revision>|<\/revision>/,"",$1);print $1;exit;}' ./dubbo/pom.xml` + echo "::set-output name=version::$REVISION" + echo "dubbo version: $REVISION" + + unit-test-prepare: + name: " Preparation for Unit Test On ${{ matrix.os }}" + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: [ ubuntu-20.04, windows-2019 ] + env: + ZOOKEEPER_VERSION: 3.6.3 + steps: + - uses: actions/cache@v2 + 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 + + unit-test: + needs: [build-source, unit-test-prepare] + name: "Unit Test On ${{ matrix.os }} (JDK: ${{ matrix.jdk }})" + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: [ ubuntu-20.04, windows-2019 ] + jdk: [ 8, 11, 17 ] + env: + DISABLE_FILE_SYSTEM_TEST: true + steps: + - uses: actions/checkout@v2 + with: + ref: 3.0 + - name: "Set up JDK ${{ matrix.jdk }}" + uses: actions/setup-java@v1 + with: + java-version: ${{ matrix.jdk }} + - uses: actions/cache@v2 + name: "Cache local Maven repository" + with: + path: ~/.m2/repository + key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}-${{ github.run_id }} + restore-keys: | + ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} + ${{ runner.os }}-maven- + - name: "Test with Maven with Integration Tests" + timeout-minutes: 70 + if: ${{ startsWith( matrix.os, 'ubuntu') }} + run: ./mvnw --batch-mode --no-snapshot-updates -e --no-transfer-progress --fail-fast clean test verify -Pjacoco -Dmaven.wagon.httpconnectionManager.ttlSeconds=120 -Dmaven.wagon.http.retryHandler.count=5 -DskipTests=false -DskipIntegrationTests=false -Dcheckstyle.skip=false -Dcheckstyle_unix.skip=false -Drat.skip=false -Dmaven.javadoc.skip=true -DembeddedZookeeperPath=${{ github.workspace }}/.tmp/zookeeper + - name: "Test with Maven without Integration Tests" + timeout-minutes: 90 + if: ${{ startsWith( matrix.os, 'windows') }} + run: ./mvnw --batch-mode --no-snapshot-updates -e --no-transfer-progress --fail-fast clean test verify -Pjacoco -D"http.keepAlive=false" -D"maven.wagon.http.pool=false" -D"maven.wagon.httpconnectionManager.ttlSeconds=120" -D"maven.wagon.http.retryHandler.count=5" -DskipTests=false -DskipIntegrationTests=true -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 coverage to Codecov" + uses: codecov/codecov-action@v1 + + integration-test-prepare: + runs-on: ubuntu-20.04 + env: + JOB_COUNT: 3 + steps: + - uses: actions/checkout@v2 + with: + repository: 'apache/dubbo-samples' + ref: master + - name: "Prepare test list" + run: | + bash ./test/scripts/prepare-test.sh + - name: "Upload test list" + uses: actions/upload-artifact@v2 + with: + name: test-list + path: test/jobs + + integration-test-job: + needs: [build-source, integration-test-prepare] + name: "Integration Test on ubuntu-20.04 (JobId: ${{matrix.job_id}})" + runs-on: ubuntu-20.04 + timeout-minutes: 30 + env: + JAVA_VER: 8 + TEST_CASE_FILE: jobs/testjob_${{matrix.job_id}}.txt + strategy: + fail-fast: false + matrix: + job_id: [1, 2, 3] + steps: + - uses: actions/checkout@v2 + with: + repository: 'apache/dubbo-samples' + ref: master + - name: "Cache local Maven repository" + uses: actions/cache@v2 + with: + path: ~/.m2/repository + key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}-${{ github.run_id }} + restore-keys: | + ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} + ${{ runner.os }}-maven- + - name: "Restore Dubbo cache" + uses: actions/cache@v2 + with: + path: ~/.m2/repository/org/apache/dubbo + key: ${{ runner.os }}-dubbo-snapshot-${{ github.sha }}-${{ github.run_id }} + restore-keys: | + ${{ runner.os }}-dubbo-snapshot-${{ github.sha }} + ${{ runner.os }}-dubbo-snapshot- + - name: "Download test list" + uses: actions/download-artifact@v2 + with: + name: test-list + path: test/jobs/ + - name: "Set up JDK 8" + uses: actions/setup-java@v1 + with: + java-version: 8 + - name: "Init Candidate Versions" + run: | + DUBBO_VERSION="${{needs.build-source.outputs.version}}" + CANDIDATE_VERSIONS="dubbo.version:$DUBBO_VERSION;compiler.version:$DUBBO_VERSION;$CANDIDATE_VERSIONS;dubbo.compiler.version:$DUBBO_VERSION" + echo "CANDIDATE_VERSIONS=$CANDIDATE_VERSIONS" >> $GITHUB_ENV + - name: "Build test image" + run: | + cd test && bash ./build-test-image.sh + - name: "Run tests" + run: cd test && bash ./run-tests.sh + - name: "Upload test result" + if: always() + uses: actions/upload-artifact@v2 + with: + name: test-result + path: test/jobs/*-result* + + integration-test-result: + needs: [integration-test-job] + if: always() + runs-on: ubuntu-20.04 + env: + JAVA_VER: 8 + steps: + - uses: actions/checkout@v2 + with: + repository: 'apache/dubbo-samples' + ref: master + - name: "Download test result" + uses: actions/download-artifact@v2 + with: + name: test-result + path: test/jobs/ + - name: "Merge test result" + run: ./test/scripts/merge-test-results.sh diff --git a/.github/workflows/build-and-test-scheduled-3.2.yml b/.github/workflows/build-and-test-scheduled-3.2.yml new file mode 100644 index 0000000000..ddeeec63ee --- /dev/null +++ b/.github/workflows/build-and-test-scheduled-3.2.yml @@ -0,0 +1,344 @@ +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 + CANDIDATE_VERSIONS: ' + spring.version:4.3.30.RELEASE; + spring-boot.version:1.5.22.RELEASE; + spring-boot.version:2.4.1; + ' + +jobs: + license: + runs-on: ubuntu-20.04 + steps: + - uses: actions/checkout@v2 + with: + ref: 3.2 + - name: Check License + uses: apache/skywalking-eyes@main + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + build-source: + runs-on: ubuntu-20.04 + outputs: + version: ${{ steps.dubbo-version.outputs.version }} + steps: + - uses: actions/checkout@v2 + with: + ref: 3.2 + path: dubbo + - uses: actions/setup-java@v1 + with: + java-version: 8 + - uses: actions/cache@v2 + name: "Cache local Maven repository" + with: + path: ~/.m2/repository + key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}-${{ github.run_id }} + restore-keys: | + ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} + ${{ runner.os }}-maven- + - name: "Dubbo cache" + uses: actions/cache@v2 + with: + path: ~/.m2/repository/org/apache/dubbo + key: ${{ runner.os }}-dubbo-snapshot-${{ github.sha }}-${{ github.run_id }} + - name: "Build Dubbo with Maven" + run: | + cd ./dubbo + ./mvnw --batch-mode --no-snapshot-updates -e --no-transfer-progress --fail-fast clean source:jar install -Pjacoco,rat,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 rat file if failure" + if: failure() + run: 7z a ${{ github.workspace }}/rat.zip *rat.txt -r + - name: "Upload rat file if failure" + if: failure() + uses: actions/upload-artifact@v2 + with: + name: "rat-file" + path: ${{ github.workspace }}/rat.zip + - name: "Pack checkstyle file if failure" + if: failure() + run: 7z a ${{ github.workspace }}/checkstyle.zip *checkstyle* -r + - name: "Upload checkstyle file if failure" + if: failure() + uses: actions/upload-artifact@v2 + with: + name: "checkstyle-file" + path: ${{ github.workspace }}/checkstyle.zip + - name: "Calculate Dubbo Version" + id: dubbo-version + run: | + REVISION=`awk '/<revision>[^<]+<\/revision>/{gsub(/<revision>|<\/revision>/,"",$1);print $1;exit;}' ./dubbo/pom.xml` + echo "::set-output name=version::$REVISION" + echo "dubbo version: $REVISION" + + unit-test-prepare: + name: " Preparation for Unit Test On ${{ matrix.os }}" + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: [ ubuntu-20.04, windows-2019 ] + env: + ZOOKEEPER_VERSION: 3.6.3 + steps: + - uses: actions/cache@v2 + 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 + + unit-test: + needs: [build-source, unit-test-prepare] + name: "Unit Test On ${{ matrix.os }} (JDK: ${{ matrix.jdk }})" + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: [ ubuntu-20.04, windows-2019 ] + jdk: [ 8, 11, 17, 19 ] + env: + DISABLE_FILE_SYSTEM_TEST: true + steps: + - uses: actions/checkout@v2 + with: + ref: 3.2 + - name: "Set up JDK ${{ matrix.jdk }}" + uses: actions/setup-java@v1 + with: + java-version: ${{ matrix.jdk }} + - uses: actions/cache@v2 + name: "Cache local Maven repository" + with: + path: ~/.m2/repository + key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}-${{ github.run_id }} + restore-keys: | + ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} + ${{ runner.os }}-maven- + - name: "Test with Maven with Integration Tests" + timeout-minutes: 70 + if: ${{ startsWith( matrix.os, 'ubuntu') }} + run: ./mvnw --batch-mode --no-snapshot-updates -e --no-transfer-progress --fail-fast clean test verify -Pjacoco -Dmaven.wagon.httpconnectionManager.ttlSeconds=120 -Dmaven.wagon.http.retryHandler.count=5 -DskipTests=false -DskipIntegrationTests=false -Dcheckstyle.skip=false -Dcheckstyle_unix.skip=false -Drat.skip=false -Dmaven.javadoc.skip=true -DembeddedZookeeperPath=${{ github.workspace }}/.tmp/zookeeper + - name: "Test with Maven without Integration Tests" + timeout-minutes: 90 + if: ${{ startsWith( matrix.os, 'windows') }} + run: ./mvnw --batch-mode --no-snapshot-updates -e --no-transfer-progress --fail-fast clean test verify -Pjacoco -D"http.keepAlive=false" -D"maven.wagon.http.pool=false" -D"maven.wagon.httpconnectionManager.ttlSeconds=120" -D"maven.wagon.http.retryHandler.count=5" -DskipTests=false -DskipIntegrationTests=true -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 coverage to Codecov" + uses: codecov/codecov-action@v1 + + unit-test-fastjson2: + needs: [build-source, unit-test-prepare] + name: "Unit Test On ${{ matrix.os }} (JDK: ${{ matrix.jdk }}, Serialization: fastjson2)" + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: [ ubuntu-20.04, windows-2019 ] + jdk: [ 8, 11, 17, 19 ] + env: + DISABLE_FILE_SYSTEM_TEST: true + DUBBO_DEFAULT_SERIALIZATION: fastjson2 + MAVEN_SUREFIRE_ADD_OPENS: true + steps: + - uses: actions/checkout@v2 + with: + ref: 3.2 + - name: "Set up JDK ${{ matrix.jdk }}" + uses: actions/setup-java@v1 + with: + java-version: ${{ matrix.jdk }} + - uses: actions/cache@v2 + name: "Cache local Maven repository" + with: + path: ~/.m2/repository + key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}-${{ github.run_id }} + restore-keys: | + ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} + ${{ runner.os }}-maven- + - name: "Test with Maven with Integration Tests" + timeout-minutes: 70 + if: ${{ startsWith( matrix.os, 'ubuntu') }} + run: ./mvnw --batch-mode --no-snapshot-updates -e --no-transfer-progress --fail-fast clean test verify -Pjacoco -Dmaven.wagon.httpconnectionManager.ttlSeconds=120 -Dmaven.wagon.http.retryHandler.count=5 -DskipTests=false -DskipIntegrationTests=false -Dcheckstyle.skip=false -Dcheckstyle_unix.skip=false -Drat.skip=false -Dmaven.javadoc.skip=true -DembeddedZookeeperPath=${{ github.workspace }}/.tmp/zookeeper + - name: "Test with Maven without Integration Tests" + timeout-minutes: 90 + if: ${{ startsWith( matrix.os, 'windows') }} + run: ./mvnw --batch-mode --no-snapshot-updates -e --no-transfer-progress --fail-fast clean test verify -Pjacoco -D"http.keepAlive=false" -D"maven.wagon.http.pool=false" -D"maven.wagon.httpconnectionManager.ttlSeconds=120" -D"maven.wagon.http.retryHandler.count=5" -DskipTests=false -DskipIntegrationTests=true -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 coverage to Codecov" + uses: codecov/codecov-action@v1 + + integration-test-prepare: + runs-on: ubuntu-20.04 + env: + JOB_COUNT: 3 + steps: + - uses: actions/checkout@v2 + with: + repository: 'apache/dubbo-samples' + ref: master + - name: "Prepare test list" + run: | + bash ./test/scripts/prepare-test.sh + - name: "Upload test list" + uses: actions/upload-artifact@v2 + with: + name: test-list + path: test/jobs + + integration-test-job: + needs: [build-source, integration-test-prepare] + name: "Integration Test on ubuntu-20.04 (JobId: ${{matrix.job_id}})" + runs-on: ubuntu-20.04 + timeout-minutes: 30 + env: + JAVA_VER: 8 + TEST_CASE_FILE: jobs/testjob_${{matrix.job_id}}.txt + strategy: + fail-fast: false + matrix: + job_id: [1, 2, 3] + steps: + - uses: actions/checkout@v2 + with: + repository: 'apache/dubbo-samples' + ref: master + - name: "Cache local Maven repository" + uses: actions/cache@v2 + with: + path: ~/.m2/repository + key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}-${{ github.run_id }} + restore-keys: | + ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} + ${{ runner.os }}-maven- + - name: "Restore Dubbo cache" + uses: actions/cache@v2 + with: + path: ~/.m2/repository/org/apache/dubbo + key: ${{ runner.os }}-dubbo-snapshot-${{ github.sha }}-${{ github.run_id }} + restore-keys: | + ${{ runner.os }}-dubbo-snapshot-${{ github.sha }} + ${{ runner.os }}-dubbo-snapshot- + - name: "Download test list" + uses: actions/download-artifact@v2 + with: + name: test-list + path: test/jobs/ + - name: "Set up JDK 8" + uses: actions/setup-java@v1 + with: + java-version: 8 + - name: "Init Candidate Versions" + run: | + DUBBO_VERSION="${{needs.build-source.outputs.version}}" + CANDIDATE_VERSIONS="dubbo.version:$DUBBO_VERSION;compiler.version:$DUBBO_VERSION;$CANDIDATE_VERSIONS;dubbo.compiler.version:$DUBBO_VERSION" + echo "CANDIDATE_VERSIONS=$CANDIDATE_VERSIONS" >> $GITHUB_ENV + - name: "Build test image" + run: | + cd test && bash ./build-test-image.sh + - name: "Run tests" + run: cd test && bash ./run-tests.sh + - name: "Upload test result" + if: always() + uses: actions/upload-artifact@v2 + with: + name: test-result + path: test/jobs/*-result* + + integration-test-result: + needs: [integration-test-job] + if: always() + runs-on: ubuntu-20.04 + env: + JAVA_VER: 8 + steps: + - uses: actions/checkout@v2 + with: + repository: 'apache/dubbo-samples' + ref: master + - name: "Download test result" + uses: actions/download-artifact@v2 + with: + name: test-result + path: test/jobs/ + - name: "Merge test result" + run: ./test/scripts/merge-test-results.sh + + error-code-inspecting: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + with: + path: "./dubbo" + + - uses: actions/checkout@v2 + with: + repository: 'apache/dubbo-test-tools' + ref: main + path: "./dubbo-test-tools" + + - name: "Set up JDK 17" + uses: actions/setup-java@v1 + with: + java-version: 17 + + - name: "Compile Dubbo (Linux)" + run: | + cd ${{ github.workspace }}/dubbo + ./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": false + 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 -Dmaven.test.skip=true -Dmaven.test.skip.exec=true -Ddubbo.eci.path=${{ github.workspace }}/dubbo + + - name: "Upload error code inspection result" + uses: actions/upload-artifact@v2 + with: + name: "error-inspection-result" + path: ${{ github.workspace }}/dubbo-test-tools/dubbo-error-code-inspector/error-inspection-result.txt
