From cf410d346208d1af22ce8a73b2d16a85725fc9fa Mon Sep 17 00:00:00 2001 From: Albumen Kevin Date: Thu, 14 Dec 2023 20:57:56 +0800 Subject: [PATCH] Move integration test cases into apache/dubbo-integration-cases (#13506) * Move integration test cases into apache/dubbo-integration-cases * Update workflow * Update workflow --- .github/workflows/build-and-test-pr.yml | 132 ++++- .../build-and-test-scheduled-3.1.yml | 156 +++++- .../build-and-test-scheduled-3.2.yml | 132 ++++- .../build-and-test-scheduled-3.3.yml | 502 ++++++++++++++++++ .github/workflows/release-test.yml | 125 ++++- 5 files changed, 977 insertions(+), 70 deletions(-) create mode 100644 .github/workflows/build-and-test-scheduled-3.3.yml diff --git a/.github/workflows/build-and-test-pr.yml b/.github/workflows/build-and-test-pr.yml index 2a0238433f..9ba13420b8 100644 --- a/.github/workflows/build-and-test-pr.yml +++ b/.github/workflows/build-and-test-pr.yml @@ -211,7 +211,7 @@ jobs: name: coverage-result path: "**/target/site/**/jacoco.xml" - integration-test-prepare: + samples-test-prepare: runs-on: ubuntu-latest env: JOB_COUNT: 3 @@ -223,12 +223,114 @@ jobs: - name: "Prepare test list" run: | bash ./test/scripts/prepare-test.sh + - name: "Upload test list" + uses: actions/upload-artifact@v3 + with: + name: samples-test-list + path: test/jobs + samples-test-job: + needs: [build-source, samples-test-prepare] + name: "Samples Test on ubuntu-latest (JobId: ${{matrix.job_id}})" + runs-on: ubuntu-latest + timeout-minutes: 90 + 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@v3 + with: + repository: 'apache/dubbo-samples' + ref: master + - name: "Cache local Maven repository" + uses: actions/cache@v3 + 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@v3 + 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@v3 + with: + name: samples-test-list + path: test/jobs/ + - name: "Set up JDK 8" + uses: actions/setup-java@v3 + with: + distribution: 'zulu' + 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: "merge jacoco resule" + run: | + cd test/dubbo-test-jacoco-merger && mvn clean compile exec:java -Dexec.mainClass="org.apache.dubbo.test.JacocoMerge" -Dexec.args="${{github.workspace}}" + - name: "Upload jacoco" + uses: actions/upload-artifact@v3 + with: + name: samples-jacoco-result + path: target/jacoco*.exec + - name: "Upload test result" + if: always() + uses: actions/upload-artifact@v3 + with: + name: samples-test-result + path: test/jobs/*-result* + samples-test-result: + needs: [samples-test-job] + if: always() + runs-on: ubuntu-latest + env: + JAVA_VER: 8 + steps: + - uses: actions/checkout@v3 + with: + repository: 'apache/dubbo-samples' + ref: master + - name: "Download test result" + uses: actions/download-artifact@v3 + with: + name: samples-test-result + path: test/jobs/ + - name: "Merge test result" + run: ./test/scripts/merge-test-results.sh + + integration-test-prepare: + runs-on: ubuntu-latest + env: + JOB_COUNT: 3 + steps: + - uses: actions/checkout@v3 + with: + repository: 'apache/dubbo-integration-cases' + ref: main + - name: "Prepare test list" + run: | + bash ./test/scripts/prepare-test.sh - name: "Upload test list" uses: actions/upload-artifact@v3 with: name: test-list path: test/jobs - integration-test-job: needs: [build-source, integration-test-prepare] name: "Integration Test on ubuntu-latest (JobId: ${{matrix.job_id}})" @@ -244,8 +346,8 @@ jobs: steps: - uses: actions/checkout@v3 with: - repository: 'apache/dubbo-samples' - ref: master + repository: 'apache/dubbo-integration-cases' + ref: main - name: "Cache local Maven repository" uses: actions/cache@v3 with: @@ -296,7 +398,6 @@ jobs: with: name: test-result path: test/jobs/*-result* - integration-test-result: needs: [integration-test-job] if: always() @@ -306,8 +407,8 @@ jobs: steps: - uses: actions/checkout@v3 with: - repository: 'apache/dubbo-samples' - ref: master + repository: 'apache/dubbo-integration-cases' + ref: main - name: "Download test result" uses: actions/download-artifact@v3 with: @@ -318,7 +419,7 @@ jobs: jacoco-result-merge: runs-on: ubuntu-latest - needs: [integration-test-result, unit-test] + needs: [integration-test-result, samples-test-result, unit-test] steps: - uses: actions/checkout@v3 with: @@ -327,6 +428,10 @@ jobs: with: repository: 'apache/dubbo-samples' path: "./dubbo-samples" + - uses: actions/checkout@v3 + with: + repository: 'apache/dubbo-integration-cases' + path: "./dubbo-integration-cases" - name: "Set up JDK 21" uses: actions/setup-java@v3 with: @@ -344,12 +449,21 @@ jobs: - name: "Restore jacoco exec" uses: actions/download-artifact@v3 with: - name: jacoco-result + name: samples-jacoco-result path: dubbo-samples/target/ + - name: "Restore integration jacoco exec" + uses: actions/download-artifact@v3 + with: + name: jacoco-result + path: dubbo-integration-cases/target/ - name: "Merge jacoco result" run: | cd ${{ github.workspace }}/dubbo-samples/test/dubbo-test-jacoco-merger mvn clean compile exec:java -Dexec.mainClass="org.apache.dubbo.test.JacocoReport" -Dexec.args="${{github.workspace}}/dubbo-samples ${{github.workspace}}/dubbo" + - name: "Merge samples jacoco result" + run: | + cd ${{ github.workspace }}/dubbo-integration-cases/test/dubbo-test-jacoco-merger + mvn clean compile exec:java -Dexec.mainClass="org.apache.dubbo.test.JacocoReport" -Dexec.args="${{github.workspace}}/dubbo-integration-cases ${{github.workspace}}/dubbo" - name: "Restore coverage result" uses: actions/download-artifact@v3 with: diff --git a/.github/workflows/build-and-test-scheduled-3.1.yml b/.github/workflows/build-and-test-scheduled-3.1.yml index 085309806a..aeacdc9cdf 100644 --- a/.github/workflows/build-and-test-scheduled-3.1.yml +++ b/.github/workflows/build-and-test-scheduled-3.1.yml @@ -134,7 +134,7 @@ jobs: fail-fast: false matrix: os: [ ubuntu-latest, windows-latest ] - jdk: [ 8, 11, 17, 19 ] + jdk: [ 8, 11, 17, 21 ] env: DISABLE_FILE_SYSTEM_TEST: true steps: @@ -178,18 +178,17 @@ jobs: fail-fast: false matrix: os: [ ubuntu-latest, windows-latest ] - jdk: [ 8, 11, 17, 19 ] + jdk: [ 8, 11, 17, 21 ] env: DISABLE_FILE_SYSTEM_TEST: true DUBBO_DEFAULT_SERIALIZATION: fastjson2 MAVEN_SUREFIRE_ADD_OPENS: true steps: - uses: actions/checkout@v3 - with: - ref: "3.1" - name: "Set up JDK ${{ matrix.jdk }}" - uses: actions/setup-java@v1 + uses: actions/setup-java@v3 with: + distribution: 'zulu' java-version: ${{ matrix.jdk }} - uses: actions/cache@v3 name: "Cache local Maven repository" @@ -207,16 +206,24 @@ jobs: key: zookeeper-${{ runner.os }}-${{ env.ZOOKEEPER_VERSION }} restore-keys: | zookeeper-${{ runner.os }}- + - name: "Test with Maven with Integration Tests on JDK 8" + timeout-minutes: 70 + if: ${{ startsWith( matrix.os, 'ubuntu') && matrix.jdk == '8' }} + run: ./mvnw --batch-mode --no-snapshot-updates -e --no-transfer-progress --fail-fast clean test verify -Pjacoco,'!jdk15ge' -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 on JDK 8" + timeout-minutes: 90 + if: ${{ startsWith( matrix.os, 'windows') && matrix.jdk == '8' }} + run: ./mvnw --batch-mode --no-snapshot-updates -e --no-transfer-progress --fail-fast clean test verify -P"jacoco,'!jdk15ge'" -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: "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 + if: ${{ startsWith( matrix.os, 'ubuntu') && matrix.jdk != '8' }} + run: ./mvnw --batch-mode --no-snapshot-updates -e --no-transfer-progress --fail-fast clean test verify -Pjacoco,jdk15ge-simple,'!jdk15ge' -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" + if: ${{ startsWith( matrix.os, 'windows') && matrix.jdk != '8' }} + run: ./mvnw --batch-mode --no-snapshot-updates -e --no-transfer-progress --fail-fast clean test verify -P"jacoco,jdk15ge-simple,'!jdk15ge'" -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" - integration-test-prepare: + samples-test-prepare: runs-on: ubuntu-latest env: JOB_COUNT: 5 @@ -231,12 +238,11 @@ jobs: - name: "Upload test list" uses: actions/upload-artifact@v3 with: - name: test-list + name: samples-test-list path: test/jobs - - integration-test-job: - needs: [build-source, integration-test-prepare] - name: "Integration Test on ubuntu-latest (JobId: ${{matrix.job_id}})" + samples-test-job: + needs: [build-source, samples-test-prepare] + name: "Samples Test on ubuntu-latest (JobId: ${{matrix.job_id}} JavaVer: ${{matrix.jdk}})" runs-on: ubuntu-latest timeout-minutes: 90 env: @@ -271,7 +277,7 @@ jobs: - name: "Download test list" uses: actions/download-artifact@v3 with: - name: test-list + name: samples-test-list path: test/jobs/ - name: "Set up JDK ${{matrix.jdk}}" uses: actions/setup-java@v1 @@ -291,11 +297,10 @@ jobs: if: always() uses: actions/upload-artifact@v3 with: - name: test-result-${{matrix.jdk}} + name: samples-test-result-${{matrix.jdk}} path: test/jobs/*-result* - - integration-test-result: - needs: [integration-test-job] + samples-test-result: + needs: [samples-test-job] if: always() runs-on: ubuntu-latest env: @@ -311,7 +316,105 @@ jobs: - name: "Download test result" uses: actions/download-artifact@v3 with: - name: test-result-${{matrix.jdk}} + name: samples-test-result-${{matrix.jdk}} + path: test/jobs/ + - name: "Merge test result" + run: ./test/scripts/merge-test-results.sh + + integration-test-prepare: + runs-on: ubuntu-latest + env: + JOB_COUNT: 5 + steps: + - uses: actions/checkout@v3 + with: + repository: 'apache/dubbo-integration-cases' + ref: main + - name: "Prepare test list" + run: | + bash ./test/scripts/prepare-test.sh + - name: "Upload test list" + uses: actions/upload-artifact@v3 + with: + name: integration-test-list + path: test/jobs + integration-test-job: + needs: [build-source, integration-test-prepare] + name: "Integration Test on ubuntu-latest (JobId: ${{matrix.job_id}} JavaVer: ${{matrix.jdk}})" + runs-on: ubuntu-latest + timeout-minutes: 90 + env: + JAVA_VER: ${{matrix.jdk}} + TEST_CASE_FILE: jobs/testjob_${{matrix.job_id}}.txt + strategy: + fail-fast: false + matrix: + jdk: [ 8, 11 ] + job_id: [1, 2, 3, 4, 5] + steps: + - uses: actions/checkout@v3 + with: + repository: 'apache/dubbo-integration-cases' + ref: main + - name: "Cache local Maven repository" + uses: actions/cache@v3 + 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@v3 + 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@v3 + with: + name: integration-test-list + path: test/jobs/ + - name: "Set up JDK ${{matrix.jdk}}" + uses: actions/setup-java@v1 + with: + java-version: ${{matrix.jdk}} + - 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@v3 + with: + name: integration-test-result-${{matrix.jdk}} + path: test/jobs/*-result* + integration-test-result: + needs: [integration-test-job] + if: always() + runs-on: ubuntu-latest + env: + JAVA_VER: ${{matrix.jdk}} + strategy: + matrix: + jdk: [ 8, 11 ] + steps: + - uses: actions/checkout@v3 + with: + repository: 'apache/dubbo-integration-cases' + ref: main + - name: "Download test result" + uses: actions/download-artifact@v3 + with: + name: integration-test-result-${{matrix.jdk}} path: test/jobs/ - name: "Merge test result" run: ./test/scripts/merge-test-results.sh @@ -330,10 +433,11 @@ jobs: ref: main path: "./dubbo-test-tools" - - name: "Set up JDK 17" - uses: actions/setup-java@v1 + - name: "Set up JDK 21" + uses: actions/setup-java@v3 with: - java-version: 17 + distribution: 'zulu' + java-version: 21 - name: "Compile Dubbo (Linux)" run: | @@ -392,7 +496,7 @@ jobs: run: | cd ${{ github.workspace }}/dubbo/dubbo-demo/dubbo-demo-native/dubbo-demo-native-provider ${{ github.workspace }}/dubbo/mvnw --batch-mode --no-snapshot-updates -e --no-transfer-progress --fail-fast -T 2C clean package -P native -Dmaven.test.skip=true native:compile - nohup ./target/demo-native-provider & + nohup ./target/dubbo-demo-native-provider & cd ${{ github.workspace }}/dubbo/dubbo-demo/dubbo-demo-native/dubbo-demo-native-consumer ${{ github.workspace }}/dubbo/mvnw --batch-mode --no-snapshot-updates -e --no-transfer-progress --fail-fast -T 2C clean package -P native -Dmaven.test.skip=true native:compile - ./target/demo-native-consumer + ./target/dubbo-demo-native-consumer diff --git a/.github/workflows/build-and-test-scheduled-3.2.yml b/.github/workflows/build-and-test-scheduled-3.2.yml index 81fa468bc5..a7a8b21663 100644 --- a/.github/workflows/build-and-test-scheduled-3.2.yml +++ b/.github/workflows/build-and-test-scheduled-3.2.yml @@ -142,9 +142,8 @@ jobs: with: ref: "3.2" - name: "Set up JDK ${{ matrix.jdk }}" - uses: actions/setup-java@v3 + uses: actions/setup-java@v1 with: - distribution: 'zulu' java-version: ${{ matrix.jdk }} - uses: actions/cache@v3 name: "Cache local Maven repository" @@ -186,8 +185,6 @@ jobs: MAVEN_SUREFIRE_ADD_OPENS: true steps: - uses: actions/checkout@v3 - with: - ref: "3.2" - name: "Set up JDK ${{ matrix.jdk }}" uses: actions/setup-java@v3 with: @@ -226,7 +223,7 @@ jobs: if: ${{ startsWith( matrix.os, 'windows') && matrix.jdk != '8' }} run: ./mvnw --batch-mode --no-snapshot-updates -e --no-transfer-progress --fail-fast clean test verify -P"jacoco,jdk15ge-simple,'!jdk15ge'" -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" - integration-test-prepare: + samples-test-prepare: runs-on: ubuntu-latest env: JOB_COUNT: 5 @@ -241,12 +238,11 @@ jobs: - name: "Upload test list" uses: actions/upload-artifact@v3 with: - name: test-list + name: samples-test-list path: test/jobs - - integration-test-job: - needs: [build-source, integration-test-prepare] - name: "Integration Test on ubuntu-latest (JobId: ${{matrix.job_id}})" + samples-test-job: + needs: [build-source, samples-test-prepare] + name: "Samples Test on ubuntu-latest (JobId: ${{matrix.job_id}} JavaVer: ${{matrix.jdk}})" runs-on: ubuntu-latest timeout-minutes: 90 env: @@ -281,12 +277,11 @@ jobs: - name: "Download test list" uses: actions/download-artifact@v3 with: - name: test-list + name: samples-test-list path: test/jobs/ - name: "Set up JDK ${{matrix.jdk}}" - uses: actions/setup-java@v3 + uses: actions/setup-java@v1 with: - distribution: 'zulu' java-version: ${{matrix.jdk}} - name: "Init Candidate Versions" run: | @@ -302,11 +297,10 @@ jobs: if: always() uses: actions/upload-artifact@v3 with: - name: test-result-${{matrix.jdk}} + name: samples-test-result-${{matrix.jdk}} path: test/jobs/*-result* - - integration-test-result: - needs: [integration-test-job] + samples-test-result: + needs: [samples-test-job] if: always() runs-on: ubuntu-latest env: @@ -322,7 +316,105 @@ jobs: - name: "Download test result" uses: actions/download-artifact@v3 with: - name: test-result-${{matrix.jdk}} + name: samples-test-result-${{matrix.jdk}} + path: test/jobs/ + - name: "Merge test result" + run: ./test/scripts/merge-test-results.sh + + integration-test-prepare: + runs-on: ubuntu-latest + env: + JOB_COUNT: 5 + steps: + - uses: actions/checkout@v3 + with: + repository: 'apache/dubbo-integration-cases' + ref: main + - name: "Prepare test list" + run: | + bash ./test/scripts/prepare-test.sh + - name: "Upload test list" + uses: actions/upload-artifact@v3 + with: + name: integration-test-list + path: test/jobs + integration-test-job: + needs: [build-source, integration-test-prepare] + name: "Integration Test on ubuntu-latest (JobId: ${{matrix.job_id}} JavaVer: ${{matrix.jdk}})" + runs-on: ubuntu-latest + timeout-minutes: 90 + env: + JAVA_VER: ${{matrix.jdk}} + TEST_CASE_FILE: jobs/testjob_${{matrix.job_id}}.txt + strategy: + fail-fast: false + matrix: + jdk: [ 8, 11, 17, 21 ] + job_id: [1, 2, 3, 4, 5] + steps: + - uses: actions/checkout@v3 + with: + repository: 'apache/dubbo-integration-cases' + ref: main + - name: "Cache local Maven repository" + uses: actions/cache@v3 + 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@v3 + 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@v3 + with: + name: integration-test-list + path: test/jobs/ + - name: "Set up JDK ${{matrix.jdk}}" + uses: actions/setup-java@v1 + with: + java-version: ${{matrix.jdk}} + - 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@v3 + with: + name: integration-test-result-${{matrix.jdk}} + path: test/jobs/*-result* + integration-test-result: + needs: [integration-test-job] + if: always() + runs-on: ubuntu-latest + env: + JAVA_VER: ${{matrix.jdk}} + strategy: + matrix: + jdk: [ 8, 11, 17, 21 ] + steps: + - uses: actions/checkout@v3 + with: + repository: 'apache/dubbo-integration-cases' + ref: main + - name: "Download test result" + uses: actions/download-artifact@v3 + with: + name: integration-test-result-${{matrix.jdk}} path: test/jobs/ - name: "Merge test result" run: ./test/scripts/merge-test-results.sh @@ -341,11 +433,11 @@ jobs: ref: main path: "./dubbo-test-tools" - - name: "Set up JDK 17" + - name: "Set up JDK 21" uses: actions/setup-java@v3 with: distribution: 'zulu' - java-version: 17 + java-version: 21 - name: "Compile Dubbo (Linux)" run: | diff --git a/.github/workflows/build-and-test-scheduled-3.3.yml b/.github/workflows/build-and-test-scheduled-3.3.yml new file mode 100644 index 0000000000..8c41bf3a56 --- /dev/null +++ b/.github/workflows/build-and-test-scheduled-3.3.yml @@ -0,0 +1,502 @@ +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 + ALL_REMOTE_VERSION: true + CANDIDATE_VERSIONS: ' + spring.version:5.3.24; + spring-boot.version:2.7.6; + ' + +jobs: + license: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + with: + ref: "3.3" + - name: Check License + uses: apache/skywalking-eyes@main + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + build-source: + runs-on: ubuntu-latest + outputs: + version: ${{ steps.dubbo-version.outputs.version }} + steps: + - uses: actions/checkout@v3 + with: + ref: "3.3" + path: dubbo + - uses: actions/setup-java@v3 + with: + distribution: 'zulu' + java-version: 8 + - uses: actions/cache@v3 + 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@v3 + 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,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 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@v3 + with: + name: "checkstyle-file" + path: ${{ github.workspace }}/checkstyle.zip + - name: "Calculate Dubbo Version" + id: dubbo-version + run: | + REVISION=`awk '/[^<]+<\/revision>/{gsub(/|<\/revision>/,"",$1);print $1;exit;}' ./dubbo/pom.xml` + echo "version=$REVISION" >> $GITHUB_OUTPUT + 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-latest, windows-latest ] + env: + ZOOKEEPER_VERSION: 3.6.3 + steps: + - uses: actions/cache@v3 + 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-latest, windows-latest ] + jdk: [ 8, 11, 17, 21 ] + env: + DISABLE_FILE_SYSTEM_TEST: true + steps: + - uses: actions/checkout@v3 + with: + ref: "3.3" + - name: "Set up JDK ${{ matrix.jdk }}" + uses: actions/setup-java@v1 + with: + java-version: ${{ matrix.jdk }} + - uses: actions/cache@v3 + 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- + - uses: actions/cache@v3 + 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 }}- + - 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" + + 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-latest, windows-latest ] + jdk: [ 8, 11, 17, 21 ] + env: + DISABLE_FILE_SYSTEM_TEST: true + DUBBO_DEFAULT_SERIALIZATION: fastjson2 + MAVEN_SUREFIRE_ADD_OPENS: true + steps: + - uses: actions/checkout@v3 + - name: "Set up JDK ${{ matrix.jdk }}" + uses: actions/setup-java@v3 + with: + distribution: 'zulu' + java-version: ${{ matrix.jdk }} + - uses: actions/cache@v3 + 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- + - uses: actions/cache@v3 + 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 }}- + - name: "Test with Maven with Integration Tests on JDK 8" + timeout-minutes: 70 + if: ${{ startsWith( matrix.os, 'ubuntu') && matrix.jdk == '8' }} + run: ./mvnw --batch-mode --no-snapshot-updates -e --no-transfer-progress --fail-fast clean test verify -Pjacoco,'!jdk15ge' -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 on JDK 8" + timeout-minutes: 90 + if: ${{ startsWith( matrix.os, 'windows') && matrix.jdk == '8' }} + run: ./mvnw --batch-mode --no-snapshot-updates -e --no-transfer-progress --fail-fast clean test verify -P"jacoco,'!jdk15ge'" -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: "Test with Maven with Integration Tests" + timeout-minutes: 70 + if: ${{ startsWith( matrix.os, 'ubuntu') && matrix.jdk != '8' }} + run: ./mvnw --batch-mode --no-snapshot-updates -e --no-transfer-progress --fail-fast clean test verify -Pjacoco,jdk15ge-simple,'!jdk15ge' -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') && matrix.jdk != '8' }} + run: ./mvnw --batch-mode --no-snapshot-updates -e --no-transfer-progress --fail-fast clean test verify -P"jacoco,jdk15ge-simple,'!jdk15ge'" -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" + + samples-test-prepare: + runs-on: ubuntu-latest + env: + JOB_COUNT: 5 + steps: + - uses: actions/checkout@v3 + 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@v3 + with: + name: samples-test-list + path: test/jobs + samples-test-job: + needs: [build-source, samples-test-prepare] + name: "Samples Test on ubuntu-latest (JobId: ${{matrix.job_id}} JavaVer: ${{matrix.jdk}})" + runs-on: ubuntu-latest + timeout-minutes: 90 + env: + JAVA_VER: ${{matrix.jdk}} + TEST_CASE_FILE: jobs/testjob_${{matrix.job_id}}.txt + strategy: + fail-fast: false + matrix: + jdk: [ 8, 11, 17, 21 ] + job_id: [1, 2, 3, 4, 5] + steps: + - uses: actions/checkout@v3 + with: + repository: 'apache/dubbo-samples' + ref: master + - name: "Cache local Maven repository" + uses: actions/cache@v3 + 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@v3 + 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@v3 + with: + name: samples-test-list + path: test/jobs/ + - name: "Set up JDK ${{matrix.jdk}}" + uses: actions/setup-java@v1 + with: + java-version: ${{matrix.jdk}} + - 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@v3 + with: + name: samples-test-result-${{matrix.jdk}} + path: test/jobs/*-result* + samples-test-result: + needs: [samples-test-job] + if: always() + runs-on: ubuntu-latest + env: + JAVA_VER: ${{matrix.jdk}} + strategy: + matrix: + jdk: [ 8, 11, 17, 21 ] + steps: + - uses: actions/checkout@v3 + with: + repository: 'apache/dubbo-samples' + ref: master + - name: "Download test result" + uses: actions/download-artifact@v3 + with: + name: samples-test-result-${{matrix.jdk}} + path: test/jobs/ + - name: "Merge test result" + run: ./test/scripts/merge-test-results.sh + + integration-test-prepare: + runs-on: ubuntu-latest + env: + JOB_COUNT: 5 + steps: + - uses: actions/checkout@v3 + with: + repository: 'apache/dubbo-integration-cases' + ref: main + - name: "Prepare test list" + run: | + bash ./test/scripts/prepare-test.sh + - name: "Upload test list" + uses: actions/upload-artifact@v3 + with: + name: integration-test-list + path: test/jobs + integration-test-job: + needs: [build-source, integration-test-prepare] + name: "Integration Test on ubuntu-latest (JobId: ${{matrix.job_id}} JavaVer: ${{matrix.jdk}})" + runs-on: ubuntu-latest + timeout-minutes: 90 + env: + JAVA_VER: ${{matrix.jdk}} + TEST_CASE_FILE: jobs/testjob_${{matrix.job_id}}.txt + strategy: + fail-fast: false + matrix: + jdk: [ 8, 11, 17, 21 ] + job_id: [1, 2, 3, 4, 5] + steps: + - uses: actions/checkout@v3 + with: + repository: 'apache/dubbo-integration-cases' + ref: main + - name: "Cache local Maven repository" + uses: actions/cache@v3 + 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@v3 + 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@v3 + with: + name: integration-test-list + path: test/jobs/ + - name: "Set up JDK ${{matrix.jdk}}" + uses: actions/setup-java@v1 + with: + java-version: ${{matrix.jdk}} + - 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@v3 + with: + name: integration-test-result-${{matrix.jdk}} + path: test/jobs/*-result* + integration-test-result: + needs: [integration-test-job] + if: always() + runs-on: ubuntu-latest + env: + JAVA_VER: ${{matrix.jdk}} + strategy: + matrix: + jdk: [ 8, 11, 17, 21 ] + steps: + - uses: actions/checkout@v3 + with: + repository: 'apache/dubbo-integration-cases' + ref: main + - name: "Download test result" + uses: actions/download-artifact@v3 + with: + name: integration-test-result-${{matrix.jdk}} + 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@v3 + with: + ref: "3.3" + path: "./dubbo" + + - uses: actions/checkout@v3 + with: + repository: 'apache/dubbo-test-tools' + ref: main + path: "./dubbo-test-tools" + + - name: "Set up JDK 21" + uses: actions/setup-java@v3 + with: + distribution: 'zulu' + java-version: 21 + + - 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: 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 + + - 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@v3 + with: + name: "error-inspection-result" + path: ${{ github.workspace }}/dubbo-test-tools/dubbo-error-code-inspector/error-inspection-result.txt + + native-image-inspecting: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + with: + ref: "3.3" + path: "./dubbo" + + - name: "Setup GraalVM environment" + uses: graalvm/setup-graalvm@v1 + with: + version: '22.3.0' + java-version: '17' + components: 'native-image' + github-token: ${{ secrets.GITHUB_TOKEN }} + native-image-job-reports: 'true' + + - name: "Setup Zookeeper environment" + run: | + wget https://dlcdn.apache.org/zookeeper/zookeeper-3.8.3/apache-zookeeper-3.8.3-bin.tar.gz + tar -zxvf apache-zookeeper-3.8.3-bin.tar.gz + mv apache-zookeeper-3.8.3-bin/conf/zoo_sample.cfg apache-zookeeper-3.8.3-bin/conf/zoo.cfg + apache-zookeeper-3.8.3-bin/bin/zkServer.sh start + + - name: "Check environment" + run: | + java --version + native-image --version + + - 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: "Compile and run Dubbo demo for native (Linux)" + run: | + cd ${{ github.workspace }}/dubbo/dubbo-demo/dubbo-demo-native/dubbo-demo-native-provider + ${{ github.workspace }}/dubbo/mvnw --batch-mode --no-snapshot-updates -e --no-transfer-progress --fail-fast -T 2C clean package -P native -Dmaven.test.skip=true native:compile + nohup ./target/dubbo-demo-native-provider & + cd ${{ github.workspace }}/dubbo/dubbo-demo/dubbo-demo-native/dubbo-demo-native-consumer + ${{ github.workspace }}/dubbo/mvnw --batch-mode --no-snapshot-updates -e --no-transfer-progress --fail-fast -T 2C clean package -P native -Dmaven.test.skip=true native:compile + ./target/dubbo-demo-native-consumer diff --git a/.github/workflows/release-test.yml b/.github/workflows/release-test.yml index 4f42dd95d6..a0250eec9c 100644 --- a/.github/workflows/release-test.yml +++ b/.github/workflows/release-test.yml @@ -220,7 +220,7 @@ jobs: if: ${{ startsWith( matrix.os, 'windows') && matrix.jdk != '8' }} run: ./mvnw --batch-mode --no-snapshot-updates -e --no-transfer-progress --fail-fast clean test verify -P"jacoco,jdk15ge-simple,'!jdk15ge'" -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" - integration-test-prepare: + samples-test-prepare: runs-on: ubuntu-latest env: JOB_COUNT: 5 @@ -235,12 +235,11 @@ jobs: - name: "Upload test list" uses: actions/upload-artifact@v3 with: - name: test-list + name: samples-test-list path: test/jobs - - integration-test-job: - needs: [build-source, integration-test-prepare] - name: "Integration Test on ubuntu-latest (JobId: ${{matrix.job_id}})" + samples-test-job: + needs: [build-source, samples-test-prepare] + name: "Samples Test on ubuntu-latest (JobId: ${{matrix.job_id}} JavaVer: ${{matrix.jdk}})" runs-on: ubuntu-latest timeout-minutes: 90 env: @@ -275,7 +274,7 @@ jobs: - name: "Download test list" uses: actions/download-artifact@v3 with: - name: test-list + name: samples-test-list path: test/jobs/ - name: "Set up JDK ${{matrix.jdk}}" uses: actions/setup-java@v1 @@ -295,11 +294,10 @@ jobs: if: always() uses: actions/upload-artifact@v3 with: - name: test-result-${{matrix.jdk}} + name: samples-test-result-${{matrix.jdk}} path: test/jobs/*-result* - - integration-test-result: - needs: [integration-test-job] + samples-test-result: + needs: [samples-test-job] if: always() runs-on: ubuntu-latest env: @@ -315,7 +313,105 @@ jobs: - name: "Download test result" uses: actions/download-artifact@v3 with: - name: test-result-${{matrix.jdk}} + name: samples-test-result-${{matrix.jdk}} + path: test/jobs/ + - name: "Merge test result" + run: ./test/scripts/merge-test-results.sh + + integration-test-prepare: + runs-on: ubuntu-latest + env: + JOB_COUNT: 5 + steps: + - uses: actions/checkout@v3 + with: + repository: 'apache/dubbo-integration-cases' + ref: main + - name: "Prepare test list" + run: | + bash ./test/scripts/prepare-test.sh + - name: "Upload test list" + uses: actions/upload-artifact@v3 + with: + name: integration-test-list + path: test/jobs + integration-test-job: + needs: [build-source, integration-test-prepare] + name: "Integration Test on ubuntu-latest (JobId: ${{matrix.job_id}} JavaVer: ${{matrix.jdk}})" + runs-on: ubuntu-latest + timeout-minutes: 90 + env: + JAVA_VER: ${{matrix.jdk}} + TEST_CASE_FILE: jobs/testjob_${{matrix.job_id}}.txt + strategy: + fail-fast: false + matrix: + jdk: [ 8, 11, 17, 21 ] + job_id: [1, 2, 3, 4, 5] + steps: + - uses: actions/checkout@v3 + with: + repository: 'apache/dubbo-integration-cases' + ref: main + - name: "Cache local Maven repository" + uses: actions/cache@v3 + 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@v3 + 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@v3 + with: + name: integration-test-list + path: test/jobs/ + - name: "Set up JDK ${{matrix.jdk}}" + uses: actions/setup-java@v1 + with: + java-version: ${{matrix.jdk}} + - 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@v3 + with: + name: integration-test-result-${{matrix.jdk}} + path: test/jobs/*-result* + integration-test-result: + needs: [integration-test-job] + if: always() + runs-on: ubuntu-latest + env: + JAVA_VER: ${{matrix.jdk}} + strategy: + matrix: + jdk: [ 8, 11, 17, 21 ] + steps: + - uses: actions/checkout@v3 + with: + repository: 'apache/dubbo-integration-cases' + ref: main + - name: "Download test result" + uses: actions/download-artifact@v3 + with: + name: integration-test-result-${{matrix.jdk}} path: test/jobs/ - name: "Merge test result" run: ./test/scripts/merge-test-results.sh @@ -333,10 +429,10 @@ jobs: ref: main path: "./dubbo-test-tools" - - name: "Set up JDK 17" + - name: "Set up JDK 21" uses: actions/setup-java@v3 with: - java-version: 17 + java-version: 21 distribution: 'zulu' - name: "Compile Dubbo (Linux)" @@ -363,7 +459,6 @@ jobs: steps: - uses: actions/checkout@v3 with: - ref: "3.2" path: "./dubbo" - name: "Setup GraalVM environment"