Skip to content

Add RESTful Dubbo Integration with Spring Security and OAuth2 Sample #1247

Add RESTful Dubbo Integration with Spring Security and OAuth2 Sample

Add RESTful Dubbo Integration with Spring Security and OAuth2 Sample #1247

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