blob: e981288c8f22a549c4ef8fe5399475081a08cd6c [file] [log] [blame]
name: Dubbo 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:4.3.30.RELEASE;
spring-boot.version:1.5.22.RELEASE;
spring-boot.version:2.4.1;
'
DUBBO_REF: '3.0'
jobs:
build-samples:
runs-on: ubuntu-latest
strategy:
fail-fast: false
steps:
- uses: actions/checkout@v1
- name: Cache local Maven repository
uses: actions/cache@v2
with:
path: ~/.m2/repository
key: ${{ runner.os }}-samples-maven-${{ hashFiles('**/pom.xml') }}
restore-keys: |
${{ runner.os }}-samples-maven-
- name: Set up JDK 8
uses: actions/setup-java@v1
with:
java-version: 8
- name: Build with Maven
run: |
./mvnw $BUILD_OPTS
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@v2
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@v2
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@v2
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 8
if: steps.dubbocache.outputs.cache-hit != 'true'
uses: actions/setup-java@v1
with:
java-version: 8
- 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@v1
- name: Prepare test list
run: |
bash ./test/scripts/prepare-test.sh
- name: Upload test list
uses: actions/upload-artifact@v2
with:
name: test-list
path: test/jobs
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
strategy:
fail-fast: false
matrix:
java: [8, 11]
#testjob id list MUST match 'JOB_COUNT' of 'prepare_test'
job_id: [1,2,3,4,5]
steps:
- uses: actions/checkout@v1
- name: Set up JDK ${{matrix.java}}
uses: actions/setup-java@v1
with:
java-version: ${{matrix.java}}
- name: Cache local Maven repository
uses: actions/cache@v2
with:
path: ~/.m2/repository
key: ${{ runner.os }}-samples-maven-${{ hashFiles('**/pom.xml') }}
restore-keys: |
${{ runner.os }}-samples-maven-
- name: Dubbo cache
uses: actions/cache@v2
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@v2
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;$CANDIDATE_VERSIONS"
echo "CANDIDATE_VERSIONS=$CANDIDATE_VERSIONS" >> $GITHUB_ENV
- name: Build test image
run: |
cd test && bash ./build-test-image.sh
- name: Run tests
run: cd test && bash ./run-tests.sh
- name: Upload test result
if: always()
uses: actions/upload-artifact@v2
with:
name: test-result
path: test/jobs/*-result*
test_result:
needs: [testjob]
name: 'Test Result (Java${{matrix.java}})'
if: always()
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
java: [8, 11]
env:
JAVA_VER: ${{matrix.java}}
steps:
- uses: actions/checkout@v1
- name: Download test result
uses: actions/download-artifact@v2
with:
name: test-result
path: test/jobs/
- name: Merge test result - java ${{matrix.java}}
run: ./test/scripts/merge-test-results.sh