Skip to content

Fix for the QoS port conflict issue caused by starting providers and consumers on the same machine. #1174

Fix for the QoS port conflict issue caused by starting providers and consumers on the same machine.

Fix for the QoS port conflict issue caused by starting providers and consumers on the same machine. #1174

Workflow file for this run

name: Dubbo 3.3
on:
pull_request:
paths:
- "**"
- "!**/*.md"
- "!docs/**"
push:
paths:
- '**'
- "!**/*.md"
- "!docs/**"
workflow_dispatch:
env:
FORK_COUNT: 2
FAIL_FAST: 0
SHOW_ERROR_DETAIL: 1
BUILD_OPTS: --batch-mode --no-snapshot-updates --no-transfer-progress --settings ${{github.workspace}}/.mvn/settings.xml
-Dmaven.wagon.http.retryHandler.count=3 clean package dependency:copy-dependencies -DskipTests
#multi-version size limit
VERSIONS_LIMIT: 4
#candidate versions (the dubbo snapshot version will be extracted from pom.xml and appended before CANDIDATE_VERSIONS )
CANDIDATE_VERSIONS: '
spring.version:5.3.24,6.1.5;
spring-boot.version:2.7.6,3.2.3;
'
DUBBO_REF: '3.3'
jobs:
build-samples:
needs: [build-dubbo]
runs-on: ubuntu-latest
strategy:
fail-fast: false
steps:
- uses: actions/checkout@v3
- name: Cache local Maven repository
uses: actions/cache@v3
with:
path: ~/.m2/repository
key: ${{ runner.os }}-samples-maven-${{ hashFiles('**/pom.xml') }}
restore-keys: |
${{ runner.os }}-samples-maven-
- name: Set up JDK 21
uses: actions/setup-java@v3
with:
distribution: 'zulu'
java-version: 21
- name: Build with Maven
run: |
./mvnw $BUILD_OPTS
- name: Clean with Maven
run: |
./mvnw --batch-mode --no-snapshot-updates --no-transfer-progress --settings ${{github.workspace}}/.mvn/settings.xml clean
build-dubbo:
runs-on: ubuntu-latest
strategy:
fail-fast: false
# Map a step output to a job output
outputs:
commit_id: ${{ steps.git-checker.outputs.commit_id }}
version: ${{ steps.git-checker.outputs.version }}
steps:
- uses: actions/checkout@v3
with:
repository: 'apache/dubbo'
ref: ${{env.DUBBO_REF}}
- name: Get commit id and dubbo version
id: git-checker
run: |
# Calculate Dubbo Version
REVISION=`awk '/<revision>[^<]+<\/revision>/{gsub(/<revision>|<\/revision>/,"",$1);print $1;exit;}' pom.xml`
echo "::set-output name=version::$REVISION"
echo "dubbo version: $REVISION"
#
# commit id
commit_id=`git log --format="%H" -n 1`
echo "::set-output name=commit_id::$commit_id"
echo "commit_id: $commit_id"
- name: Dubbo cache
id: dubbocache
uses: actions/cache@v3
with:
path: ~/.m2/repository/org/apache/dubbo
key: ${{ runner.os }}-dubbo-snapshot-${{steps.git-checker.outputs.commit_id}}
- name: Cache local Maven repository
if: steps.dubbocache.outputs.cache-hit != 'true'
uses: actions/cache@v3
with:
path: ~/.m2/repository
key: ${{ runner.os }}-dubbo-${{env.DUBBO_REF}}-maven-${{ hashFiles('**/pom.xml') }}
restore-keys: |
${{ runner.os }}-dubbo-${{env.DUBBO_REF}}-maven-
- name: Set up JDK 17
if: steps.dubbocache.outputs.cache-hit != 'true'
uses: actions/setup-java@v3
with:
distribution: 'zulu'
java-version: 17
- name: Build dubbo
if: steps.dubbocache.outputs.cache-hit != 'true'
run: |
./mvnw --batch-mode --no-snapshot-updates --no-transfer-progress clean install -Dmaven.test.skip=true -Dmaven.test.skip.exec=true
prepare_test:
runs-on: ubuntu-latest
env:
#'JOB_COUNT' MUST match 'job_id' list of 'testjob'
JOB_COUNT: 5
steps:
- uses: actions/checkout@v3
- name: Prepare test list
run: |
bash ./test/scripts/prepare-test.sh
- name: Upload test list
uses: actions/upload-artifact@v3
with:
name: test-list
path: test/jobs
testjob:
needs: [prepare_test, build-dubbo]
name: 'Integration Test (Java${{matrix.java}}, Job${{matrix.job_id}})'
runs-on: ubuntu-latest
env:
JAVA_VER: ${{matrix.java}}
TEST_CASE_FILE: jobs/testjob_${{matrix.job_id}}.txt
ALL_REMOTE_VERSION: true
strategy:
fail-fast: false
matrix:
java: [8, 11, 17, 21]
#testjob id list MUST match 'JOB_COUNT' of 'prepare_test'
job_id: [1,2,3,4,5]
steps:
- uses: actions/checkout@v3
- name: Set up JDK ${{matrix.java}}
uses: actions/setup-java@v3
with:
distribution: 'zulu'
java-version: ${{matrix.java}}
- name: Cache local Maven repository
uses: actions/cache@v3
with:
path: ~/.m2/repository
key: ${{ runner.os }}-samples-maven-${{ hashFiles('**/pom.xml') }}
restore-keys: |
${{ runner.os }}-samples-maven-
- name: Dubbo cache
uses: actions/cache@v3
with:
path: ~/.m2/repository/org/apache/dubbo
key: ${{ runner.os }}-dubbo-snapshot-${{needs.build-dubbo.outputs.commit_id}}
- name: Download test list
uses: actions/download-artifact@v3
with:
name: test-list
path: test/jobs/
- name: Init Candidate Versions
run: |
DUBBO_VERSION="${{needs.build-dubbo.outputs.version}}"
CANDIDATE_VERSIONS="dubbo.version:$DUBBO_VERSION;compiler.version:$DUBBO_VERSION;dubbo.compiler.version:$DUBBO_VERSION;$CANDIDATE_VERSIONS"
echo "CANDIDATE_VERSIONS=$CANDIDATE_VERSIONS" >> $GITHUB_ENV
- name: "Cache Skywalking Agent"
id: cache-skywalking-agent
uses: actions/cache@v4
with:
path: /tmp/skywalking-agent/dubbo-samples-benchmark-agent.jar
key: ${{ runner.os }}-skywalking-agent-9.0.0
- name: "Cache MySQL Driver"
id: cache-mysql-driver
uses: actions/cache@v4
with:
path: /tmp/mysql-connector-java-8.0.23.jar
key: ${{ runner.os }}-mysql-driver-8.0.23
- name: "Download Skywalking Agent and MySQL Driver"
# if: steps.cache-skywalking-agent.outputs.cache-hit != 'true' || steps.cache-mysql-driver.outputs.cache-hit != 'true'
run: |
wget -c https://archive.apache.org/dist/skywalking/java-agent/9.0.0/apache-skywalking-java-agent-9.0.0.tgz --no-check-certificate
tar -zxvf apache-skywalking-java-agent-9.0.0.tgz -C /tmp
wget -c https://repo1.maven.org/maven2/mysql/mysql-connector-java/8.0.23/mysql-connector-java-8.0.23.jar
mv ./mysql-connector-java-8.0.23.jar /tmp/
- name: "Mvn Benchmark Skywalking Plugin"
run: |
rm -rf /tmp/skywalking-agent/dubbo-samples-benchmark-agent.jar
cd 10-task/dubbo-samples-benchmark/dubbo-samples-benchmark-agent && mvn --batch-mode --no-snapshot-updates -e --no-transfer-progress clean package -Dmaven.test.skip=true -Dmaven.test.skip.exec=true
cp -f ./target/dubbo-samples-benchmark-agent.jar /tmp/skywalking-agent/
- name: Build test image
run: |
cd test && bash ./build-test-image.sh
- name: Run tests
run: cd test && bash ./run-tests.sh
- name: Upload test result
if: always()
uses: actions/upload-artifact@v3
with:
name: test-result
path: test/jobs/*-result*
test_result:
needs: [testjob]
name: 'Test Result (Java${{matrix.java}})'
if: always()
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
java: [8, 11, 17, 21]
env:
JAVA_VER: ${{matrix.java}}
steps:
- uses: actions/checkout@v3
- name: Download test result
uses: actions/download-artifact@v3
with:
name: test-result
path: test/jobs/
- name: Merge test result - java ${{matrix.java}}
run: ./test/scripts/merge-test-results.sh