You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by ox...@apache.org on 2024/09/10 14:30:04 UTC
(dubbo) branch split-unit-test updated (e9b931f236 -> 9f6ab93148)
This is an automated email from the ASF dual-hosted git repository.
oxsean pushed a change to branch split-unit-test
in repository https://gitbox.apache.org/repos/asf/dubbo.git
omit e9b931f236 test
omit ca13cda511 Split unit test for all
omit 2c5c0d5654 Split unit test
add 01299904bb Close stream when channel was inactive (#14641)
add a25b21facd Support basic auth (#14644)
add 6b60aa54bf Fix native image ci configuration
add 883c795582 docs: update issue template (#14634)
add ac6704d532 Update BraveAutoConfiguration.java (#14631)
add 08c74b79d2 Close stream when channel was inactive (#14643)
add 1fb4dc8225 Merge branch 'refs/heads/apache-3.2' into apache-3.3
new c18bc06c95 Split unit test
new 05096d789d Split unit test for all
new 9f6ab93148 test
This update added new revisions after undoing existing revisions.
That is to say, some revisions that were in the old version of the
branch are not in the new version. This situation occurs
when a user --force pushes a change and generates a repository
containing something like this:
* -- * -- B -- O -- O -- O (e9b931f236)
\
N -- N -- N refs/heads/split-unit-test (9f6ab93148)
You should already have received notification emails for all of the O
revisions, and so the following emails describe only the N revisions
from the common base, B.
Any revisions marked "omit" are not gone; other references still
refer to them. Any revisions marked "discard" are gone forever.
The 3 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
Summary of changes:
.github/ISSUE_TEMPLATE/1-bug.yml | 1 +
.github/ISSUE_TEMPLATE/2-feature.yml | 1 +
.github/workflows/build-and-test-scheduled-3.3.yml | 14 +++-
.../dubbo/config/AbstractInterfaceConfig.java | 42 ++++++++++
.../apache/dubbo/auth/AccessKeyAuthenticator.java | 14 ++--
.../org/apache/dubbo/auth/BasicAuthenticator.java | 53 +++++++++++++
.../main/java/org/apache/dubbo/auth/Constants.java | 17 +++-
.../dubbo/auth/filter/ConsumerSignFilter.java | 16 ++--
.../dubbo/auth/filter/ProviderAuthFilter.java | 19 +++--
.../auth/filter/ProviderAuthHeaderFilter.java | 43 ++++++----
.../apache/dubbo/auth/spi/AccessKeyStorage.java | 3 +-
.../org/apache/dubbo/auth/spi/Authenticator.java | 3 +-
.../org.apache.dubbo.auth.spi.Authenticator | 3 +-
.../internal/org.apache.dubbo.rpc.HeaderFilter | 1 +
.../dubbo/auth/AccessKeyAuthenticatorTest.java | 29 +------
.../dubbo/auth/filter/ConsumerSignFilterTest.java | 9 ++-
.../dubbo/auth/filter/ProviderAuthFilterTest.java | 36 +++++----
.../registry/client/metadata/MetadataUtils.java | 23 ++++++
.../registry/integration/RegistryProtocol.java | 34 +++++++-
.../main/java/org/apache/dubbo/rpc/Constants.java | 5 +-
.../org/apache/dubbo/rpc/filter/ContextFilter.java | 74 +++++++++++++----
.../org/apache/dubbo/rpc/support/TrieTree.java | 92 ++++++++++++++++++++++
.../org/apache/dubbo/rpc/support/TrieTreeTest.java | 51 ++++++------
.../java/org/apache/dubbo/rpc/TriRpcStatus.java | 4 +
.../dubbo/rpc/protocol/tri/TripleHeaderEnum.java | 61 --------------
.../dubbo/rpc/protocol/tri/TripleProtocol.java | 3 -
.../rpc/protocol/tri/call/TripleClientCall.java | 8 ++
.../tri/h3/negotiation/NegotiateClientCall.java | 9 +++
.../tri/stream/AbstractTripleClientStream.java | 5 ++
.../rpc/protocol/tri/stream/ClientStream.java | 2 +
.../tri/transport/H2TransportListener.java | 2 +
.../TripleHttp2ClientResponseHandler.java | 1 +
.../tri/stream/MockClientStreamListener.java | 3 +
.../transport/AbstractH2TransportListenerTest.java | 3 +
.../brave/BraveAutoConfiguration.java | 1 +
35 files changed, 487 insertions(+), 198 deletions(-)
create mode 100644 dubbo-plugin/dubbo-auth/src/main/java/org/apache/dubbo/auth/BasicAuthenticator.java
copy dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/TokenHeaderFilter.java => dubbo-plugin/dubbo-auth/src/main/java/org/apache/dubbo/auth/filter/ProviderAuthHeaderFilter.java (52%)
create mode 100644 dubbo-plugin/dubbo-auth/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.HeaderFilter
create mode 100644 dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/support/TrieTree.java
copy dubbo-common/src/test/java/org/apache/dubbo/common/convert/StringToBooleanConverterTest.java => dubbo-rpc/dubbo-rpc-api/src/test/java/org/apache/dubbo/rpc/support/TrieTreeTest.java (52%)
(dubbo) 03/03: test
Posted by ox...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
oxsean pushed a commit to branch split-unit-test
in repository https://gitbox.apache.org/repos/asf/dubbo.git
commit 9f6ab9314876038600d7fea72d868fdc78464efa
Author: Sean Yang <ox...@gmail.com>
AuthorDate: Mon Sep 9 22:48:56 2024 +0800
test
---
.github/workflows/build-and-test-scheduled-3.3.yml | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/.github/workflows/build-and-test-scheduled-3.3.yml b/.github/workflows/build-and-test-scheduled-3.3.yml
index aca04d2402..eca9adca72 100644
--- a/.github/workflows/build-and-test-scheduled-3.3.yml
+++ b/.github/workflows/build-and-test-scheduled-3.3.yml
@@ -228,6 +228,14 @@ jobs:
run: |
set -o pipefail
modules=$(cat test/jobs/test_modules_${{ matrix.job_id }}.txt)
+ while true; do
+ pid=$(jps | grep dubbo | awk '{print $1}')
+ if [ ! -z "$pid" ]; then
+ echo "Dumping threads for process $pid"
+ jstack $pid
+ fi
+ sleep 300
+ done &
./mvnw ${{ env.MAVEN_ARGS }} clean test verify -Pjdk15ge-simple,'!jdk15ge','!demo',skip-spotless -pl "$modules" -DtrimStackTrace=false -Dmaven.test.skip=false -Drat.skip=false -Dflatten.skip=true -DembeddedZookeeperPath=${{ github.workspace }}/.tmp/zookeeper 2>&1 | tee >(grep -n -B 5 -A 200 "FAILURE! -- in" > test_errors.log)
- name: Print test error log
if: failure()
(dubbo) 01/03: Split unit test
Posted by ox...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
oxsean pushed a commit to branch split-unit-test
in repository https://gitbox.apache.org/repos/asf/dubbo.git
commit c18bc06c95faed83c2ed59a06656cbb14b0a49f9
Author: Sean Yang <ox...@gmail.com>
AuthorDate: Sat Sep 7 01:18:04 2024 +0800
Split unit test
---
.github/workflows/build-and-test-pr.yml | 480 +++++++++++----------
dubbo-common/src/test/resources/log4j2-test.xml | 1 +
.../dubbo/rpc/protocol/tri/stream/StreamUtils.java | 2 +-
dubbo-test/scripts/split-modules.sh | 42 ++
4 files changed, 285 insertions(+), 240 deletions(-)
diff --git a/.github/workflows/build-and-test-pr.yml b/.github/workflows/build-and-test-pr.yml
index 4b9e933bb4..1ebb815797 100644
--- a/.github/workflows/build-and-test-pr.yml
+++ b/.github/workflows/build-and-test-pr.yml
@@ -1,6 +1,6 @@
-name: "Build and Test For PR"
+name: Build and Test for PR
-on: [push, pull_request, workflow_dispatch]
+on: [ push, pull_request, workflow_dispatch ]
permissions:
contents: read
@@ -9,13 +9,11 @@ env:
FORK_COUNT: 2
FAIL_FAST: 0
SHOW_ERROR_DETAIL: 1
- #multi-version size limit
VERSIONS_LIMIT: 4
JACOCO_ENABLE: true
- CANDIDATE_VERSIONS: '
+ CANDIDATE_VERSIONS: >-
spring.version:5.3.24;
spring-boot.version:2.7.6;
- '
MAVEN_OPTS: >-
-XX:+UseG1GC
-XX:InitiatingHeapOccupancyPercent=45
@@ -34,38 +32,38 @@ env:
jobs:
check-format:
- name: "Check if code needs formatting"
+ name: Check if code needs formatting
runs-on: ubuntu-latest
steps:
- - name: "Checkout"
+ - name: Checkout code
uses: actions/checkout@v4
- - name: "Setup maven"
+ - name: Setup maven
uses: actions/setup-java@v4
with:
java-version: 21
distribution: zulu
- - name: "Check if code aligns with code style"
+ - name: Check if code aligns with code style
id: check
- run: mvn --log-file mvn.log spotless:check
+ run: mvn ${{ env.MAVEN_ARGS }} --log-file mvn.log spotless:check
continue-on-error: true
- - name: "Upload checkstyle result"
- uses: actions/upload-artifact@v4
+ - name: Upload checkstyle result
+ uses: actions/upload-artifact@v3
with:
name: checkstyle-result
path: mvn.log
- - name: "Generate Summary for successful run"
+ - name: Generate Summary for successful run
if: ${{ steps.check.outcome == 'success' }}
run: |
echo ":ballot_box_with_check: Kudos! No formatting issues found!" >> $GITHUB_STEP_SUMMARY
- - name: "Generate Summary for failed run"
+ - name: Generate Summary for failed run
if: ${{ steps.check.outcome == 'failure' }}
run: |
echo "## :negative_squared_cross_mark: Formatting issues found!" >> $GITHUB_STEP_SUMMARY
echo "\`\`\`" >> $GITHUB_STEP_SUMMARY
- cat mvn.log | grep "ERROR" | sed 's/Check if code needs formatting Check if code aligns with code style [0-9A-Z:.-]\+//' | sed 's/\[ERROR] //' | head -n -11 >> $GITHUB_STEP_SUMMARY
+ cat mvn.log | grep "ERROR" | sed 's/Check if code needs formatting Check if code aligns with code style [0-9A-Z:.-]\+//' | sed 's/\[ERROR] //' | head -n -11 >> $GITHUB_STEP_SUMMARY
echo "\`\`\`" >> $GITHUB_STEP_SUMMARY
echo "Please run \`mvn spotless:apply\` to fix the formatting issues." >> $GITHUB_STEP_SUMMARY
- - name: "Fail if code needs formatting"
+ - name: Fail if code needs formatting
if: ${{ steps.check.outcome == 'failure' }}
uses: actions/github-script@v7.0.1
with:
@@ -73,25 +71,25 @@ jobs:
script: |
core.setFailed("Formatting issues found!")
- license:
- name: "Check License"
+ check-license:
needs: check-format
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v3
- - name: "Check License"
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Check License
uses: apache/skywalking-eyes@e1a02359b239bd28de3f6d35fdc870250fa513d5
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- - name: "Set up JDK 21"
- uses: actions/setup-java@v3
+ - name: Set up JDK 21
+ uses: actions/setup-java@v4
with:
- distribution: 'zulu'
+ distribution: zulu
java-version: 21
- - name: "Compile Dubbo (Linux)"
+ - name: Compile Dubbo (Linux)
run: |
./mvnw ${{ env.MAVEN_ARGS }} -T 2C clean install -Pskip-spotless -Dmaven.test.skip=true -Dcheckstyle.skip=true -Dcheckstyle_unix.skip=true -Drat.skip=true
- - name: "Check Dependencies' License"
+ - name: Check Dependencies' License
uses: apache/skywalking-eyes/dependency@e1a02359b239bd28de3f6d35fdc870250fa513d5
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -100,75 +98,71 @@ jobs:
mode: check
build-source:
- name: "Build Dubbo"
+ name: Build Dubbo
needs: check-format
runs-on: ubuntu-latest
outputs:
version: ${{ steps.dubbo-version.outputs.version }}
steps:
- - name: "Checkout code"
- uses: actions/checkout@v3
+ - name: Checkout code
+ uses: actions/checkout@v4
with:
path: dubbo
- - name: "Set up JDK"
- uses: actions/setup-java@v3
+ - name: Set up JDK
+ uses: actions/setup-java@v4
with:
- distribution: 'zulu'
+ distribution: zulu
java-version: 21
- - name: "Set current date as env variable"
- run: echo "TODAY=$(date +'%Y%m%d')" >> $GITHUB_ENV
- - name: "Restore local maven repository cache"
+ - name: Restore local maven repository cache
uses: actions/cache/restore@v4
id: cache-maven-repository
with:
path: ~/.m2/repository
- key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}-${{ env.TODAY }}
- - name: "Restore common local maven repository cache"
+ key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
+ - name: Restore common local maven repository cache
uses: actions/cache/restore@v4
if: steps.cache-maven-repository.outputs.cache-hit != 'true'
with:
path: ~/.m2/repository
- key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
- restore-keys: |
- ${{ runner.os }}-maven-
- - name: "Clean dubbo cache"
+ key: ${{ runner.os }}-maven-
+ - name: Clean dubbo cache
run: rm -rf ~/.m2/repository/org/apache/dubbo
- - name: "Build Dubbo with maven"
+ - name: Build Dubbo with maven
run: |
cd ./dubbo
./mvnw ${{ env.MAVEN_ARGS }} clean install -Psources,'!demo',skip-spotless,checkstyle -Dmaven.test.skip=true -DembeddedZookeeperPath=${{ github.workspace }}/.tmp/zookeeper
- - name: "Save dubbo cache"
+ - name: Save dubbo cache
uses: actions/cache/save@v4
with:
path: ~/.m2/repository/org/apache/dubbo
key: ${{ runner.os }}-dubbo-snapshot-${{ github.sha }}-${{ github.run_id }}
- - name: "Clean dubbo cache"
+ - name: Clean dubbo cache
run: rm -rf ~/.m2/repository/org/apache/dubbo
- - name: "Save local maven repository cache"
+ - name: Save local maven repository cache
uses: actions/cache/save@v4
if: steps.cache-maven-repository.outputs.cache-hit != 'true'
with:
path: ~/.m2/repository
- key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}-${{ env.TODAY }}
- - name: "Pack class result"
+ key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
+ - name: Pack class result
run: |
shopt -s globstar
zip ${{ github.workspace }}/class.zip **/target/classes/* -r
- - name: "Upload class result"
+ - name: Upload class result
uses: actions/upload-artifact@v3
with:
- name: "class-file"
+ name: class-file
path: ${{ github.workspace }}/class.zip
- - name: "Pack checkstyle file if failure"
+ - name: Pack checkstyle file if failure
if: failure()
run: zip ${{ github.workspace }}/checkstyle.zip *checkstyle* -r
- - name: "Upload checkstyle file if failure"
+ - name: Upload checkstyle file if failure
uses: actions/upload-artifact@v3
if: failure()
with:
- name: "checkstyle-file"
+ name: checkstyle-file
path: ${{ github.workspace }}/checkstyle.zip
- - name: "Calculate Dubbo Version"
+ - name: Calculate Dubbo Version
id: dubbo-version
run: |
REVISION=`awk '/<revision>[^<]+<\/revision>/{gsub(/<revision>|<\/revision>/,"",$1);print $1;exit;}' ./dubbo/pom.xml`
@@ -176,28 +170,30 @@ jobs:
echo "dubbo version: $REVISION"
unit-test-prepare:
- name: "Preparation for Unit Test"
+ name: Preparation for Unit Test
needs: check-format
runs-on: ubuntu-latest
- strategy:
- fail-fast: false
env:
- ZOOKEEPER_VERSION: 3.6.3
+ JOB_COUNT: 3
+ ZOOKEEPER_VERSION: 3.6.4
steps:
- - name: "Cache zookeeper binary archive"
- uses: actions/cache@v3
- id: "cache-zookeeper"
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Prepare test list
+ run: bash ./dubbo-test/scripts/split-modules.sh 3 '${{ github.workspace }}'
+ - name: Upload test list
+ uses: actions/upload-artifact@v3
+ with:
+ name: unit-test-list
+ path: test/jobs
+ - name: Restore local zookeeper cache
+ uses: actions/cache/restore@v4
+ 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"
- uses: msys2/setup-msys2@v2
- if: ${{ startsWith( matrix.os, 'windows') && steps.cache-zookeeper.outputs.cache-hit != 'true' }}
- with:
- release: false # support cache, see https://github.com/msys2/setup-msys2#context
- - name: "Download zookeeper binary archive in Linux OS"
+ - name: Download zookeeper binary archive in Linux OS
+ if: 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 ||
@@ -208,319 +204,326 @@ jobs:
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: [check-format, build-source, unit-test-prepare]
- name: "Unit Test On ubuntu-latest"
+ - name: Save local zookeeper cache
+ uses: actions/cache/save@v4
+ if: steps.cache-zookeeper.outputs.cache-hit != 'true'
+ with:
+ path: ${{ github.workspace }}/.tmp/zookeeper
+ key: zookeeper-${{ runner.os }}-${{ env.ZOOKEEPER_VERSION }}
+ unit-test-job:
+ name: Unit Test (Job-${{matrix.job_id}})
+ needs: [ check-format, build-source, unit-test-prepare ]
runs-on: ubuntu-latest
+ timeout-minutes: 30
+ env:
+ ZOOKEEPER_VERSION: 3.6.4
strategy:
fail-fast: false
- env:
- DISABLE_FILE_SYSTEM_TEST: true
- CURRENT_ROLE: ${{ matrix.case-role }}
- ZOOKEEPER_VERSION: 3.6.3
+ matrix:
+ job_id: [ 1, 2, 3 ]
steps:
- - name: "Checkout code"
- uses: actions/checkout@v3
- with:
- fetch-depth: 0
- - name: "Set up JDK ${{ matrix.jdk }}"
- uses: actions/setup-java@v3
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Set up JDK
+ uses: actions/setup-java@v4
with:
- distribution: 'zulu'
+ distribution: zulu
java-version: 21
- - name: "Set current date as env variable"
- run: echo "TODAY=$(date +'%Y%m%d')" >> $GITHUB_ENV
- - name: "Cache local maven repository"
+ - name: Restore local maven repository
uses: actions/cache/restore@v4
with:
path: ~/.m2/repository
- key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}-${{ env.TODAY }}
+ key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
restore-keys: |
- ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
${{ runner.os }}-maven-
- - name: "Cache zookeeper binary archive"
- uses: actions/cache@v3
- id: "cache-zookeeper"
+ - name: Restore Dubbo cache
+ uses: actions/cache/restore@v4
+ with:
+ path: ~/.m2/repository/org/apache/dubbo
+ key: ${{ runner.os }}-dubbo-snapshot-${{ github.sha }}-${{ github.run_id }}
+ - name: Cache zookeeper binary archive
+ uses: actions/cache@v4
+ 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"
- timeout-minutes: 90
+ - name: Download test list
+ uses: actions/download-artifact@v3
+ with:
+ name: unit-test-list
+ path: test/jobs/
+ - name: Test with maven
+ timeout-minutes: 30
run: |
set -o pipefail
- ./mvnw ${{ env.MAVEN_ARGS }} clean test verify -Pjacoco,jdk15ge-simple,'!jdk15ge','!demo',skip-spotless,jacoco089 -DtrimStackTrace=false -Dmaven.test.skip=false -Dcheckstyle.skip=false -Dcheckstyle_unix.skip=false -Drat.skip=false -DembeddedZookeeperPath=${{ github.workspace }}/.tmp/zookeeper 2>&1 | tee >(grep -n -B 1 -A 200 "FAILURE! -- in" > test_errors.log)
- - name: "Print test error log"
+ modules=$(cat test/jobs/test_modules_${{ matrix.job_id }}.txt)
+ ./mvnw ${{ env.MAVEN_ARGS }} clean test verify -Pjacoco,jdk15ge-simple,'!jdk15ge','!demo',skip-spotless,jacoco089 -pl "$modules" -DtrimStackTrace=false -Dmaven.test.skip=false -Dcheckstyle.skip=false -Dcheckstyle_unix.skip=false -Drat.skip=false -Dflatten.skip=true -DembeddedZookeeperPath=${{ github.workspace }}/.tmp/zookeeper 2>&1 | tee >(grep -n -B 1 -A 200 "FAILURE! -- in" > test_errors.log)
+ - name: Print test error log
if: failure()
run: cat test_errors.log
- - name: "Upload coverage result"
+ - name: Upload coverage result
uses: actions/upload-artifact@v3
with:
- name: coverage-result
- path: "**/target/site/**/jacoco.xml"
+ name: unit-jacoco-result
+ path: '**/target/site/**/jacoco.xml'
samples-test-prepare:
+ name: Preparation for Sample Test
needs: check-format
runs-on: ubuntu-latest
env:
JOB_COUNT: 3
steps:
- - uses: actions/checkout@v3
+ - name: Checkout code
+ uses: actions/checkout@v4
with:
- repository: 'apache/dubbo-samples'
+ repository: oxsean/dubbo-samples
ref: master
- - name: "Prepare test list"
+ - name: Prepare test list
run: bash ./test/scripts/prepare-test.sh
- - name: "Upload test list"
+ - name: Upload test list
uses: actions/upload-artifact@v3
with:
name: samples-test-list
path: test/jobs
samples-test-job:
- needs: [check-format, build-source, samples-test-prepare]
- name: "Samples Test on ubuntu-latest (JobId: ${{matrix.job_id}})"
+ name: Samples Test (Job-${{matrix.job_id}})
+ needs: [ check-format, build-source, samples-test-prepare ]
runs-on: ubuntu-latest
- timeout-minutes: 90
+ timeout-minutes: 30
env:
JAVA_VER: 8
- TEST_CASE_FILE: jobs/testjob_${{matrix.job_id}}.txt
+ TEST_CASE_FILE: jobs/testjob_${{ matrix.job_id }}.txt
strategy:
fail-fast: false
matrix:
- job_id: [1, 2, 3]
+ job_id: [ 1, 2, 3 ]
steps:
- - uses: actions/checkout@v3
+ - name: Checkout code
+ uses: actions/checkout@v4
with:
- repository: 'apache/dubbo-samples'
+ repository: oxsean/dubbo-samples
ref: master
- - name: "Set current date as env variable"
- run: echo "TODAY=$(date +'%Y%m%d')" >> $GITHUB_ENV
- - name: "Restore local maven repository cache"
+ - name: Restore local maven repository cache
uses: actions/cache/restore@v4
with:
path: ~/.m2/repository
- key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}-${{ env.TODAY }}
+ key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
restore-keys: |
- ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
${{ runner.os }}-maven-
- - name: "Restore Dubbo cache"
+ - name: Restore Dubbo cache
uses: actions/cache/restore@v4
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"
+ - 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
+ - name: Set up JDK 8
+ uses: actions/setup-java@v4
with:
- distribution: 'zulu'
+ distribution: zulu
java-version: 8
- - name: "Init Candidate Versions"
+ - name: Init Candidate Versions
run: |
- DUBBO_VERSION="${{needs.build-source.outputs.version}}"
+ 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"
+ - name: Build test image
run: cd test && bash ./build-test-image.sh
- - name: "Run tests"
+ - name: Run tests
run: cd test && bash ./run-tests.sh
- - name: "merge jacoco result"
- 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"
+ - name: merge jacoco result
+ run: cd test/dubbo-test-jacoco-merger && mvn ${{ env.MAVEN_ARGS }} 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()
+ - name: Upload test result
uses: actions/upload-artifact@v3
with:
name: samples-test-result
path: test/jobs/*-result*
samples-test-result:
- needs: [check-format, samples-test-job]
- if: always()
+ needs: [ check-format, samples-test-job ]
runs-on: ubuntu-latest
env:
JAVA_VER: 8
steps:
- - uses: actions/checkout@v3
+ - name: Checkout samples code
+ uses: actions/checkout@v4
with:
- repository: 'apache/dubbo-samples'
+ repository: oxsean/dubbo-samples
ref: master
- - name: "Download test result"
+ - name: Download test result
uses: actions/download-artifact@v3
with:
name: samples-test-result
path: test/jobs/
- - name: "Merge test result"
+ - name: Merge test result
run: ./test/scripts/merge-test-results.sh
integration-test-prepare:
+ name: Preparation for Integration Test
needs: check-format
runs-on: ubuntu-latest
env:
- JOB_COUNT: 3
+ JOB_COUNT: 5
steps:
- - uses: actions/checkout@v3
+ - name: Checkout integration code
+ uses: actions/checkout@v4
with:
- repository: 'apache/dubbo-integration-cases'
+ repository: oxsean/dubbo-integration-cases
ref: main
- - name: "Prepare test list"
+ - name: Prepare test list
run: bash ./test/scripts/prepare-test.sh
- - name: "Upload test list"
+ - name: Upload test list
uses: actions/upload-artifact@v3
with:
- name: test-list
+ name: integration-test-list
path: test/jobs
integration-test-job:
- needs: [check-format, build-source, integration-test-prepare]
- name: "Integration Test on ubuntu-latest (JobId: ${{matrix.job_id}})"
+ name: Integration Test (Job-${{matrix.job_id}})
+ needs: [ check-format, build-source, integration-test-prepare ]
runs-on: ubuntu-latest
- timeout-minutes: 90
+ timeout-minutes: 30
env:
JAVA_VER: 8
- TEST_CASE_FILE: jobs/testjob_${{matrix.job_id}}.txt
+ TEST_CASE_FILE: jobs/testjob_${{ matrix.job_id }}.txt
strategy:
fail-fast: false
matrix:
- job_id: [1, 2, 3]
+ job_id: [ 1, 2, 3, 4, 5 ]
steps:
- - uses: actions/checkout@v3
+ - name: Checkout integration code
+ uses: actions/checkout@v4
with:
- repository: 'apache/dubbo-integration-cases'
+ repository: oxsean/dubbo-integration-cases
ref: main
- - name: "Set current date as env variable"
- run: echo "TODAY=$(date +'%Y%m%d')" >> $GITHUB_ENV
- - name: "Restore local maven repository cache"
+ - name: Restore local maven repository cache
uses: actions/cache/restore@v4
with:
path: ~/.m2/repository
- key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}-${{ env.TODAY }}
+ key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
restore-keys: |
- ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
${{ runner.os }}-maven-
- - name: "Restore Dubbo cache"
+ - name: Restore Dubbo cache
uses: actions/cache/restore@v4
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"
+ - name: Download test list
uses: actions/download-artifact@v3
with:
- name: test-list
+ name: integration-test-list
path: test/jobs/
- - name: "Set up JDK 8"
- uses: actions/setup-java@v3
+ - name: Set up JDK 8
+ uses: actions/setup-java@v4
with:
- distribution: 'zulu'
+ distribution: zulu
java-version: 8
- - name: "Init Candidate Versions"
+ - name: Init Candidate Versions
run: |
- DUBBO_VERSION="${{needs.build-source.outputs.version}}"
+ 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"
+ - name: Build test image
run: cd test && bash ./build-test-image.sh
- - name: "Run tests"
+ - name: Run tests
run: cd test && bash ./run-tests.sh
- - name: "merge jacoco result"
- 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"
+ - name: merge jacoco result
+ run: cd test/dubbo-test-jacoco-merger && mvn ${{ env.MAVEN_ARGS }} 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: jacoco-result
+ name: integration-jacoco-result
path: target/jacoco*.exec
- - name: "Upload test result"
- if: always()
+ - name: Upload test result
uses: actions/upload-artifact@v3
with:
- name: test-result
+ name: integration-test-result
path: test/jobs/*-result*
integration-test-result:
- needs: [check-format, integration-test-job]
- if: always()
+ needs: [ check-format, integration-test-job ]
runs-on: ubuntu-latest
env:
JAVA_VER: 8
steps:
- - uses: actions/checkout@v3
+ - name: Checkout integration code
+ uses: actions/checkout@v4
with:
- repository: 'apache/dubbo-integration-cases'
+ repository: oxsean/dubbo-integration-cases
ref: main
- - name: "Download test result"
+ - name: Download test result
uses: actions/download-artifact@v3
with:
- name: test-result
+ name: integration-test-result
path: test/jobs/
- - name: "Merge test result"
+ - name: Merge test result
run: ./test/scripts/merge-test-results.sh
jacoco-result-merge:
runs-on: ubuntu-latest
- needs: [check-format, integration-test-result, samples-test-result, unit-test]
+ needs: [ check-format, unit-test-job, samples-test-result, integration-test-result ]
steps:
- - uses: actions/checkout@v3
+ - name: Checkout code
+ uses: actions/checkout@v4
with:
- path: "./dubbo"
- - uses: actions/checkout@v3
+ path: ./dubbo
+ - name: Checkout code
+ uses: actions/checkout@v4
with:
- repository: 'apache/dubbo-samples'
- path: "./dubbo-samples"
- - uses: actions/checkout@v3
+ repository: oxsean/dubbo-samples
+ path: ./dubbo-samples
+ - name: Checkout code
+ uses: actions/checkout@v4
with:
- repository: 'apache/dubbo-integration-cases'
- path: "./dubbo-integration-cases"
- - name: "Set up JDK 21"
- uses: actions/setup-java@v3
+ repository: oxsean/dubbo-integration-cases
+ path: ./dubbo-integration-cases
+ - name: Set up JDK 21
+ uses: actions/setup-java@v4
with:
- distribution: 'zulu'
+ distribution: zulu
java-version: 21
- - name: "Restore class result"
+ - name: Restore class result
uses: actions/download-artifact@v3
with:
- name: "class-file"
+ name: class-file
path: ${{ github.workspace }}
- - name: "Unpack class result"
+ - name: Unpack class result
run: |
cd ${{ github.workspace }}/dubbo
unzip -o ${{ github.workspace }}/class.zip
- - name: "Restore jacoco exec"
+ - name: Restore samples jacoco exec
uses: actions/download-artifact@v3
with:
name: samples-jacoco-result
path: dubbo-samples/target/
- - name: "Restore integration jacoco exec"
+ - name: Restore integration jacoco exec
uses: actions/download-artifact@v3
with:
- name: jacoco-result
+ name: integration-jacoco-result
path: dubbo-integration-cases/target/
- - name: "Merge jacoco result"
+ - name: Merge samples 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"
+ mvn ${{ env.MAVEN_ARGS }} clean compile exec:java -Dexec.mainClass="org.apache.dubbo.test.JacocoReport" -Dexec.args="${{ github.workspace }}/dubbo-samples ${{ github.workspace }}/dubbo"
+ - name: Merge integration 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"
+ mvn ${{ env.MAVEN_ARGS }} 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:
- name: coverage-result
+ name: unit-jacoco-result
path: dubbo/
- - name: "Upload coverage to Codecov"
- uses: codecov/codecov-action@v3
+ - name: Upload coverage to Codecov
+ uses: codecov/codecov-action@v4
with:
verbose: true
@@ -528,92 +531,91 @@ jobs:
needs: check-format
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v3
+ - name: Checkout code
+ uses: actions/checkout@v4
with:
- path: "./dubbo"
- - uses: actions/checkout@v3
+ path: ./dubbo
+ - name: Checkout code
+ uses: actions/checkout@v4
with:
- repository: 'apache/dubbo-test-tools'
+ repository: apache/dubbo-test-tools
ref: main
- path: "./dubbo-test-tools"
- - name: "Set up JDK 21"
- uses: actions/setup-java@v3
+ path: ./dubbo-test-tools
+ - name: Set up JDK 21
+ uses: actions/setup-java@v4
with:
- distribution: 'zulu'
+ distribution: zulu
java-version: 21
- - name: "Restore local maven repository cache"
+ - name: Restore local maven repository cache
uses: actions/cache/restore@v4
id: cache-maven-repository
with:
path: ~/.m2/repository
- key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}-${{ env.TODAY }}
+ key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
restore-keys: |
- ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
${{ runner.os }}-maven-
- - name: "Compile Dubbo (Linux)"
+ - name: Compile Dubbo (Linux)
run: |
cd ${{ github.workspace }}/dubbo
./mvnw ${{ env.MAVEN_ARGS }} -T 2C clean install -P '!demo',skip-spotless -Dmaven.test.skip=true -Dcheckstyle.skip=true -Dcheckstyle_unix.skip=true -Drat.skip=true
- - name: "Run Error Code Inspecting"
+ - name: Run Error Code Inspecting
env:
DUBBO_ECI_REPORT_AS_ERROR: true
run: |
cd ${{ github.workspace }}/dubbo-test-tools/dubbo-error-code-inspector
../mvnw ${{ env.MAVEN_ARGS }} -T 2C package exec:java -Ddubbo.eci.report-as-error=${DUBBO_ECI_REPORT_AS_ERROR} -Dmaven.test.skip=true -Ddubbo.eci.path=${{ github.workspace }}/dubbo
- - name: "Upload error code inspection result"
+ - 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"
+ name: error-inspection-result
path: ${{ github.workspace }}/dubbo-test-tools/dubbo-error-code-inspector/error-inspection-result.txt
native-image-inspecting:
needs: check-format
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v3
+ - name: Checkout code
+ uses: actions/checkout@v4
with:
- path: "./dubbo"
- - name: "Setup GraalVM environment"
+ path: ./dubbo
+ - name: Setup GraalVM environment
uses: graalvm/setup-graalvm@v1
with:
- version: '22.3.0'
- java-version: '17'
- components: 'native-image'
+ version: 22.3.0
+ java-version: 17
+ components: native-image
github-token: ${{ secrets.GITHUB_TOKEN }}
- native-image-job-reports: 'true'
- - name: "Setup Zookeeper environment"
+ native-image-job-reports: true
+ - name: Setup Zookeeper environment
run: |
wget https://dlcdn.apache.org/zookeeper/zookeeper-3.8.4/apache-zookeeper-3.8.4-bin.tar.gz
tar -zxvf apache-zookeeper-3.8.4-bin.tar.gz
mv apache-zookeeper-3.8.4-bin/conf/zoo_sample.cfg apache-zookeeper-3.8.4-bin/conf/zoo.cfg
apache-zookeeper-3.8.4-bin/bin/zkServer.sh start
- - name: "Check environment"
+ - name: Check environment
run: |
java --version
native-image --version
- - name: "Set current date as env variable"
- run: echo "TODAY=$(date +'%Y%m%d')" >> $GITHUB_ENV
- - name: "Restore local maven repository cache"
+ - name: Restore local maven repository cache
uses: actions/cache/restore@v4
with:
path: ~/.m2/repository
- key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}-${{ env.TODAY }}
+ key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
restore-keys: |
- ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
${{ runner.os }}-maven-
- - name: "Compile Dubbo (Linux)"
+ - name: Compile Dubbo (Linux)
run: |
cd ${{ github.workspace }}/dubbo
./mvnw ${{ env.MAVEN_ARGS }} -T 2C clean install -P '!demo',skip-spotless -Dmaven.test.skip=true -Dcheckstyle.skip=true -Dcheckstyle_unix.skip=true -Drat.skip=true
- - name: "Compile and run Dubbo demo for native (Linux)"
+ - name: Compile and run Dubbo demo for native (Linux)
run: |
cd ${{ github.workspace }}/dubbo/dubbo-demo/dubbo-demo-native/dubbo-demo-native-interface
MVNW="${{ github.workspace }}/dubbo/mvnw ${{ env.MAVEN_ARGS }} -T 2C -Dmaven.test.skip=true"
$MVNW clean install
cd ../dubbo-demo-native-provider
- $MVNW clean package -P native native:compile
+ $MVNW clean package -P native native:compile
nohup ./target/dubbo-demo-native-provider &
cd ../dubbo-demo-native-consumer
$MVNW clean package -P native native:compile
diff --git a/dubbo-common/src/test/resources/log4j2-test.xml b/dubbo-common/src/test/resources/log4j2-test.xml
index ba99f52cc2..a90449b619 100644
--- a/dubbo-common/src/test/resources/log4j2-test.xml
+++ b/dubbo-common/src/test/resources/log4j2-test.xml
@@ -25,5 +25,6 @@
<Root level="info">
<AppenderRef ref="Console"/>
</Root>
+ <Logger name="org.apache.dubbo.rpc.protocol.tri.stream.StreamUtils" level="warn"/>
</Loggers>
</Configuration>
diff --git a/dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/stream/StreamUtils.java b/dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/stream/StreamUtils.java
index 5f726a723a..060b8dbe0f 100644
--- a/dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/stream/StreamUtils.java
+++ b/dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/stream/StreamUtils.java
@@ -140,7 +140,7 @@ public final class StreamUtils {
String str = encodeBase64ASCII((byte[]) value);
consumer.accept(key + TripleConstants.HEADER_BIN_SUFFIX, str);
} else {
- LOGGER.warn(
+ LOGGER.info(
PROTOCOL_UNSUPPORTED,
"",
"",
diff --git a/dubbo-test/scripts/split-modules.sh b/dubbo-test/scripts/split-modules.sh
new file mode 100644
index 0000000000..1bc1fe47de
--- /dev/null
+++ b/dubbo-test/scripts/split-modules.sh
@@ -0,0 +1,42 @@
+#!/bin/bash
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+readarray -t modules < <(find . -name "pom.xml" | while read -r pom; do
+ module_dir=$(dirname "$pom")
+ if [ -d "$module_dir/src/test" ]; then
+ echo "${module_dir#./}"
+ fi
+done)
+
+readarray -t modules < <(printf '%s\n' "${modules[@]}" | shuf --random-source=/dev/zero)
+
+jobs=$1
+jobs_dir=$2/test/jobs
+
+total=${#modules[@]}
+size=$((total / jobs))
+remainder=$((total % jobs))
+
+mkdir -p "$jobs_dir"
+
+IFS=','
+for ((i=0; i<jobs; i++)); do
+ start=$((i * size + (i < remainder ? i : remainder)))
+ end=$((start + size + (i < remainder ? 1 : 0)))
+ echo "${modules[*]:start:end-start}" > "$jobs_dir/test_modules_$((i+1)).txt"
+done
(dubbo) 02/03: Split unit test for all
Posted by ox...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
oxsean pushed a commit to branch split-unit-test
in repository https://gitbox.apache.org/repos/asf/dubbo.git
commit 05096d789d990e3a8cdeeb6207cb009406914819
Author: Sean Yang <ox...@gmail.com>
AuthorDate: Sun Sep 8 15:15:37 2024 +0800
Split unit test for all
---
.github/workflows/build-and-test-pr.yml | 47 +-
.github/workflows/build-and-test-scheduled-3.1.yml | 572 +++++++++++----------
.github/workflows/build-and-test-scheduled-3.2.yml | 570 ++++++++++----------
.github/workflows/build-and-test-scheduled-3.3.yml | 561 ++++++++++----------
.github/workflows/release-test.yml | 555 ++++++++++----------
dubbo-test/scripts/split-modules.sh | 4 +-
mvnw | 2 +-
7 files changed, 1191 insertions(+), 1120 deletions(-)
diff --git a/.github/workflows/build-and-test-pr.yml b/.github/workflows/build-and-test-pr.yml
index 1ebb815797..62b7beec60 100644
--- a/.github/workflows/build-and-test-pr.yml
+++ b/.github/workflows/build-and-test-pr.yml
@@ -10,6 +10,7 @@ env:
FAIL_FAST: 0
SHOW_ERROR_DETAIL: 1
VERSIONS_LIMIT: 4
+ ALL_REMOTE_VERSION: true
JACOCO_ENABLE: true
CANDIDATE_VERSIONS: >-
spring.version:5.3.24;
@@ -88,7 +89,7 @@ jobs:
java-version: 21
- name: Compile Dubbo (Linux)
run: |
- ./mvnw ${{ env.MAVEN_ARGS }} -T 2C clean install -Pskip-spotless -Dmaven.test.skip=true -Dcheckstyle.skip=true -Dcheckstyle_unix.skip=true -Drat.skip=true
+ ./mvnw ${{ env.MAVEN_ARGS }} -T 2C clean install -Pskip-spotless -Dmaven.test.skip=true
- name: Check Dependencies' License
uses: apache/skywalking-eyes/dependency@e1a02359b239bd28de3f6d35fdc870250fa513d5
env:
@@ -130,7 +131,7 @@ jobs:
- name: Build Dubbo with maven
run: |
cd ./dubbo
- ./mvnw ${{ env.MAVEN_ARGS }} clean install -Psources,'!demo',skip-spotless,checkstyle -Dmaven.test.skip=true -DembeddedZookeeperPath=${{ github.workspace }}/.tmp/zookeeper
+ ./mvnw ${{ env.MAVEN_ARGS }} -T 2C clean install -Psources,'!demo',skip-spotless,checkstyle -Dmaven.test.skip=true
- name: Save dubbo cache
uses: actions/cache/save@v4
with:
@@ -180,7 +181,7 @@ jobs:
- name: Checkout code
uses: actions/checkout@v4
- name: Prepare test list
- run: bash ./dubbo-test/scripts/split-modules.sh 3 '${{ github.workspace }}'
+ run: bash ./dubbo-test/scripts/split-modules.sh ${{ env.JOB_COUNT }} '${{ github.workspace }}'
- name: Upload test list
uses: actions/upload-artifact@v3
with:
@@ -192,18 +193,24 @@ jobs:
with:
path: ${{ github.workspace }}/.tmp/zookeeper
key: zookeeper-${{ runner.os }}-${{ env.ZOOKEEPER_VERSION }}
- - name: Download zookeeper binary archive in Linux OS
+ - name: Download zookeeper binary archive on ${{ matrix.os }}
if: steps.cache-zookeeper.outputs.cache-hit != 'true'
+ env:
+ MIRRORS: >-
+ https://archive.apache.org/dist
+ https://apache.website-solution.net
+ http://apache.stu.edu.tw
+ http://ftp.jaist.ac.jp/pub/apache
+ http://apache.mirror.cdnetworks.com
+ http://mirror.apache-kr.org/apache
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
+ cd '${{ github.workspace }}'
+ mkdir -p .tmp/zookeeper
+ for mirror in $MIRRORS; do
+ curl -sL "$mirror/zookeeper/zookeeper-${{ env.ZOOKEEPER_VERSION }}/apache-zookeeper-${{ env.ZOOKEEPER_VERSION }}-bin.tar.gz" -o .tmp/zookeeper/apache-zookeeper-bin.tar.gz && break
+ done
echo "list the downloaded zookeeper binary archive"
- ls -al ${{ github.workspace }}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz
+ ls -al .tmp/zookeeper/apache-zookeeper-bin.tar.gz
- name: Save local zookeeper cache
uses: actions/cache/save@v4
if: steps.cache-zookeeper.outputs.cache-hit != 'true'
@@ -213,8 +220,8 @@ jobs:
unit-test-job:
name: Unit Test (Job-${{matrix.job_id}})
needs: [ check-format, build-source, unit-test-prepare ]
- runs-on: ubuntu-latest
- timeout-minutes: 30
+ runs-on: ${{ matrix.os }}-latest
+ timeout-minutes: 60
env:
ZOOKEEPER_VERSION: 3.6.4
strategy:
@@ -255,11 +262,11 @@ jobs:
name: unit-test-list
path: test/jobs/
- name: Test with maven
- timeout-minutes: 30
+ timeout-minutes: 60
run: |
set -o pipefail
modules=$(cat test/jobs/test_modules_${{ matrix.job_id }}.txt)
- ./mvnw ${{ env.MAVEN_ARGS }} clean test verify -Pjacoco,jdk15ge-simple,'!jdk15ge','!demo',skip-spotless,jacoco089 -pl "$modules" -DtrimStackTrace=false -Dmaven.test.skip=false -Dcheckstyle.skip=false -Dcheckstyle_unix.skip=false -Drat.skip=false -Dflatten.skip=true -DembeddedZookeeperPath=${{ github.workspace }}/.tmp/zookeeper 2>&1 | tee >(grep -n -B 1 -A 200 "FAILURE! -- in" > test_errors.log)
+ ./mvnw ${{ env.MAVEN_ARGS }} clean test verify -Pjdk15ge-simple,'!jdk15ge','!demo',skip-spotless,jacoco,jacoco089 -pl "$modules" -DtrimStackTrace=false -Dmaven.test.skip=false -Drat.skip=false -Dflatten.skip=true -DembeddedZookeeperPath=${{ github.workspace }}/.tmp/zookeeper 2>&1 | tee >(grep -n -B 5 -A 200 "FAILURE! -- in" > test_errors.log)
- name: Print test error log
if: failure()
run: cat test_errors.log
@@ -292,7 +299,7 @@ jobs:
name: Samples Test (Job-${{matrix.job_id}})
needs: [ check-format, build-source, samples-test-prepare ]
runs-on: ubuntu-latest
- timeout-minutes: 30
+ timeout-minutes: 60
env:
JAVA_VER: 8
TEST_CASE_FILE: jobs/testjob_${{ matrix.job_id }}.txt
@@ -391,7 +398,7 @@ jobs:
name: Integration Test (Job-${{matrix.job_id}})
needs: [ check-format, build-source, integration-test-prepare ]
runs-on: ubuntu-latest
- timeout-minutes: 30
+ timeout-minutes: 60
env:
JAVA_VER: 8
TEST_CASE_FILE: jobs/testjob_${{ matrix.job_id }}.txt
@@ -557,7 +564,7 @@ jobs:
- name: Compile Dubbo (Linux)
run: |
cd ${{ github.workspace }}/dubbo
- ./mvnw ${{ env.MAVEN_ARGS }} -T 2C clean install -P '!demo',skip-spotless -Dmaven.test.skip=true -Dcheckstyle.skip=true -Dcheckstyle_unix.skip=true -Drat.skip=true
+ ./mvnw ${{ env.MAVEN_ARGS }} -T 2C clean install -P '!demo',skip-spotless -Dmaven.test.skip=true
- name: Run Error Code Inspecting
env:
DUBBO_ECI_REPORT_AS_ERROR: true
@@ -608,7 +615,7 @@ jobs:
- name: Compile Dubbo (Linux)
run: |
cd ${{ github.workspace }}/dubbo
- ./mvnw ${{ env.MAVEN_ARGS }} -T 2C clean install -P '!demo',skip-spotless -Dmaven.test.skip=true -Dcheckstyle.skip=true -Dcheckstyle_unix.skip=true -Drat.skip=true
+ ./mvnw ${{ env.MAVEN_ARGS }} -T 2C clean install -P '!demo',skip-spotless -Dmaven.test.skip=true
- name: Compile and run Dubbo demo for native (Linux)
run: |
cd ${{ github.workspace }}/dubbo/dubbo-demo/dubbo-demo-native/dubbo-demo-native-interface
diff --git a/.github/workflows/build-and-test-scheduled-3.1.yml b/.github/workflows/build-and-test-scheduled-3.1.yml
index 54a2abda85..7f842ced40 100644
--- a/.github/workflows/build-and-test-scheduled-3.1.yml
+++ b/.github/workflows/build-and-test-scheduled-3.1.yml
@@ -2,75 +2,116 @@ name: Build and Test Scheduled On 3.1
on:
schedule:
- - cron: '0 0/6 * * *'
+ - cron: 0 0/6 * * *
workflow_dispatch:
permissions:
contents: read
+defaults:
+ run:
+ shell: bash
+
env:
+ DUBBO_BRANCH: 3.1
FORK_COUNT: 2
FAIL_FAST: 0
SHOW_ERROR_DETAIL: 1
- #multi-version size limit
VERSIONS_LIMIT: 4
ALL_REMOTE_VERSION: true
- CANDIDATE_VERSIONS: '
+ JACOCO_ENABLE: false
+ CANDIDATE_VERSIONS: >-
spring.version:5.3.24;
spring-boot.version:2.7.6;
- '
+ MAVEN_OPTS: >-
+ -XX:+UseG1GC
+ -XX:InitiatingHeapOccupancyPercent=45
+ -XX:+UseStringDeduplication
+ -XX:-TieredCompilation
+ -XX:TieredStopAtLevel=1
+ -Dmaven.javadoc.skip=true
+ -Dmaven.wagon.http.retryHandler.count=5
+ -Dmaven.wagon.httpconnectionManager.ttlSeconds=120
+ MAVEN_ARGS: >-
+ -e
+ --batch-mode
+ --no-snapshot-updates
+ --no-transfer-progress
+ --fail-fast
jobs:
- license:
+ check-license:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v3
+ - name: Checkout code
+ uses: actions/checkout@v4
with:
- ref: "3.1"
+ ref: ${{ env.DUBBO_BRANCH }}
- name: Check License
uses: apache/skywalking-eyes@main
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+
build-source:
- runs-on: ubuntu-latest
+ name: Build Dubbo on ${{ matrix.os }}
+ runs-on: ${{ matrix.os }}-latest
+ strategy:
+ matrix:
+ os: [ ubuntu, windows ]
outputs:
version: ${{ steps.dubbo-version.outputs.version }}
steps:
- - uses: actions/checkout@v3
+ - name: Checkout code
+ uses: actions/checkout@v4
with:
- ref: "3.1"
+ ref: ${{ env.DUBBO_BRANCH }}
path: dubbo
- - uses: actions/setup-java@v3
+ - name: Set up JDK
+ uses: actions/setup-java@v4
with:
- distribution: 'zulu'
+ distribution: zulu
java-version: 8
- - uses: actions/cache@v3
- name: "Cache local Maven repository"
+ - name: Restore local maven repository cache
+ uses: actions/cache/restore@v4
+ id: cache-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
+ key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
+ - name: Restore common local maven repository cache
+ uses: actions/cache/restore@v4
+ if: steps.cache-maven-repository.outputs.cache-hit != 'true'
with:
- path: ~/.m2/repository/org/apache/dubbo
- key: ${{ runner.os }}-dubbo-snapshot-${{ github.sha }}-${{ github.run_id }}
- - name: "Build Dubbo with Maven"
+ path: ~/.m2/repository
+ key: ${{ runner.os }}-maven-
+ - name: Clean dubbo cache
+ run: rm -rf ~/.m2/repository/org/apache/dubbo
+ - 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"
+ ./mvnw ${{ env.MAVEN_ARGS }} -T 2C clean install -Psources,'!demo',skip-spotless,checkstyle -Dmaven.test.skip=true -Dcheckstyle_unix.skip=${{ matrix.os == 'windows' && 'true' || 'false' }}
+ - name: Save dubbo cache
+ uses: actions/cache/save@v4
+ with:
+ path: ~/.m2/repository/org/apache/dubbo
+ key: ${{ runner.os }}-dubbo-snapshot-${{ github.sha }}-${{ github.run_id }}
+ - name: Clean dubbo cache
+ run: rm -rf ~/.m2/repository/org/apache/dubbo
+ - name: Save local maven repository cache
+ uses: actions/cache/save@v4
+ if: steps.cache-maven-repository.outputs.cache-hit != 'true'
+ with:
+ path: ~/.m2/repository
+ key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
+ - 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()
+ - name: Upload checkstyle file if failure
uses: actions/upload-artifact@v3
+ if: failure()
with:
- name: "checkstyle-file"
+ name: checkstyle-file
path: ${{ github.workspace }}/checkstyle.zip
- - name: "Calculate Dubbo Version"
+ - name: Calculate Dubbo Version
id: dubbo-version
run: |
REVISION=`awk '/<revision>[^<]+<\/revision>/{gsub(/<revision>|<\/revision>/,"",$1);print $1;exit;}' ./dubbo/pom.xml`
@@ -78,425 +119,400 @@ jobs:
echo "dubbo version: $REVISION"
unit-test-prepare:
- name: " Preparation for Unit Test On ${{ matrix.os }}"
- runs-on: ${{ matrix.os }}
+ name: Preparation for Unit Test on ${{ matrix.os }}
+ runs-on: ${{ matrix.os }}-latest
+ env:
+ JOB_COUNT: 2
+ ZOOKEEPER_VERSION: 3.6.4
strategy:
- fail-fast: false
matrix:
- os: [ ubuntu-latest, windows-latest ]
- env:
- ZOOKEEPER_VERSION: 3.6.3
+ os: [ ubuntu, windows ]
steps:
- - uses: actions/cache@v3
- name: "Cache zookeeper binary archive"
- id: "cache-zookeeper"
+ - name: Checkout code
+ uses: actions/checkout@v4
+ with:
+ ref: ${{ env.DUBBO_BRANCH }}
+ - name: Prepare test list
+ if: ${{ matrix.os == 'ubuntu' }}
+ run: bash ./dubbo-test/scripts/split-modules.sh ${{ env.JOB_COUNT }} '${{ github.workspace }}'
+ - name: Upload test list
+ uses: actions/upload-artifact@v3
+ if: ${{ matrix.os == 'ubuntu' }}
+ with:
+ name: unit-test-list
+ path: test/jobs
+ - name: Restore local zookeeper cache
+ uses: actions/cache/restore@v4
+ 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}
+ - name: Download zookeeper binary archive on ${{ matrix.os }}
+ if: steps.cache-zookeeper.outputs.cache-hit != 'true'
+ env:
+ MIRRORS: >-
+ https://archive.apache.org/dist
+ https://apache.website-solution.net
+ http://apache.stu.edu.tw
+ http://ftp.jaist.ac.jp/pub/apache
+ http://apache.mirror.cdnetworks.com
+ http://mirror.apache-kr.org/apache
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
+ cd '${{ github.workspace }}'
+ mkdir -p .tmp/zookeeper
+ for mirror in $MIRRORS; do
+ curl -sL "$mirror/zookeeper/zookeeper-${{ env.ZOOKEEPER_VERSION }}/apache-zookeeper-${{ env.ZOOKEEPER_VERSION }}-bin.tar.gz" -o .tmp/zookeeper/apache-zookeeper-bin.tar.gz && break
+ done
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.1"
- - 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"
+ ls -al .tmp/zookeeper/apache-zookeeper-bin.tar.gz
+ - name: Save local zookeeper cache
+ uses: actions/cache/save@v4
+ if: steps.cache-zookeeper.outputs.cache-hit != 'true'
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 ]
+ unit-test-job:
+ name: Unit Test (Job-${{matrix.job_id}}, Os-${{ matrix.os }}, Jdk-${{ matrix.jdk }}, Ser-${{ matrix.ser }})
+ needs: [ build-source, unit-test-prepare ]
+ runs-on: ${{ matrix.os }}-latest
+ timeout-minutes: 60
env:
+ ZOOKEEPER_VERSION: 3.6.4
DISABLE_FILE_SYSTEM_TEST: true
- DUBBO_DEFAULT_SERIALIZATION: fastjson2
MAVEN_SUREFIRE_ADD_OPENS: true
+ DUBBO_DEFAULT_SERIALIZATION: ${{ matrix.ser }}
+ strategy:
+ fail-fast: false
+ matrix:
+ os: [ ubuntu, windows ]
+ jdk: [ 8, 11 ]
+ ser: [ hessian2, fastjson2 ]
+ job_id: [ 1, 2 ]
steps:
- - uses: actions/checkout@v3
- - name: "Set up JDK ${{ matrix.jdk }}"
- uses: actions/setup-java@v3
+ - name: Checkout code
+ uses: actions/checkout@v4
+ with:
+ ref: ${{ env.DUBBO_BRANCH }}
+ - name: Set up JDK
+ uses: actions/setup-java@v4
with:
- distribution: 'zulu'
+ distribution: zulu
java-version: ${{ matrix.jdk }}
- - uses: actions/cache@v3
- name: "Cache local Maven repository"
+ - name: Restore local maven repository
+ uses: actions/cache/restore@v4
with:
path: ~/.m2/repository
- key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}-${{ github.run_id }}
+ key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
restore-keys: |
- ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
${{ runner.os }}-maven-
- - uses: actions/cache@v3
- name: "Cache zookeeper binary archive"
- id: "cache-zookeeper"
+ - name: Restore Dubbo cache
+ uses: actions/cache/restore@v4
+ with:
+ path: ~/.m2/repository/org/apache/dubbo
+ key: ${{ runner.os }}-dubbo-snapshot-${{ github.sha }}-${{ github.run_id }}
+ - name: Cache zookeeper binary archive
+ uses: actions/cache@v4
+ 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.workspa [...]
+ - name: Download test list
+ uses: actions/download-artifact@v3
+ with:
+ name: unit-test-list
+ path: test/jobs/
+ - name: Test with maven on ${{ matrix.os }}
+ timeout-minutes: 60
+ run: |
+ set -o pipefail
+ modules=$(cat test/jobs/test_modules_${{ matrix.job_id }}.txt)
+ ./mvnw ${{ env.MAVEN_ARGS }} clean test verify -Pjdk15ge-simple,'!jdk15ge','!demo',skip-spotless -pl "$modules" -DtrimStackTrace=false -Dmaven.test.skip=false -Drat.skip=false -Dflatten.skip=true -DembeddedZookeeperPath=${{ github.workspace }}/.tmp/zookeeper 2>&1 | tee >(grep -n -B 5 -A 200 "FAILURE! -- in" > test_errors.log)
+ - name: Print test error log
+ if: failure()
+ run: cat test_errors.log
samples-test-prepare:
+ name: Preparation for Sample Test
runs-on: ubuntu-latest
env:
- JOB_COUNT: 5
+ JOB_COUNT: 3
steps:
- - uses: actions/checkout@v3
+ - name: Checkout code
+ uses: actions/checkout@v4
with:
- repository: 'apache/dubbo-samples'
+ repository: oxsean/dubbo-samples
ref: master
- - name: "Prepare test list"
- run: |
- bash ./test/scripts/prepare-test.sh
- - name: "Upload test list"
+ - 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}})"
+ name: Samples Test (Job-${{matrix.job_id}}, Java-${{ matrix.jdk }})
+ needs: [ build-source, samples-test-prepare ]
runs-on: ubuntu-latest
- timeout-minutes: 90
+ timeout-minutes: 60
env:
- JAVA_VER: ${{matrix.jdk}}
- TEST_CASE_FILE: jobs/testjob_${{matrix.job_id}}.txt
+ 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]
+ job_id: [ 1, 2, 3 ]
steps:
- - uses: actions/checkout@v3
+ - name: Checkout code
+ uses: actions/checkout@v4
with:
- repository: 'apache/dubbo-samples'
+ repository: oxsean/dubbo-samples
ref: master
- - name: "Cache local Maven repository"
- uses: actions/cache@v3
+ - name: Restore local maven repository cache
+ uses: actions/cache/restore@v4
with:
path: ~/.m2/repository
- key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}-${{ github.run_id }}
+ key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
restore-keys: |
- ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
${{ runner.os }}-maven-
- - name: "Restore Dubbo cache"
- uses: actions/cache@v3
+ - name: Restore Dubbo cache
+ uses: actions/cache/restore@v4
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"
+ - 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
+ - name: Set up JDK ${{ matrix.jdk }}
+ uses: actions/setup-java@v4
with:
- java-version: ${{matrix.jdk}}
- - name: "Init Candidate Versions"
+ distribution: zulu
+ java-version: ${{ matrix.jdk }}
+ - name: Init Candidate Versions
run: |
- DUBBO_VERSION="${{needs.build-source.outputs.version}}"
+ 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"
+ - 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()
+ - name: Upload test result
uses: actions/upload-artifact@v3
with:
- name: samples-test-result-${{matrix.jdk}}
+ name: samples-test-result-${{ matrix.jdk }}
path: test/jobs/*-result*
samples-test-result:
- needs: [samples-test-job]
- if: always()
+ needs: [ samples-test-job ]
runs-on: ubuntu-latest
env:
- JAVA_VER: ${{matrix.jdk}}
+ JAVA_VER: ${{ matrix.jdk }}
strategy:
matrix:
jdk: [ 8, 11 ]
steps:
- - uses: actions/checkout@v3
+ - name: Checkout samples code
+ uses: actions/checkout@v4
with:
- repository: 'apache/dubbo-samples'
+ repository: oxsean/dubbo-samples
ref: master
- - name: "Download test result"
+ - name: Download test result
uses: actions/download-artifact@v3
with:
- name: samples-test-result-${{matrix.jdk}}
+ name: samples-test-result-${{ matrix.jdk }}
path: test/jobs/
- - name: "Merge test result"
+ - name: Merge test result
run: ./test/scripts/merge-test-results.sh
integration-test-prepare:
+ name: Preparation for Integration Test
runs-on: ubuntu-latest
env:
- JOB_COUNT: 5
+ JOB_COUNT: 3
steps:
- - uses: actions/checkout@v3
+ - name: Checkout integration code
+ uses: actions/checkout@v4
with:
- repository: 'apache/dubbo-integration-cases'
+ repository: oxsean/dubbo-integration-cases
ref: main
- - name: "Prepare test list"
- run: |
- bash ./test/scripts/prepare-test.sh
- - name: "Upload test list"
+ - 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}})"
+ name: Integration Test (Job-${{ matrix.job_id }}, Java-${{ matrix.jdk }})
+ needs: [ build-source, integration-test-prepare ]
runs-on: ubuntu-latest
- timeout-minutes: 90
+ timeout-minutes: 60
env:
- JAVA_VER: ${{matrix.jdk}}
- TEST_CASE_FILE: jobs/testjob_${{matrix.job_id}}.txt
+ 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]
+ job_id: [ 1, 2, 3 ]
steps:
- - uses: actions/checkout@v3
+ - name: Checkout integration code
+ uses: actions/checkout@v4
with:
- repository: 'apache/dubbo-integration-cases'
+ repository: oxsean/dubbo-integration-cases
ref: main
- - name: "Cache local Maven repository"
- uses: actions/cache@v3
+ - name: Restore local maven repository cache
+ uses: actions/cache/restore@v4
with:
path: ~/.m2/repository
- key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}-${{ github.run_id }}
+ key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
restore-keys: |
- ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
${{ runner.os }}-maven-
- - name: "Restore Dubbo cache"
- uses: actions/cache@v3
+ - name: Restore Dubbo cache
+ uses: actions/cache/restore@v4
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"
+ - 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
+ - name: Set up JDK ${{ matrix.jdk }}
+ uses: actions/setup-java@v4
with:
- java-version: ${{matrix.jdk}}
- - name: "Init Candidate Versions"
+ distribution: zulu
+ java-version: ${{ matrix.jdk }}
+ - name: Init Candidate Versions
run: |
- DUBBO_VERSION="${{needs.build-source.outputs.version}}"
+ 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"
+ - 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()
+ - name: Upload test result
uses: actions/upload-artifact@v3
with:
- name: integration-test-result-${{matrix.jdk}}
+ name: integration-test-result-${{ matrix.jdk }}
path: test/jobs/*-result*
integration-test-result:
- needs: [integration-test-job]
- if: always()
+ needs: [ integration-test-job ]
runs-on: ubuntu-latest
env:
- JAVA_VER: ${{matrix.jdk}}
+ JAVA_VER: ${{ matrix.jdk }}
strategy:
matrix:
jdk: [ 8, 11 ]
steps:
- - uses: actions/checkout@v3
+ - name: Checkout integration code
+ uses: actions/checkout@v4
with:
- repository: 'apache/dubbo-integration-cases'
+ repository: oxsean/dubbo-integration-cases
ref: main
- - name: "Download test result"
+ - name: Download test result
uses: actions/download-artifact@v3
with:
- name: integration-test-result-${{matrix.jdk}}
+ name: integration-test-result-${{ matrix.jdk }}
path: test/jobs/
- - name: "Merge test result"
+ - name: Merge test result
run: ./test/scripts/merge-test-results.sh
error-code-inspecting:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v3
+ - name: Checkout code
+ uses: actions/checkout@v4
with:
- ref: "3.1"
- path: "./dubbo"
-
- - uses: actions/checkout@v3
+ ref: ${{ env.DUBBO_BRANCH }}
+ path: ./dubbo
+ - name: Checkout code
+ uses: actions/checkout@v4
with:
- repository: 'apache/dubbo-test-tools'
+ repository: apache/dubbo-test-tools
ref: main
- path: "./dubbo-test-tools"
-
- - name: "Set up JDK 21"
- uses: actions/setup-java@v3
+ path: ./dubbo-test-tools
+ - name: Set up JDK 21
+ uses: actions/setup-java@v4
with:
- distribution: 'zulu'
+ distribution: zulu
java-version: 21
-
- - name: "Compile Dubbo (Linux)"
+ - name: Restore local maven repository cache
+ uses: actions/cache/restore@v4
+ id: cache-maven-repository
+ with:
+ path: ~/.m2/repository
+ key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
+ restore-keys: |
+ ${{ runner.os }}-maven-
+ - 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"
+ ./mvnw ${{ env.MAVEN_ARGS }} -T 2C clean install -P '!demo',skip-spotless -Dmaven.test.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"
+ ../mvnw ${{ env.MAVEN_ARGS }} -T 2C package exec:java -Ddubbo.eci.report-as-error=${DUBBO_ECI_REPORT_AS_ERROR} -Dmaven.test.skip=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"
+ 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
+ - name: Checkout code
+ uses: actions/checkout@v4
with:
- ref: "3.1"
- path: "./dubbo"
-
- - name: "Setup GraalVM environment"
+ ref: ${{ env.DUBBO_BRANCH }}
+ path: ./dubbo
+ - name: Setup GraalVM environment
uses: graalvm/setup-graalvm@v1
with:
- version: '22.3.0'
- java-version: '17'
- components: 'native-image'
+ version: 22.3.0
+ java-version: 17
+ components: native-image
github-token: ${{ secrets.GITHUB_TOKEN }}
- native-image-job-reports: 'true'
-
- - name: "Setup Zookeeper environment"
+ native-image-job-reports: true
+ - name: Setup Zookeeper environment
run: |
wget https://dlcdn.apache.org/zookeeper/zookeeper-3.8.4/apache-zookeeper-3.8.4-bin.tar.gz
tar -zxvf apache-zookeeper-3.8.4-bin.tar.gz
mv apache-zookeeper-3.8.4-bin/conf/zoo_sample.cfg apache-zookeeper-3.8.4-bin/conf/zoo.cfg
apache-zookeeper-3.8.4-bin/bin/zkServer.sh start
-
- - name: "Check environment"
+ - name: Check environment
run: |
java --version
native-image --version
-
- - name: "Compile Dubbo (Linux)"
+ - name: Restore local maven repository cache
+ uses: actions/cache/restore@v4
+ with:
+ path: ~/.m2/repository
+ key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
+ restore-keys: |
+ ${{ runner.os }}-maven-
+ - 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)"
+ ./mvnw ${{ env.MAVEN_ARGS }} -T 2C clean install -P '!demo',skip-spotless -Dmaven.test.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
+ cd ${{ github.workspace }}/dubbo/dubbo-demo/dubbo-demo-native/dubbo-demo-native-interface
+ MVNW="${{ github.workspace }}/dubbo/mvnw ${{ env.MAVEN_ARGS }} -T 2C -Dmaven.test.skip=true"
+ $MVNW clean install
+ cd ../dubbo-demo-native-provider
+ $MVNW clean package -P native 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
+ cd ../dubbo-demo-native-consumer
+ $MVNW clean package -P native native:compile
./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 e3b3d95c8d..8d1c346d18 100644
--- a/.github/workflows/build-and-test-scheduled-3.2.yml
+++ b/.github/workflows/build-and-test-scheduled-3.2.yml
@@ -2,75 +2,116 @@ name: Build and Test Scheduled On 3.2
on:
schedule:
- - cron: '0 0/6 * * *'
+ - cron: 0 0/6 * * *
workflow_dispatch:
permissions:
contents: read
+defaults:
+ run:
+ shell: bash
+
env:
+ DUBBO_BRANCH: 3.2
FORK_COUNT: 2
FAIL_FAST: 0
SHOW_ERROR_DETAIL: 1
- #multi-version size limit
VERSIONS_LIMIT: 4
ALL_REMOTE_VERSION: true
- CANDIDATE_VERSIONS: '
+ JACOCO_ENABLE: false
+ CANDIDATE_VERSIONS: >-
spring.version:5.3.24;
spring-boot.version:2.7.6;
- '
+ MAVEN_OPTS: >-
+ -XX:+UseG1GC
+ -XX:InitiatingHeapOccupancyPercent=45
+ -XX:+UseStringDeduplication
+ -XX:-TieredCompilation
+ -XX:TieredStopAtLevel=1
+ -Dmaven.javadoc.skip=true
+ -Dmaven.wagon.http.retryHandler.count=5
+ -Dmaven.wagon.httpconnectionManager.ttlSeconds=120
+ MAVEN_ARGS: >-
+ -e
+ --batch-mode
+ --no-snapshot-updates
+ --no-transfer-progress
+ --fail-fast
jobs:
- license:
+ check-license:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v3
+ - name: Checkout code
+ uses: actions/checkout@v4
with:
- ref: "3.2"
+ ref: ${{ env.DUBBO_BRANCH }}
- name: Check License
uses: apache/skywalking-eyes@main
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+
build-source:
- runs-on: ubuntu-latest
+ name: Build Dubbo on ${{ matrix.os }}
+ runs-on: ${{ matrix.os }}-latest
+ strategy:
+ matrix:
+ os: [ ubuntu, windows ]
outputs:
version: ${{ steps.dubbo-version.outputs.version }}
steps:
- - uses: actions/checkout@v3
+ - name: Checkout code
+ uses: actions/checkout@v4
with:
- ref: "3.2"
+ ref: ${{ env.DUBBO_BRANCH }}
path: dubbo
- - uses: actions/setup-java@v3
+ - name: Set up JDK
+ uses: actions/setup-java@v4
with:
- distribution: 'zulu'
+ distribution: zulu
java-version: 8
- - uses: actions/cache@v3
- name: "Cache local Maven repository"
+ - name: Restore local maven repository cache
+ uses: actions/cache/restore@v4
+ id: cache-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
+ key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
+ - name: Restore common local maven repository cache
+ uses: actions/cache/restore@v4
+ if: steps.cache-maven-repository.outputs.cache-hit != 'true'
with:
- path: ~/.m2/repository/org/apache/dubbo
- key: ${{ runner.os }}-dubbo-snapshot-${{ github.sha }}-${{ github.run_id }}
- - name: "Build Dubbo with Maven"
+ path: ~/.m2/repository
+ key: ${{ runner.os }}-maven-
+ - name: Clean dubbo cache
+ run: rm -rf ~/.m2/repository/org/apache/dubbo
+ - 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"
+ ./mvnw ${{ env.MAVEN_ARGS }} -T 2C clean install -Psources,'!demo',skip-spotless,checkstyle -Dmaven.test.skip=true -Dcheckstyle_unix.skip=${{ matrix.os == 'windows' && 'true' || 'false' }}
+ - name: Save dubbo cache
+ uses: actions/cache/save@v4
+ with:
+ path: ~/.m2/repository/org/apache/dubbo
+ key: ${{ runner.os }}-dubbo-snapshot-${{ github.sha }}-${{ github.run_id }}
+ - name: Clean dubbo cache
+ run: rm -rf ~/.m2/repository/org/apache/dubbo
+ - name: Save local maven repository cache
+ uses: actions/cache/save@v4
+ if: steps.cache-maven-repository.outputs.cache-hit != 'true'
+ with:
+ path: ~/.m2/repository
+ key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
+ - 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()
+ - name: Upload checkstyle file if failure
uses: actions/upload-artifact@v3
+ if: failure()
with:
- name: "checkstyle-file"
+ name: checkstyle-file
path: ${{ github.workspace }}/checkstyle.zip
- - name: "Calculate Dubbo Version"
+ - name: Calculate Dubbo Version
id: dubbo-version
run: |
REVISION=`awk '/<revision>[^<]+<\/revision>/{gsub(/<revision>|<\/revision>/,"",$1);print $1;exit;}' ./dubbo/pom.xml`
@@ -78,425 +119,400 @@ jobs:
echo "dubbo version: $REVISION"
unit-test-prepare:
- name: " Preparation for Unit Test On ${{ matrix.os }}"
- runs-on: ${{ matrix.os }}
+ name: Preparation for Unit Test on ${{ matrix.os }}
+ runs-on: ${{ matrix.os }}-latest
+ env:
+ JOB_COUNT: 2
+ ZOOKEEPER_VERSION: 3.6.4
strategy:
- fail-fast: false
matrix:
- os: [ ubuntu-latest, windows-latest ]
- env:
- ZOOKEEPER_VERSION: 3.6.3
+ os: [ ubuntu, windows ]
steps:
- - uses: actions/cache@v3
- name: "Cache zookeeper binary archive"
- id: "cache-zookeeper"
+ - name: Checkout code
+ uses: actions/checkout@v4
+ with:
+ ref: ${{ env.DUBBO_BRANCH }}
+ - name: Prepare test list
+ if: ${{ matrix.os == 'ubuntu' }}
+ run: bash ./dubbo-test/scripts/split-modules.sh ${{ env.JOB_COUNT }} '${{ github.workspace }}'
+ - name: Upload test list
+ uses: actions/upload-artifact@v3
+ if: ${{ matrix.os == 'ubuntu' }}
+ with:
+ name: unit-test-list
+ path: test/jobs
+ - name: Restore local zookeeper cache
+ uses: actions/cache/restore@v4
+ 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}
+ - name: Download zookeeper binary archive on ${{ matrix.os }}
+ if: steps.cache-zookeeper.outputs.cache-hit != 'true'
+ env:
+ MIRRORS: >-
+ https://archive.apache.org/dist
+ https://apache.website-solution.net
+ http://apache.stu.edu.tw
+ http://ftp.jaist.ac.jp/pub/apache
+ http://apache.mirror.cdnetworks.com
+ http://mirror.apache-kr.org/apache
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
+ cd '${{ github.workspace }}'
+ mkdir -p .tmp/zookeeper
+ for mirror in $MIRRORS; do
+ curl -sL "$mirror/zookeeper/zookeeper-${{ env.ZOOKEEPER_VERSION }}/apache-zookeeper-${{ env.ZOOKEEPER_VERSION }}-bin.tar.gz" -o .tmp/zookeeper/apache-zookeeper-bin.tar.gz && break
+ done
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.2"
- - 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"
+ ls -al .tmp/zookeeper/apache-zookeeper-bin.tar.gz
+ - name: Save local zookeeper cache
+ uses: actions/cache/save@v4
+ if: steps.cache-zookeeper.outputs.cache-hit != 'true'
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 }}
+ unit-test-job:
+ name: Unit Test (Job-${{matrix.job_id}}, Os-${{ matrix.os }}, Jdk-${{ matrix.jdk }}, Ser-${{ matrix.ser }})
+ needs: [ build-source, unit-test-prepare ]
+ runs-on: ${{ matrix.os }}-latest
+ timeout-minutes: 60
+ env:
+ ZOOKEEPER_VERSION: 3.6.4
+ DISABLE_FILE_SYSTEM_TEST: true
+ MAVEN_SUREFIRE_ADD_OPENS: true
+ DUBBO_DEFAULT_SERIALIZATION: ${{ matrix.ser }}
strategy:
fail-fast: false
matrix:
- os: [ ubuntu-latest, windows-latest ]
+ os: [ ubuntu, windows ]
jdk: [ 8, 11, 17, 21 ]
- env:
- DISABLE_FILE_SYSTEM_TEST: true
- DUBBO_DEFAULT_SERIALIZATION: fastjson2
- MAVEN_SUREFIRE_ADD_OPENS: true
+ ser: [ hessian2, fastjson2 ]
+ job_id: [ 1, 2 ]
steps:
- - uses: actions/checkout@v3
- - name: "Set up JDK ${{ matrix.jdk }}"
- uses: actions/setup-java@v3
+ - name: Checkout code
+ uses: actions/checkout@v4
+ with:
+ ref: ${{ env.DUBBO_BRANCH }}
+ - name: Set up JDK
+ uses: actions/setup-java@v4
with:
- distribution: 'zulu'
+ distribution: zulu
java-version: ${{ matrix.jdk }}
- - uses: actions/cache@v3
- name: "Cache local Maven repository"
+ - name: Restore local maven repository
+ uses: actions/cache/restore@v4
with:
path: ~/.m2/repository
- key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}-${{ github.run_id }}
+ key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
restore-keys: |
- ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
${{ runner.os }}-maven-
- - uses: actions/cache@v3
- name: "Cache zookeeper binary archive"
- id: "cache-zookeeper"
+ - name: Restore Dubbo cache
+ uses: actions/cache/restore@v4
+ with:
+ path: ~/.m2/repository/org/apache/dubbo
+ key: ${{ runner.os }}-dubbo-snapshot-${{ github.sha }}-${{ github.run_id }}
+ - name: Cache zookeeper binary archive
+ uses: actions/cache@v4
+ 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.workspa [...]
+ - name: Download test list
+ uses: actions/download-artifact@v3
+ with:
+ name: unit-test-list
+ path: test/jobs/
+ - name: Test with maven on ${{ matrix.os }}
+ timeout-minutes: 60
+ run: |
+ set -o pipefail
+ modules=$(cat test/jobs/test_modules_${{ matrix.job_id }}.txt)
+ ./mvnw ${{ env.MAVEN_ARGS }} clean test verify -Pjdk15ge-simple,'!jdk15ge','!demo',skip-spotless -pl "$modules" -DtrimStackTrace=false -Dmaven.test.skip=false -Drat.skip=false -Dflatten.skip=true -DembeddedZookeeperPath=${{ github.workspace }}/.tmp/zookeeper 2>&1 | tee >(grep -n -B 5 -A 200 "FAILURE! -- in" > test_errors.log)
+ - name: Print test error log
+ if: failure()
+ run: cat test_errors.log
samples-test-prepare:
+ name: Preparation for Sample Test
runs-on: ubuntu-latest
env:
- JOB_COUNT: 5
+ JOB_COUNT: 3
steps:
- - uses: actions/checkout@v3
+ - name: Checkout code
+ uses: actions/checkout@v4
with:
- repository: 'apache/dubbo-samples'
+ repository: oxsean/dubbo-samples
ref: master
- - name: "Prepare test list"
- run: |
- bash ./test/scripts/prepare-test.sh
- - name: "Upload test list"
+ - 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}})"
+ name: Samples Test (Job-${{matrix.job_id}}, Java-${{ matrix.jdk }})
+ needs: [ build-source, samples-test-prepare ]
runs-on: ubuntu-latest
- timeout-minutes: 90
+ timeout-minutes: 60
env:
- JAVA_VER: ${{matrix.jdk}}
- TEST_CASE_FILE: jobs/testjob_${{matrix.job_id}}.txt
+ 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]
+ job_id: [ 1, 2, 3 ]
steps:
- - uses: actions/checkout@v3
+ - name: Checkout code
+ uses: actions/checkout@v4
with:
- repository: 'apache/dubbo-samples'
+ repository: oxsean/dubbo-samples
ref: master
- - name: "Cache local Maven repository"
- uses: actions/cache@v3
+ - name: Restore local maven repository cache
+ uses: actions/cache/restore@v4
with:
path: ~/.m2/repository
- key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}-${{ github.run_id }}
+ key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
restore-keys: |
- ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
${{ runner.os }}-maven-
- - name: "Restore Dubbo cache"
- uses: actions/cache@v3
+ - name: Restore Dubbo cache
+ uses: actions/cache/restore@v4
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"
+ - 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
+ - name: Set up JDK ${{ matrix.jdk }}
+ uses: actions/setup-java@v4
with:
- java-version: ${{matrix.jdk}}
- - name: "Init Candidate Versions"
+ distribution: zulu
+ java-version: ${{ matrix.jdk }}
+ - name: Init Candidate Versions
run: |
- DUBBO_VERSION="${{needs.build-source.outputs.version}}"
+ 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"
+ - 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()
+ - name: Upload test result
uses: actions/upload-artifact@v3
with:
- name: samples-test-result-${{matrix.jdk}}
+ name: samples-test-result-${{ matrix.jdk }}
path: test/jobs/*-result*
samples-test-result:
- needs: [samples-test-job]
- if: always()
+ needs: [ samples-test-job ]
runs-on: ubuntu-latest
env:
- JAVA_VER: ${{matrix.jdk}}
+ JAVA_VER: ${{ matrix.jdk }}
strategy:
matrix:
jdk: [ 8, 11, 17, 21 ]
steps:
- - uses: actions/checkout@v3
+ - name: Checkout samples code
+ uses: actions/checkout@v4
with:
- repository: 'apache/dubbo-samples'
+ repository: oxsean/dubbo-samples
ref: master
- - name: "Download test result"
+ - name: Download test result
uses: actions/download-artifact@v3
with:
- name: samples-test-result-${{matrix.jdk}}
+ name: samples-test-result-${{ matrix.jdk }}
path: test/jobs/
- - name: "Merge test result"
+ - name: Merge test result
run: ./test/scripts/merge-test-results.sh
integration-test-prepare:
+ name: Preparation for Integration Test
runs-on: ubuntu-latest
env:
- JOB_COUNT: 5
+ JOB_COUNT: 3
steps:
- - uses: actions/checkout@v3
+ - name: Checkout integration code
+ uses: actions/checkout@v4
with:
- repository: 'apache/dubbo-integration-cases'
+ repository: oxsean/dubbo-integration-cases
ref: main
- - name: "Prepare test list"
- run: |
- bash ./test/scripts/prepare-test.sh
- - name: "Upload test list"
+ - 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}})"
+ name: Integration Test (Job-${{ matrix.job_id }}, Java-${{ matrix.jdk }})
+ needs: [ build-source, integration-test-prepare ]
runs-on: ubuntu-latest
- timeout-minutes: 90
+ timeout-minutes: 60
env:
- JAVA_VER: ${{matrix.jdk}}
- TEST_CASE_FILE: jobs/testjob_${{matrix.job_id}}.txt
+ 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]
+ job_id: [ 1, 2, 3 ]
steps:
- - uses: actions/checkout@v3
+ - name: Checkout integration code
+ uses: actions/checkout@v4
with:
- repository: 'apache/dubbo-integration-cases'
+ repository: oxsean/dubbo-integration-cases
ref: main
- - name: "Cache local Maven repository"
- uses: actions/cache@v3
+ - name: Restore local maven repository cache
+ uses: actions/cache/restore@v4
with:
path: ~/.m2/repository
- key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}-${{ github.run_id }}
+ key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
restore-keys: |
- ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
${{ runner.os }}-maven-
- - name: "Restore Dubbo cache"
- uses: actions/cache@v3
+ - name: Restore Dubbo cache
+ uses: actions/cache/restore@v4
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"
+ - 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
+ - name: Set up JDK ${{ matrix.jdk }}
+ uses: actions/setup-java@v4
with:
- java-version: ${{matrix.jdk}}
- - name: "Init Candidate Versions"
+ distribution: zulu
+ java-version: ${{ matrix.jdk }}
+ - name: Init Candidate Versions
run: |
- DUBBO_VERSION="${{needs.build-source.outputs.version}}"
+ 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"
+ - 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()
+ - name: Upload test result
uses: actions/upload-artifact@v3
with:
- name: integration-test-result-${{matrix.jdk}}
+ name: integration-test-result-${{ matrix.jdk }}
path: test/jobs/*-result*
integration-test-result:
- needs: [integration-test-job]
- if: always()
+ needs: [ integration-test-job ]
runs-on: ubuntu-latest
env:
- JAVA_VER: ${{matrix.jdk}}
+ JAVA_VER: ${{ matrix.jdk }}
strategy:
matrix:
jdk: [ 8, 11, 17, 21 ]
steps:
- - uses: actions/checkout@v3
+ - name: Checkout integration code
+ uses: actions/checkout@v4
with:
- repository: 'apache/dubbo-integration-cases'
+ repository: oxsean/dubbo-integration-cases
ref: main
- - name: "Download test result"
+ - name: Download test result
uses: actions/download-artifact@v3
with:
- name: integration-test-result-${{matrix.jdk}}
+ name: integration-test-result-${{ matrix.jdk }}
path: test/jobs/
- - name: "Merge test result"
+ - name: Merge test result
run: ./test/scripts/merge-test-results.sh
error-code-inspecting:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v3
+ - name: Checkout code
+ uses: actions/checkout@v4
with:
- ref: "3.2"
- path: "./dubbo"
-
- - uses: actions/checkout@v3
+ ref: ${{ env.DUBBO_BRANCH }}
+ path: ./dubbo
+ - name: Checkout code
+ uses: actions/checkout@v4
with:
- repository: 'apache/dubbo-test-tools'
+ repository: apache/dubbo-test-tools
ref: main
- path: "./dubbo-test-tools"
-
- - name: "Set up JDK 21"
- uses: actions/setup-java@v3
+ path: ./dubbo-test-tools
+ - name: Set up JDK 21
+ uses: actions/setup-java@v4
with:
- distribution: 'zulu'
+ distribution: zulu
java-version: 21
-
- - name: "Compile Dubbo (Linux)"
+ - name: Restore local maven repository cache
+ uses: actions/cache/restore@v4
+ id: cache-maven-repository
+ with:
+ path: ~/.m2/repository
+ key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
+ restore-keys: |
+ ${{ runner.os }}-maven-
+ - 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"
+ ./mvnw ${{ env.MAVEN_ARGS }} -T 2C clean install -P '!demo',skip-spotless -Dmaven.test.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"
+ ../mvnw ${{ env.MAVEN_ARGS }} -T 2C package exec:java -Ddubbo.eci.report-as-error=${DUBBO_ECI_REPORT_AS_ERROR} -Dmaven.test.skip=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"
+ 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
+ - name: Checkout code
+ uses: actions/checkout@v4
with:
- ref: "3.2"
- path: "./dubbo"
-
- - name: "Setup GraalVM environment"
+ ref: ${{ env.DUBBO_BRANCH }}
+ path: ./dubbo
+ - name: Setup GraalVM environment
uses: graalvm/setup-graalvm@v1
with:
- version: '22.3.0'
- java-version: '17'
- components: 'native-image'
+ version: 22.3.0
+ java-version: 17
+ components: native-image
github-token: ${{ secrets.GITHUB_TOKEN }}
- native-image-job-reports: 'true'
-
- - name: "Setup Zookeeper environment"
+ native-image-job-reports: true
+ - name: Setup Zookeeper environment
run: |
wget https://dlcdn.apache.org/zookeeper/zookeeper-3.8.4/apache-zookeeper-3.8.4-bin.tar.gz
tar -zxvf apache-zookeeper-3.8.4-bin.tar.gz
mv apache-zookeeper-3.8.4-bin/conf/zoo_sample.cfg apache-zookeeper-3.8.4-bin/conf/zoo.cfg
apache-zookeeper-3.8.4-bin/bin/zkServer.sh start
-
- - name: "Check environment"
+ - name: Check environment
run: |
java --version
native-image --version
-
- - name: "Compile Dubbo (Linux)"
+ - name: Restore local maven repository cache
+ uses: actions/cache/restore@v4
+ with:
+ path: ~/.m2/repository
+ key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
+ restore-keys: |
+ ${{ runner.os }}-maven-
+ - 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)"
+ ./mvnw ${{ env.MAVEN_ARGS }} -T 2C clean install -P '!demo',skip-spotless -Dmaven.test.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
+ cd ${{ github.workspace }}/dubbo/dubbo-demo/dubbo-demo-native/dubbo-demo-native-interface
+ MVNW="${{ github.workspace }}/dubbo/mvnw ${{ env.MAVEN_ARGS }} -T 2C -Dmaven.test.skip=true"
+ $MVNW clean install
+ cd ../dubbo-demo-native-provider
+ $MVNW clean package -P native 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
+ cd ../dubbo-demo-native-consumer
+ $MVNW clean package -P native native:compile
./target/dubbo-demo-native-consumer
diff --git a/.github/workflows/build-and-test-scheduled-3.3.yml b/.github/workflows/build-and-test-scheduled-3.3.yml
index 3240efb8f8..aca04d2402 100644
--- a/.github/workflows/build-and-test-scheduled-3.3.yml
+++ b/.github/workflows/build-and-test-scheduled-3.3.yml
@@ -2,75 +2,116 @@ name: Build and Test Scheduled On 3.3
on:
schedule:
- - cron: '0 0/6 * * *'
+ - cron: 0 0/6 * * *
workflow_dispatch:
permissions:
contents: read
+defaults:
+ run:
+ shell: bash
+
env:
+ DUBBO_BRANCH: split-unit-test
FORK_COUNT: 2
FAIL_FAST: 0
SHOW_ERROR_DETAIL: 1
- #multi-version size limit
VERSIONS_LIMIT: 4
ALL_REMOTE_VERSION: true
- CANDIDATE_VERSIONS: '
+ JACOCO_ENABLE: false
+ CANDIDATE_VERSIONS: >-
spring.version:5.3.24;
spring-boot.version:2.7.6;
- '
+ MAVEN_OPTS: >-
+ -XX:+UseG1GC
+ -XX:InitiatingHeapOccupancyPercent=45
+ -XX:+UseStringDeduplication
+ -XX:-TieredCompilation
+ -XX:TieredStopAtLevel=1
+ -Dmaven.javadoc.skip=true
+ -Dmaven.wagon.http.retryHandler.count=5
+ -Dmaven.wagon.httpconnectionManager.ttlSeconds=120
+ MAVEN_ARGS: >-
+ -e
+ --batch-mode
+ --no-snapshot-updates
+ --no-transfer-progress
+ --fail-fast
jobs:
- license:
+ check-license:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v3
+ - name: Checkout code
+ uses: actions/checkout@v4
with:
- ref: "3.3"
+ ref: ${{ env.DUBBO_BRANCH }}
- name: Check License
uses: apache/skywalking-eyes@main
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+
build-source:
- runs-on: ubuntu-latest
+ name: Build Dubbo on ${{ matrix.os }}
+ runs-on: ${{ matrix.os }}-latest
+ strategy:
+ matrix:
+ os: [ ubuntu, windows ]
outputs:
version: ${{ steps.dubbo-version.outputs.version }}
steps:
- - uses: actions/checkout@v3
+ - name: Checkout code
+ uses: actions/checkout@v4
with:
- ref: "3.3"
+ ref: ${{ env.DUBBO_BRANCH }}
path: dubbo
- - uses: actions/setup-java@v3
+ - name: Set up JDK
+ uses: actions/setup-java@v4
with:
- distribution: 'zulu'
+ distribution: zulu
java-version: 21
- - uses: actions/cache@v3
- name: "Cache local Maven repository"
+ - name: Restore local maven repository cache
+ uses: actions/cache/restore@v4
+ id: cache-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
+ key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
+ - name: Restore common local maven repository cache
+ uses: actions/cache/restore@v4
+ if: steps.cache-maven-repository.outputs.cache-hit != 'true'
with:
- path: ~/.m2/repository/org/apache/dubbo
- key: ${{ runner.os }}-dubbo-snapshot-${{ github.sha }}-${{ github.run_id }}
- - name: "Build Dubbo with Maven"
+ path: ~/.m2/repository
+ key: ${{ runner.os }}-maven-
+ - name: Clean dubbo cache
+ run: rm -rf ~/.m2/repository/org/apache/dubbo
+ - 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"
+ ./mvnw ${{ env.MAVEN_ARGS }} -T 2C clean install -Psources,'!demo',skip-spotless,checkstyle -Dmaven.test.skip=true -Dcheckstyle_unix.skip=${{ matrix.os == 'windows' && 'true' || 'false' }}
+ - name: Save dubbo cache
+ uses: actions/cache/save@v4
+ with:
+ path: ~/.m2/repository/org/apache/dubbo
+ key: ${{ runner.os }}-dubbo-snapshot-${{ github.sha }}-${{ github.run_id }}
+ - name: Clean dubbo cache
+ run: rm -rf ~/.m2/repository/org/apache/dubbo
+ - name: Save local maven repository cache
+ uses: actions/cache/save@v4
+ if: steps.cache-maven-repository.outputs.cache-hit != 'true'
+ with:
+ path: ~/.m2/repository
+ key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
+ - 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()
+ - name: Upload checkstyle file if failure
uses: actions/upload-artifact@v3
+ if: failure()
with:
- name: "checkstyle-file"
+ name: checkstyle-file
path: ${{ github.workspace }}/checkstyle.zip
- - name: "Calculate Dubbo Version"
+ - name: Calculate Dubbo Version
id: dubbo-version
run: |
REVISION=`awk '/<revision>[^<]+<\/revision>/{gsub(/<revision>|<\/revision>/,"",$1);print $1;exit;}' ./dubbo/pom.xml`
@@ -78,427 +119,399 @@ jobs:
echo "dubbo version: $REVISION"
unit-test-prepare:
- name: " Preparation for Unit Test On ${{ matrix.os }}"
- runs-on: ${{ matrix.os }}
+ name: Preparation for Unit Test on ${{ matrix.os }}
+ runs-on: ${{ matrix.os }}-latest
+ env:
+ JOB_COUNT: 2
+ ZOOKEEPER_VERSION: 3.6.4
strategy:
- fail-fast: false
matrix:
- os: [ ubuntu-latest, windows-latest ]
- env:
- ZOOKEEPER_VERSION: 3.6.3
+ os: [ ubuntu, windows ]
steps:
- - uses: actions/cache@v3
- name: "Cache zookeeper binary archive"
- id: "cache-zookeeper"
+ - name: Checkout code
+ uses: actions/checkout@v4
+ with:
+ ref: ${{ env.DUBBO_BRANCH }}
+ - name: Prepare test list
+ if: ${{ matrix.os == 'ubuntu' }}
+ run: bash ./dubbo-test/scripts/split-modules.sh ${{ env.JOB_COUNT }} '${{ github.workspace }}'
+ - name: Upload test list
+ uses: actions/upload-artifact@v3
+ if: ${{ matrix.os == 'ubuntu' }}
+ with:
+ name: unit-test-list
+ path: test/jobs
+ - name: Restore local zookeeper cache
+ uses: actions/cache/restore@v4
+ 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}
+ - name: Download zookeeper binary archive on ${{ matrix.os }}
+ if: steps.cache-zookeeper.outputs.cache-hit != 'true'
+ env:
+ MIRRORS: >-
+ https://archive.apache.org/dist
+ https://apache.website-solution.net
+ http://apache.stu.edu.tw
+ http://ftp.jaist.ac.jp/pub/apache
+ http://apache.mirror.cdnetworks.com
+ http://mirror.apache-kr.org/apache
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
+ cd '${{ github.workspace }}'
+ mkdir -p .tmp/zookeeper
+ for mirror in $MIRRORS; do
+ curl -sL "$mirror/zookeeper/zookeeper-${{ env.ZOOKEEPER_VERSION }}/apache-zookeeper-${{ env.ZOOKEEPER_VERSION }}-bin.tar.gz" -o .tmp/zookeeper/apache-zookeeper-bin.tar.gz && break
+ done
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"
+ ls -al .tmp/zookeeper/apache-zookeeper-bin.tar.gz
+ - name: Save local zookeeper cache
+ uses: actions/cache/save@v4
+ if: steps.cache-zookeeper.outputs.cache-hit != 'true'
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 }}
+ unit-test-job:
+ name: Unit Test (Job-${{matrix.job_id}}, Os-${{ matrix.os }}, Jdk-${{ matrix.jdk }}, Ser-${{ matrix.ser }})
+ needs: [ build-source, unit-test-prepare ]
+ runs-on: ${{ matrix.os }}-latest
+ timeout-minutes: 60
+ env:
+ ZOOKEEPER_VERSION: 3.6.4
+ DISABLE_FILE_SYSTEM_TEST: true
+ MAVEN_SUREFIRE_ADD_OPENS: true
+ DUBBO_DEFAULT_SERIALIZATION: ${{ matrix.ser }}
strategy:
fail-fast: false
matrix:
- os: [ ubuntu-latest, windows-latest ]
+ os: [ ubuntu, windows ]
jdk: [ 8, 11, 17, 21 ]
- env:
- DISABLE_FILE_SYSTEM_TEST: true
- DUBBO_DEFAULT_SERIALIZATION: fastjson2
- MAVEN_SUREFIRE_ADD_OPENS: true
+ ser: [ hessian2, fastjson2 ]
+ job_id: [ 1, 2 ]
steps:
- - uses: actions/checkout@v3
- - name: "Set up JDK ${{ matrix.jdk }}"
- uses: actions/setup-java@v3
+ - name: Checkout code
+ uses: actions/checkout@v4
+ with:
+ ref: ${{ env.DUBBO_BRANCH }}
+ - name: Set up JDK
+ uses: actions/setup-java@v4
with:
- distribution: 'zulu'
+ distribution: zulu
java-version: ${{ matrix.jdk }}
- - uses: actions/cache@v3
- name: "Cache local Maven repository"
+ - name: Restore local maven repository
+ uses: actions/cache/restore@v4
with:
path: ~/.m2/repository
- key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}-${{ github.run_id }}
+ key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
restore-keys: |
- ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
${{ runner.os }}-maven-
- - uses: actions/cache@v3
- name: "Cache zookeeper binary archive"
- id: "cache-zookeeper"
+ - name: Restore Dubbo cache
+ uses: actions/cache/restore@v4
+ with:
+ path: ~/.m2/repository/org/apache/dubbo
+ key: ${{ runner.os }}-dubbo-snapshot-${{ github.sha }}-${{ github.run_id }}
+ - name: Cache zookeeper binary archive
+ uses: actions/cache@v4
+ 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.workspa [...]
+ - name: Download test list
+ uses: actions/download-artifact@v3
+ with:
+ name: unit-test-list
+ path: test/jobs/
+ - name: Test with maven on ${{ matrix.os }}
+ timeout-minutes: 60
+ run: |
+ set -o pipefail
+ modules=$(cat test/jobs/test_modules_${{ matrix.job_id }}.txt)
+ ./mvnw ${{ env.MAVEN_ARGS }} clean test verify -Pjdk15ge-simple,'!jdk15ge','!demo',skip-spotless -pl "$modules" -DtrimStackTrace=false -Dmaven.test.skip=false -Drat.skip=false -Dflatten.skip=true -DembeddedZookeeperPath=${{ github.workspace }}/.tmp/zookeeper 2>&1 | tee >(grep -n -B 5 -A 200 "FAILURE! -- in" > test_errors.log)
+ - name: Print test error log
+ if: failure()
+ run: cat test_errors.log
samples-test-prepare:
+ name: Preparation for Sample Test
runs-on: ubuntu-latest
env:
- JOB_COUNT: 5
+ JOB_COUNT: 3
steps:
- - uses: actions/checkout@v3
+ - name: Checkout code
+ uses: actions/checkout@v4
with:
- repository: 'apache/dubbo-samples'
+ repository: oxsean/dubbo-samples
ref: master
- - name: "Prepare test list"
- run: |
- bash ./test/scripts/prepare-test.sh
- - name: "Upload test list"
+ - 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}})"
+ name: Samples Test (Job-${{matrix.job_id}}, Java-${{ matrix.jdk }})
+ needs: [ build-source, samples-test-prepare ]
runs-on: ubuntu-latest
- timeout-minutes: 90
+ timeout-minutes: 60
env:
- JAVA_VER: ${{matrix.jdk}}
- TEST_CASE_FILE: jobs/testjob_${{matrix.job_id}}.txt
+ 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]
+ job_id: [ 1, 2, 3 ]
steps:
- - uses: actions/checkout@v3
+ - name: Checkout code
+ uses: actions/checkout@v4
with:
- repository: 'apache/dubbo-samples'
+ repository: oxsean/dubbo-samples
ref: master
- - name: "Cache local Maven repository"
- uses: actions/cache@v3
+ - name: Restore local maven repository cache
+ uses: actions/cache/restore@v4
with:
path: ~/.m2/repository
- key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}-${{ github.run_id }}
+ key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
restore-keys: |
- ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
${{ runner.os }}-maven-
- - name: "Restore Dubbo cache"
- uses: actions/cache@v3
+ - name: Restore Dubbo cache
+ uses: actions/cache/restore@v4
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"
+ - 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
+ - name: Set up JDK ${{ matrix.jdk }}
+ uses: actions/setup-java@v4
with:
- java-version: ${{matrix.jdk}}
- - name: "Init Candidate Versions"
+ distribution: zulu
+ java-version: ${{ matrix.jdk }}
+ - name: Init Candidate Versions
run: |
- DUBBO_VERSION="${{needs.build-source.outputs.version}}"
+ 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"
+ - 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()
+ - name: Upload test result
uses: actions/upload-artifact@v3
with:
- name: samples-test-result-${{matrix.jdk}}
+ name: samples-test-result-${{ matrix.jdk }}
path: test/jobs/*-result*
samples-test-result:
- needs: [samples-test-job]
- if: always()
+ needs: [ samples-test-job ]
runs-on: ubuntu-latest
env:
- JAVA_VER: ${{matrix.jdk}}
+ JAVA_VER: ${{ matrix.jdk }}
strategy:
matrix:
jdk: [ 8, 11, 17, 21 ]
steps:
- - uses: actions/checkout@v3
+ - name: Checkout samples code
+ uses: actions/checkout@v4
with:
- repository: 'apache/dubbo-samples'
+ repository: oxsean/dubbo-samples
ref: master
- - name: "Download test result"
+ - name: Download test result
uses: actions/download-artifact@v3
with:
- name: samples-test-result-${{matrix.jdk}}
+ name: samples-test-result-${{ matrix.jdk }}
path: test/jobs/
- - name: "Merge test result"
+ - name: Merge test result
run: ./test/scripts/merge-test-results.sh
integration-test-prepare:
+ name: Preparation for Integration Test
runs-on: ubuntu-latest
env:
- JOB_COUNT: 5
+ JOB_COUNT: 3
steps:
- - uses: actions/checkout@v3
+ - name: Checkout integration code
+ uses: actions/checkout@v4
with:
- repository: 'apache/dubbo-integration-cases'
+ repository: oxsean/dubbo-integration-cases
ref: main
- - name: "Prepare test list"
- run: |
- bash ./test/scripts/prepare-test.sh
- - name: "Upload test list"
+ - 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}})"
+ name: Integration Test (Job-${{ matrix.job_id }}, Java-${{ matrix.jdk }})
+ needs: [ build-source, integration-test-prepare ]
runs-on: ubuntu-latest
- timeout-minutes: 90
+ timeout-minutes: 60
env:
- JAVA_VER: ${{matrix.jdk}}
- TEST_CASE_FILE: jobs/testjob_${{matrix.job_id}}.txt
+ 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]
+ job_id: [ 1, 2, 3 ]
steps:
- - uses: actions/checkout@v3
+ - name: Checkout integration code
+ uses: actions/checkout@v4
with:
- repository: 'apache/dubbo-integration-cases'
+ repository: oxsean/dubbo-integration-cases
ref: main
- - name: "Cache local Maven repository"
- uses: actions/cache@v3
+ - name: Restore local maven repository cache
+ uses: actions/cache/restore@v4
with:
path: ~/.m2/repository
- key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}-${{ github.run_id }}
+ key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
restore-keys: |
- ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
${{ runner.os }}-maven-
- - name: "Restore Dubbo cache"
- uses: actions/cache@v3
+ - name: Restore Dubbo cache
+ uses: actions/cache/restore@v4
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"
+ - 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
+ - name: Set up JDK ${{ matrix.jdk }}
+ uses: actions/setup-java@v4
with:
- java-version: ${{matrix.jdk}}
- - name: "Init Candidate Versions"
+ distribution: zulu
+ java-version: ${{ matrix.jdk }}
+ - name: Init Candidate Versions
run: |
- DUBBO_VERSION="${{needs.build-source.outputs.version}}"
+ 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"
+ - 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()
+ - name: Upload test result
uses: actions/upload-artifact@v3
with:
- name: integration-test-result-${{matrix.jdk}}
+ name: integration-test-result-${{ matrix.jdk }}
path: test/jobs/*-result*
integration-test-result:
- needs: [integration-test-job]
- if: always()
+ needs: [ integration-test-job ]
runs-on: ubuntu-latest
env:
- JAVA_VER: ${{matrix.jdk}}
+ JAVA_VER: ${{ matrix.jdk }}
strategy:
matrix:
jdk: [ 8, 11, 17, 21 ]
steps:
- - uses: actions/checkout@v3
+ - name: Checkout integration code
+ uses: actions/checkout@v4
with:
- repository: 'apache/dubbo-integration-cases'
+ repository: oxsean/dubbo-integration-cases
ref: main
- - name: "Download test result"
+ - name: Download test result
uses: actions/download-artifact@v3
with:
- name: integration-test-result-${{matrix.jdk}}
+ name: integration-test-result-${{ matrix.jdk }}
path: test/jobs/
- - name: "Merge test result"
+ - name: Merge test result
run: ./test/scripts/merge-test-results.sh
error-code-inspecting:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v3
+ - name: Checkout code
+ uses: actions/checkout@v4
with:
- ref: "3.3"
- path: "./dubbo"
-
- - uses: actions/checkout@v3
+ ref: ${{ env.DUBBO_BRANCH }}
+ path: ./dubbo
+ - name: Checkout code
+ uses: actions/checkout@v4
with:
- repository: 'apache/dubbo-test-tools'
+ repository: apache/dubbo-test-tools
ref: main
- path: "./dubbo-test-tools"
-
- - name: "Set up JDK 21"
- uses: actions/setup-java@v3
+ path: ./dubbo-test-tools
+ - name: Set up JDK 21
+ uses: actions/setup-java@v4
with:
- distribution: 'zulu'
+ distribution: zulu
java-version: 21
-
- - name: "Compile Dubbo (Linux)"
+ - name: Restore local maven repository cache
+ uses: actions/cache/restore@v4
+ id: cache-maven-repository
+ with:
+ path: ~/.m2/repository
+ key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
+ restore-keys: |
+ ${{ runner.os }}-maven-
+ - 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"
+ ./mvnw ${{ env.MAVEN_ARGS }} -T 2C clean install -P '!demo',skip-spotless -Dmaven.test.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"
+ ../mvnw ${{ env.MAVEN_ARGS }} -T 2C package exec:java -Ddubbo.eci.report-as-error=${DUBBO_ECI_REPORT_AS_ERROR} -Dmaven.test.skip=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"
+ 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
+ - name: Checkout code
+ uses: actions/checkout@v4
with:
- ref: "3.3"
- path: "./dubbo"
-
- - name: "Setup GraalVM environment"
+ ref: ${{ env.DUBBO_BRANCH }}
+ path: ./dubbo
+ - name: Setup GraalVM environment
uses: graalvm/setup-graalvm@v1
with:
- version: '22.3.0'
- java-version: '17'
- components: 'native-image'
+ version: 22.3.0
+ java-version: 17
+ components: native-image
github-token: ${{ secrets.GITHUB_TOKEN }}
- native-image-job-reports: 'true'
-
- - name: "Setup Zookeeper environment"
+ native-image-job-reports: true
+ - name: Setup Zookeeper environment
run: |
wget https://dlcdn.apache.org/zookeeper/zookeeper-3.8.4/apache-zookeeper-3.8.4-bin.tar.gz
tar -zxvf apache-zookeeper-3.8.4-bin.tar.gz
mv apache-zookeeper-3.8.4-bin/conf/zoo_sample.cfg apache-zookeeper-3.8.4-bin/conf/zoo.cfg
apache-zookeeper-3.8.4-bin/bin/zkServer.sh start
-
- - name: "Check environment"
+ - name: Check environment
run: |
java --version
native-image --version
-
- - name: "Compile Dubbo (Linux)"
+ - name: Restore local maven repository cache
+ uses: actions/cache/restore@v4
+ with:
+ path: ~/.m2/repository
+ key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
+ restore-keys: |
+ ${{ runner.os }}-maven-
+ - name: Compile Dubbo (Linux)
run: |
cd ${{ github.workspace }}/dubbo
- ./mvnw ${{ env.MAVEN_ARGS }} -T 2C clean install -P '!demo',skip-spotless -Dmaven.test.skip=true -Dcheckstyle.skip=true -Dcheckstyle_unix.skip=true -Drat.skip=true
-
- - name: "Compile and run Dubbo demo for native (Linux)"
+ ./mvnw ${{ env.MAVEN_ARGS }} -T 2C clean install -P '!demo',skip-spotless -Dmaven.test.skip=true
+ - name: Compile and run Dubbo demo for native (Linux)
run: |
cd ${{ github.workspace }}/dubbo/dubbo-demo/dubbo-demo-native/dubbo-demo-native-interface
MVNW="${{ github.workspace }}/dubbo/mvnw ${{ env.MAVEN_ARGS }} -T 2C -Dmaven.test.skip=true"
$MVNW clean install
cd ../dubbo-demo-native-provider
- $MVNW clean package -P native native:compile
+ $MVNW clean package -P native native:compile
nohup ./target/dubbo-demo-native-provider &
cd ../dubbo-demo-native-consumer
$MVNW clean package -P native native:compile
diff --git a/.github/workflows/release-test.yml b/.github/workflows/release-test.yml
index dea1cf2d4c..f0be6660c3 100644
--- a/.github/workflows/release-test.yml
+++ b/.github/workflows/release-test.yml
@@ -9,66 +9,110 @@ on:
permissions:
contents: read
+defaults:
+ run:
+ shell: bash
+
env:
+ DUBBO_BRANCH: ${{ github.ref }}
FORK_COUNT: 2
FAIL_FAST: 0
SHOW_ERROR_DETAIL: 1
- #multi-version size limit
VERSIONS_LIMIT: 4
ALL_REMOTE_VERSION: true
- CANDIDATE_VERSIONS: '
+ JACOCO_ENABLE: false
+ CANDIDATE_VERSIONS: >-
spring.version:5.3.24;
spring-boot.version:2.7.6;
- '
+ MAVEN_OPTS: >-
+ -XX:+UseG1GC
+ -XX:InitiatingHeapOccupancyPercent=45
+ -XX:+UseStringDeduplication
+ -XX:-TieredCompilation
+ -XX:TieredStopAtLevel=1
+ -Dmaven.javadoc.skip=true
+ -Dmaven.wagon.http.retryHandler.count=5
+ -Dmaven.wagon.httpconnectionManager.ttlSeconds=120
+ MAVEN_ARGS: >-
+ -e
+ --batch-mode
+ --no-snapshot-updates
+ --no-transfer-progress
+ --fail-fast
jobs:
- license:
+ check-license:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v3
+ - name: Checkout code
+ uses: actions/checkout@v4
+ with:
+ ref: ${{ env.DUBBO_BRANCH }}
- name: Check License
uses: apache/skywalking-eyes@main
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+
build-source:
- runs-on: ubuntu-latest
+ name: Build Dubbo on ${{ matrix.os }}
+ runs-on: ${{ matrix.os }}-latest
+ strategy:
+ matrix:
+ os: [ ubuntu, windows ]
outputs:
version: ${{ steps.dubbo-version.outputs.version }}
steps:
- - uses: actions/checkout@v3
+ - name: Checkout code
+ uses: actions/checkout@v4
with:
+ ref: ${{ env.DUBBO_BRANCH }}
path: dubbo
- - uses: actions/setup-java@v3
+ - name: Set up JDK
+ uses: actions/setup-java@v4
with:
- distribution: 'zulu'
+ distribution: zulu
java-version: 21
- - uses: actions/cache@v3
- name: "Cache local Maven repository"
+ - name: Restore local maven repository cache
+ uses: actions/cache/restore@v4
+ id: cache-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
+ key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
+ - name: Restore common local maven repository cache
+ uses: actions/cache/restore@v4
+ if: steps.cache-maven-repository.outputs.cache-hit != 'true'
with:
- path: ~/.m2/repository/org/apache/dubbo
- key: ${{ runner.os }}-dubbo-snapshot-${{ github.sha }}-${{ github.run_id }}
- - name: "Build Dubbo with Maven"
+ path: ~/.m2/repository
+ key: ${{ runner.os }}-maven-
+ - name: Clean dubbo cache
+ run: rm -rf ~/.m2/repository/org/apache/dubbo
+ - 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"
+ ./mvnw ${{ env.MAVEN_ARGS }} -T 2C clean install -Psources,'!demo',skip-spotless,checkstyle -Dmaven.test.skip=true -Dcheckstyle_unix.skip=${{ matrix.os == 'windows' && 'true' || 'false' }}
+ - name: Save dubbo cache
+ uses: actions/cache/save@v4
+ with:
+ path: ~/.m2/repository/org/apache/dubbo
+ key: ${{ runner.os }}-dubbo-snapshot-${{ github.sha }}-${{ github.run_id }}
+ - name: Clean dubbo cache
+ run: rm -rf ~/.m2/repository/org/apache/dubbo
+ - name: Save local maven repository cache
+ uses: actions/cache/save@v4
+ if: steps.cache-maven-repository.outputs.cache-hit != 'true'
+ with:
+ path: ~/.m2/repository
+ key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
+ - 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()
+ - name: Upload checkstyle file if failure
uses: actions/upload-artifact@v3
+ if: failure()
with:
- name: "checkstyle-file"
+ name: checkstyle-file
path: ${{ github.workspace }}/checkstyle.zip
- - name: "Calculate Dubbo Version"
+ - name: Calculate Dubbo Version
id: dubbo-version
run: |
REVISION=`awk '/<revision>[^<]+<\/revision>/{gsub(/<revision>|<\/revision>/,"",$1);print $1;exit;}' ./dubbo/pom.xml`
@@ -76,424 +120,399 @@ jobs:
echo "dubbo version: $REVISION"
unit-test-prepare:
- name: " Preparation for Unit Test On ${{ matrix.os }}"
- runs-on: ${{ matrix.os }}
+ name: Preparation for Unit Test on ${{ matrix.os }}
+ runs-on: ${{ matrix.os }}-latest
+ env:
+ JOB_COUNT: 2
+ ZOOKEEPER_VERSION: 3.6.4
strategy:
- fail-fast: false
matrix:
- os: [ ubuntu-latest, windows-latest ]
- env:
- ZOOKEEPER_VERSION: 3.6.3
+ os: [ ubuntu, windows ]
steps:
- - uses: actions/cache@v3
- name: "Cache zookeeper binary archive"
- id: "cache-zookeeper"
+ - name: Checkout code
+ uses: actions/checkout@v4
+ with:
+ ref: ${{ env.DUBBO_BRANCH }}
+ - name: Prepare test list
+ if: ${{ matrix.os == 'ubuntu' }}
+ run: bash ./dubbo-test/scripts/split-modules.sh ${{ env.JOB_COUNT }} '${{ github.workspace }}'
+ - name: Upload test list
+ uses: actions/upload-artifact@v3
+ if: ${{ matrix.os == 'ubuntu' }}
+ with:
+ name: unit-test-list
+ path: test/jobs
+ - name: Restore local zookeeper cache
+ uses: actions/cache/restore@v4
+ 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}
+ - name: Download zookeeper binary archive on ${{ matrix.os }}
+ if: steps.cache-zookeeper.outputs.cache-hit != 'true'
+ env:
+ MIRRORS: >-
+ https://archive.apache.org/dist
+ https://apache.website-solution.net
+ http://apache.stu.edu.tw
+ http://ftp.jaist.ac.jp/pub/apache
+ http://apache.mirror.cdnetworks.com
+ http://mirror.apache-kr.org/apache
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
+ cd '${{ github.workspace }}'
+ mkdir -p .tmp/zookeeper
+ for mirror in $MIRRORS; do
+ curl -sL "$mirror/zookeeper/zookeeper-${{ env.ZOOKEEPER_VERSION }}/apache-zookeeper-${{ env.ZOOKEEPER_VERSION }}-bin.tar.gz" -o .tmp/zookeeper/apache-zookeeper-bin.tar.gz && break
+ done
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
- - name: "Set up JDK ${{ matrix.jdk }}"
- uses: actions/setup-java@v3
- with:
- java-version: ${{ matrix.jdk }}
- distribution: 'zulu'
- - 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"
+ ls -al .tmp/zookeeper/apache-zookeeper-bin.tar.gz
+ - name: Save local zookeeper cache
+ uses: actions/cache/save@v4
+ if: steps.cache-zookeeper.outputs.cache-hit != 'true'
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 }}
+ unit-test-job:
+ name: Unit Test (Job-${{matrix.job_id}}, Os-${{ matrix.os }}, Jdk-${{ matrix.jdk }}, Ser-${{ matrix.ser }})
+ needs: [ build-source, unit-test-prepare ]
+ runs-on: ${{ matrix.os }}-latest
+ timeout-minutes: 60
+ env:
+ ZOOKEEPER_VERSION: 3.6.4
+ DISABLE_FILE_SYSTEM_TEST: true
+ MAVEN_SUREFIRE_ADD_OPENS: true
+ DUBBO_DEFAULT_SERIALIZATION: ${{ matrix.ser }}
strategy:
fail-fast: false
matrix:
- os: [ ubuntu-latest, windows-latest ]
+ os: [ ubuntu, windows ]
jdk: [ 8, 11, 17, 21 ]
- env:
- DISABLE_FILE_SYSTEM_TEST: true
- DUBBO_DEFAULT_SERIALIZATION: fastjson2
- MAVEN_SUREFIRE_ADD_OPENS: true
+ ser: [ hessian2, fastjson2 ]
+ job_id: [ 1, 2 ]
steps:
- - uses: actions/checkout@v3
- - name: "Set up JDK ${{ matrix.jdk }}"
- uses: actions/setup-java@v3
+ - name: Checkout code
+ uses: actions/checkout@v4
+ with:
+ ref: ${{ env.DUBBO_BRANCH }}
+ - name: Set up JDK
+ uses: actions/setup-java@v4
with:
- distribution: 'zulu'
+ distribution: zulu
java-version: ${{ matrix.jdk }}
- - uses: actions/cache@v3
- name: "Cache local Maven repository"
+ - name: Restore local maven repository
+ uses: actions/cache/restore@v4
with:
path: ~/.m2/repository
- key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}-${{ github.run_id }}
+ key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
restore-keys: |
- ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
${{ runner.os }}-maven-
- - uses: actions/cache@v3
- name: "Cache zookeeper binary archive"
- id: "cache-zookeeper"
+ - name: Restore Dubbo cache
+ uses: actions/cache/restore@v4
+ with:
+ path: ~/.m2/repository/org/apache/dubbo
+ key: ${{ runner.os }}-dubbo-snapshot-${{ github.sha }}-${{ github.run_id }}
+ - name: Cache zookeeper binary archive
+ uses: actions/cache@v4
+ 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.workspa [...]
+ - name: Download test list
+ uses: actions/download-artifact@v3
+ with:
+ name: unit-test-list
+ path: test/jobs/
+ - name: Test with maven on ${{ matrix.os }}
+ timeout-minutes: 60
+ run: |
+ set -o pipefail
+ modules=$(cat test/jobs/test_modules_${{ matrix.job_id }}.txt)
+ ./mvnw ${{ env.MAVEN_ARGS }} clean test verify -Pjdk15ge-simple,'!jdk15ge','!demo',skip-spotless -pl "$modules" -DtrimStackTrace=false -Dmaven.test.skip=false -Drat.skip=false -Dflatten.skip=true -DembeddedZookeeperPath=${{ github.workspace }}/.tmp/zookeeper 2>&1 | tee >(grep -n -B 5 -A 200 "FAILURE! -- in" > test_errors.log)
+ - name: Print test error log
+ if: failure()
+ run: cat test_errors.log
samples-test-prepare:
+ name: Preparation for Sample Test
runs-on: ubuntu-latest
env:
- JOB_COUNT: 5
+ JOB_COUNT: 3
steps:
- - uses: actions/checkout@v3
+ - name: Checkout code
+ uses: actions/checkout@v4
with:
- repository: 'apache/dubbo-samples'
+ repository: oxsean/dubbo-samples
ref: master
- - name: "Prepare test list"
- run: |
- bash ./test/scripts/prepare-test.sh
- - name: "Upload test list"
+ - 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}})"
+ name: Samples Test (Job-${{matrix.job_id}}, Java-${{ matrix.jdk }})
+ needs: [ build-source, samples-test-prepare ]
runs-on: ubuntu-latest
- timeout-minutes: 90
+ timeout-minutes: 60
env:
- JAVA_VER: ${{matrix.jdk}}
- TEST_CASE_FILE: jobs/testjob_${{matrix.job_id}}.txt
+ 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]
+ job_id: [ 1, 2, 3 ]
steps:
- - uses: actions/checkout@v3
+ - name: Checkout code
+ uses: actions/checkout@v4
with:
- repository: 'apache/dubbo-samples'
+ repository: oxsean/dubbo-samples
ref: master
- - name: "Cache local Maven repository"
- uses: actions/cache@v3
+ - name: Restore local maven repository cache
+ uses: actions/cache/restore@v4
with:
path: ~/.m2/repository
- key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}-${{ github.run_id }}
+ key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
restore-keys: |
- ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
${{ runner.os }}-maven-
- - name: "Restore Dubbo cache"
- uses: actions/cache@v3
+ - name: Restore Dubbo cache
+ uses: actions/cache/restore@v4
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"
+ - 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
+ - name: Set up JDK ${{ matrix.jdk }}
+ uses: actions/setup-java@v4
with:
- java-version: ${{matrix.jdk}}
- - name: "Init Candidate Versions"
+ distribution: zulu
+ java-version: ${{ matrix.jdk }}
+ - name: Init Candidate Versions
run: |
- DUBBO_VERSION="${{needs.build-source.outputs.version}}"
+ 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"
+ - 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()
+ - name: Upload test result
uses: actions/upload-artifact@v3
with:
- name: samples-test-result-${{matrix.jdk}}
+ name: samples-test-result-${{ matrix.jdk }}
path: test/jobs/*-result*
samples-test-result:
- needs: [samples-test-job]
- if: always()
+ needs: [ samples-test-job ]
runs-on: ubuntu-latest
env:
- JAVA_VER: ${{matrix.jdk}}
+ JAVA_VER: ${{ matrix.jdk }}
strategy:
matrix:
jdk: [ 8, 11, 17, 21 ]
steps:
- - uses: actions/checkout@v3
+ - name: Checkout samples code
+ uses: actions/checkout@v4
with:
- repository: 'apache/dubbo-samples'
+ repository: oxsean/dubbo-samples
ref: master
- - name: "Download test result"
+ - name: Download test result
uses: actions/download-artifact@v3
with:
- name: samples-test-result-${{matrix.jdk}}
+ name: samples-test-result-${{ matrix.jdk }}
path: test/jobs/
- - name: "Merge test result"
+ - name: Merge test result
run: ./test/scripts/merge-test-results.sh
integration-test-prepare:
+ name: Preparation for Integration Test
runs-on: ubuntu-latest
env:
- JOB_COUNT: 5
+ JOB_COUNT: 3
steps:
- - uses: actions/checkout@v3
+ - name: Checkout integration code
+ uses: actions/checkout@v4
with:
- repository: 'apache/dubbo-integration-cases'
+ repository: oxsean/dubbo-integration-cases
ref: main
- - name: "Prepare test list"
- run: |
- bash ./test/scripts/prepare-test.sh
- - name: "Upload test list"
+ - 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}})"
+ name: Integration Test (Job-${{ matrix.job_id }}, Java-${{ matrix.jdk }})
+ needs: [ build-source, integration-test-prepare ]
runs-on: ubuntu-latest
- timeout-minutes: 90
+ timeout-minutes: 60
env:
- JAVA_VER: ${{matrix.jdk}}
- TEST_CASE_FILE: jobs/testjob_${{matrix.job_id}}.txt
+ 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]
+ job_id: [ 1, 2, 3 ]
steps:
- - uses: actions/checkout@v3
+ - name: Checkout integration code
+ uses: actions/checkout@v4
with:
- repository: 'apache/dubbo-integration-cases'
+ repository: oxsean/dubbo-integration-cases
ref: main
- - name: "Cache local Maven repository"
- uses: actions/cache@v3
+ - name: Restore local maven repository cache
+ uses: actions/cache/restore@v4
with:
path: ~/.m2/repository
- key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}-${{ github.run_id }}
+ key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
restore-keys: |
- ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
${{ runner.os }}-maven-
- - name: "Restore Dubbo cache"
- uses: actions/cache@v3
+ - name: Restore Dubbo cache
+ uses: actions/cache/restore@v4
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"
+ - 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
+ - name: Set up JDK ${{ matrix.jdk }}
+ uses: actions/setup-java@v4
with:
- java-version: ${{matrix.jdk}}
- - name: "Init Candidate Versions"
+ distribution: zulu
+ java-version: ${{ matrix.jdk }}
+ - name: Init Candidate Versions
run: |
- DUBBO_VERSION="${{needs.build-source.outputs.version}}"
+ 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"
+ - 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()
+ - name: Upload test result
uses: actions/upload-artifact@v3
with:
- name: integration-test-result-${{matrix.jdk}}
+ name: integration-test-result-${{ matrix.jdk }}
path: test/jobs/*-result*
integration-test-result:
- needs: [integration-test-job]
- if: always()
+ needs: [ integration-test-job ]
runs-on: ubuntu-latest
env:
- JAVA_VER: ${{matrix.jdk}}
+ JAVA_VER: ${{ matrix.jdk }}
strategy:
matrix:
jdk: [ 8, 11, 17, 21 ]
steps:
- - uses: actions/checkout@v3
+ - name: Checkout integration code
+ uses: actions/checkout@v4
with:
- repository: 'apache/dubbo-integration-cases'
+ repository: oxsean/dubbo-integration-cases
ref: main
- - name: "Download test result"
+ - name: Download test result
uses: actions/download-artifact@v3
with:
- name: integration-test-result-${{matrix.jdk}}
+ name: integration-test-result-${{ matrix.jdk }}
path: test/jobs/
- - name: "Merge test result"
+ - name: Merge test result
run: ./test/scripts/merge-test-results.sh
error-code-inspecting:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v3
+ - name: Checkout code
+ uses: actions/checkout@v4
with:
- path: "./dubbo"
-
- - uses: actions/checkout@v3
+ ref: ${{ env.DUBBO_BRANCH }}
+ path: ./dubbo
+ - name: Checkout code
+ uses: actions/checkout@v4
with:
- repository: 'apache/dubbo-test-tools'
+ repository: apache/dubbo-test-tools
ref: main
- path: "./dubbo-test-tools"
-
- - name: "Set up JDK 21"
- uses: actions/setup-java@v3
+ path: ./dubbo-test-tools
+ - name: Set up JDK 21
+ uses: actions/setup-java@v4
with:
+ distribution: zulu
java-version: 21
- distribution: 'zulu'
-
- - name: "Compile Dubbo (Linux)"
+ - name: Restore local maven repository cache
+ uses: actions/cache/restore@v4
+ id: cache-maven-repository
+ with:
+ path: ~/.m2/repository
+ key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
+ restore-keys: |
+ ${{ runner.os }}-maven-
+ - 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"
+ ./mvnw ${{ env.MAVEN_ARGS }} -T 2C clean install -P '!demo',skip-spotless -Dmaven.test.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"
+ ../mvnw ${{ env.MAVEN_ARGS }} -T 2C package exec:java -Ddubbo.eci.report-as-error=${DUBBO_ECI_REPORT_AS_ERROR} -Dmaven.test.skip=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"
+ 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
+ - name: Checkout code
+ uses: actions/checkout@v4
with:
- path: "./dubbo"
-
- - name: "Setup GraalVM environment"
+ ref: ${{ env.DUBBO_BRANCH }}
+ path: ./dubbo
+ - name: Setup GraalVM environment
uses: graalvm/setup-graalvm@v1
with:
- version: '22.3.0'
- java-version: '17'
- components: 'native-image'
+ version: 22.3.0
+ java-version: 17
+ components: native-image
github-token: ${{ secrets.GITHUB_TOKEN }}
- native-image-job-reports: 'true'
-
- - name: "Setup Zookeeper environment"
+ native-image-job-reports: true
+ - name: Setup Zookeeper environment
run: |
wget https://dlcdn.apache.org/zookeeper/zookeeper-3.8.4/apache-zookeeper-3.8.4-bin.tar.gz
tar -zxvf apache-zookeeper-3.8.4-bin.tar.gz
mv apache-zookeeper-3.8.4-bin/conf/zoo_sample.cfg apache-zookeeper-3.8.4-bin/conf/zoo.cfg
apache-zookeeper-3.8.4-bin/bin/zkServer.sh start
-
- - name: "Check environment"
+ - name: Check environment
run: |
java --version
native-image --version
-
- - name: "Compile Dubbo (Linux)"
+ - name: Restore local maven repository cache
+ uses: actions/cache/restore@v4
+ with:
+ path: ~/.m2/repository
+ key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
+ restore-keys: |
+ ${{ runner.os }}-maven-
+ - name: Compile Dubbo (Linux)
run: |
cd ${{ github.workspace }}/dubbo
- ./mvnw ${{ env.MAVEN_ARGS }} -T 2C clean install -P '!demo',skip-spotless -Dmaven.test.skip=true -Dcheckstyle.skip=true -Dcheckstyle_unix.skip=true -Drat.skip=true
-
- - name: "Compile and run Dubbo demo for native (Linux)"
+ ./mvnw ${{ env.MAVEN_ARGS }} -T 2C clean install -P '!demo',skip-spotless -Dmaven.test.skip=true
+ - name: Compile and run Dubbo demo for native (Linux)
run: |
cd ${{ github.workspace }}/dubbo/dubbo-demo/dubbo-demo-native/dubbo-demo-native-interface
MVNW="${{ github.workspace }}/dubbo/mvnw ${{ env.MAVEN_ARGS }} -T 2C -Dmaven.test.skip=true"
$MVNW clean install
cd ../dubbo-demo-native-provider
- $MVNW clean package -P native native:compile
+ $MVNW clean package -P native native:compile
nohup ./target/dubbo-demo-native-provider &
cd ../dubbo-demo-native-consumer
$MVNW clean package -P native native:compile
diff --git a/dubbo-test/scripts/split-modules.sh b/dubbo-test/scripts/split-modules.sh
index 1bc1fe47de..97d93ad416 100644
--- a/dubbo-test/scripts/split-modules.sh
+++ b/dubbo-test/scripts/split-modules.sh
@@ -18,12 +18,12 @@
readarray -t modules < <(find . -name "pom.xml" | while read -r pom; do
module_dir=$(dirname "$pom")
- if [ -d "$module_dir/src/test" ]; then
+ if [ -d "$module_dir/src/test" ] && [[ "$module_dir" != *"plugin-loom" ]] && [[ "$module_dir" != *"config-spring6" ]]; then
echo "${module_dir#./}"
fi
done)
-readarray -t modules < <(printf '%s\n' "${modules[@]}" | shuf --random-source=/dev/zero)
+readarray -t modules < <(printf '%s\n' "${modules[@]}" | shuf --random-source=<(yes 1))
jobs=$1
jobs_dir=$2/test/jobs
diff --git a/mvnw b/mvnw
index b7f064624f..0e79b70d51 100755
--- a/mvnw
+++ b/mvnw
@@ -191,7 +191,7 @@ else
else
wrapperUrl="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.1/maven-wrapper-3.1.1.jar"
fi
- while IFS="=" read key value; do
+ while IFS='=\r' read key value; do
case "$key" in (wrapperUrl) wrapperUrl="$value"; break ;;
esac
done < "$BASE_DIR/.mvn/wrapper/maven-wrapper.properties"