Build and Test Scheduled On 3.1 #1406
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Build and Test Scheduled On 3.1 | |
on: | |
schedule: | |
- cron: '0 0/6 * * *' | |
workflow_dispatch: | |
permissions: | |
contents: read | |
env: | |
FORK_COUNT: 2 | |
FAIL_FAST: 0 | |
SHOW_ERROR_DETAIL: 1 | |
#multi-version size limit | |
VERSIONS_LIMIT: 4 | |
ALL_REMOTE_VERSION: true | |
CANDIDATE_VERSIONS: ' | |
spring.version:5.3.24; | |
spring-boot.version:2.7.6; | |
' | |
jobs: | |
license: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
ref: "3.1" | |
- name: Check License | |
uses: apache/skywalking-eyes@main | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
build-source: | |
runs-on: ubuntu-latest | |
outputs: | |
version: ${{ steps.dubbo-version.outputs.version }} | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
ref: "3.1" | |
path: dubbo | |
- uses: actions/setup-java@v3 | |
with: | |
distribution: 'zulu' | |
java-version: 8 | |
- uses: actions/cache@v3 | |
name: "Cache local Maven repository" | |
with: | |
path: ~/.m2/repository | |
key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}-${{ github.run_id }} | |
restore-keys: | | |
${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} | |
${{ runner.os }}-maven- | |
- name: "Dubbo cache" | |
uses: actions/cache@v3 | |
with: | |
path: ~/.m2/repository/org/apache/dubbo | |
key: ${{ runner.os }}-dubbo-snapshot-${{ github.sha }}-${{ github.run_id }} | |
- name: "Build Dubbo with Maven" | |
run: | | |
cd ./dubbo | |
./mvnw --batch-mode --no-snapshot-updates -e --no-transfer-progress --fail-fast clean source:jar install -Pjacoco,checkstyle -Dmaven.wagon.httpconnectionManager.ttlSeconds=120 -Dmaven.wagon.http.retryHandler.count=5 -Dmaven.test.skip=true -Dmaven.test.skip.exec=true -DembeddedZookeeperPath=${{ github.workspace }}/.tmp/zookeeper | |
- name: "Pack checkstyle file if failure" | |
if: failure() | |
run: 7z a ${{ github.workspace }}/checkstyle.zip *checkstyle* -r | |
- name: "Upload checkstyle file if failure" | |
if: failure() | |
uses: actions/upload-artifact@v3 | |
with: | |
name: "checkstyle-file" | |
path: ${{ github.workspace }}/checkstyle.zip | |
- name: "Calculate Dubbo Version" | |
id: dubbo-version | |
run: | | |
REVISION=`awk '/<revision>[^<]+<\/revision>/{gsub(/<revision>|<\/revision>/,"",$1);print $1;exit;}' ./dubbo/pom.xml` | |
echo "version=$REVISION" >> $GITHUB_OUTPUT | |
echo "dubbo version: $REVISION" | |
unit-test-prepare: | |
name: " Preparation for Unit Test On ${{ matrix.os }}" | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ ubuntu-latest, windows-latest ] | |
env: | |
ZOOKEEPER_VERSION: 3.6.3 | |
steps: | |
- uses: actions/cache@v3 | |
name: "Cache zookeeper binary archive" | |
id: "cache-zookeeper" | |
with: | |
path: ${{ github.workspace }}/.tmp/zookeeper | |
key: zookeeper-${{ runner.os }}-${{ env.ZOOKEEPER_VERSION }} | |
restore-keys: | | |
zookeeper-${{ runner.os }}-${{ env.ZOOKEEPER_VERSION }} | |
- name: "Set up msys2 if necessary" | |
if: ${{ startsWith( matrix.os, 'windows') && steps.cache-zookeeper.outputs.cache-hit != 'true' }} | |
uses: msys2/setup-msys2@v2 | |
with: | |
release: false # support cache, see https://github.com/msys2/setup-msys2#context | |
- name: "Download zookeeper binary archive in Linux OS" | |
if: ${{ startsWith( matrix.os, 'ubuntu') && steps.cache-zookeeper.outputs.cache-hit != 'true' }} | |
run: | | |
mkdir -p ${{ github.workspace }}/.tmp/zookeeper | |
wget -c https://archive.apache.org/dist/zookeeper/zookeeper-${{ env.ZOOKEEPER_VERSION }}/apache-zookeeper-${{ env.ZOOKEEPER_VERSION }}-bin.tar.gz -O ${{ github.workspace }}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz || | |
wget -c https://apache.website-solution.net/zookeeper/zookeeper-${{ env.ZOOKEEPER_VERSION }}/apache-zookeeper-${{ env.ZOOKEEPER_VERSION }}-bin.tar.gz -O ${{ github.workspace }}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz || | |
wget -c http://apache.stu.edu.tw/zookeeper/zookeeper-${{ env.ZOOKEEPER_VERSION }}/apache-zookeeper-${{ env.ZOOKEEPER_VERSION }}-bin.tar.gz -O ${{ github.workspace }}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz || | |
wget -c http://ftp.jaist.ac.jp/pub/apache/zookeeper/zookeeper-${{ env.ZOOKEEPER_VERSION }}/apache-zookeeper-${{ env.ZOOKEEPER_VERSION }}-bin.tar.gz -O ${{ github.workspace }}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz || | |
wget -c http://apache.mirror.cdnetworks.com/zookeeper/zookeeper-${{ env.ZOOKEEPER_VERSION }}/apache-zookeeper-${{ env.ZOOKEEPER_VERSION }}-bin.tar.gz -O ${{ github.workspace }}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz || | |
wget -c http://mirror.apache-kr.org/apache/zookeeper/zookeeper-${{ env.ZOOKEEPER_VERSION }}/apache-zookeeper-${{ env.ZOOKEEPER_VERSION }}-bin.tar.gz -O ${{ github.workspace }}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz | |
echo "list the downloaded zookeeper binary archive" | |
ls -al ${{ github.workspace }}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz | |
- name: "Download zookeeper binary archive in Windows OS" | |
if: ${{ startsWith( matrix.os, 'windows') && steps.cache-zookeeper.outputs.cache-hit != 'true' }} | |
shell: msys2 {0} | |
run: | | |
mkdir -p ${{ github.workspace }}/.tmp/zookeeper | |
wget -c https://archive.apache.org/dist/zookeeper/zookeeper-${{ env.ZOOKEEPER_VERSION }}/apache-zookeeper-${{ env.ZOOKEEPER_VERSION }}-bin.tar.gz -O ${{ github.workspace }}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz || | |
wget -c https://apache.website-solution.net/zookeeper/zookeeper-${{ env.ZOOKEEPER_VERSION }}/apache-zookeeper-${{ env.ZOOKEEPER_VERSION }}-bin.tar.gz -O ${{ github.workspace }}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz || | |
wget -c http://apache.stu.edu.tw/zookeeper/zookeeper-${{ env.ZOOKEEPER_VERSION }}/apache-zookeeper-${{ env.ZOOKEEPER_VERSION }}-bin.tar.gz -O ${{ github.workspace }}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz || | |
wget -c http://ftp.jaist.ac.jp/pub/apache/zookeeper/zookeeper-${{ env.ZOOKEEPER_VERSION }}/apache-zookeeper-${{ env.ZOOKEEPER_VERSION }}-bin.tar.gz -O ${{ github.workspace }}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz || | |
wget -c http://apache.mirror.cdnetworks.com/zookeeper/zookeeper-${{ env.ZOOKEEPER_VERSION }}/apache-zookeeper-${{ env.ZOOKEEPER_VERSION }}-bin.tar.gz -O ${{ github.workspace }}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz || | |
wget -c http://mirror.apache-kr.org/apache/zookeeper/zookeeper-${{ env.ZOOKEEPER_VERSION }}/apache-zookeeper-${{ env.ZOOKEEPER_VERSION }}-bin.tar.gz -O ${{ github.workspace }}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz | |
echo "list the downloaded zookeeper binary archive" | |
ls -al ${{ github.workspace }}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz | |
unit-test: | |
needs: [build-source, unit-test-prepare] | |
name: "Unit Test On ${{ matrix.os }} (JDK: ${{ matrix.jdk }})" | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ ubuntu-latest, windows-latest ] | |
jdk: [ 8, 11, 17, 19 ] | |
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" | |
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, 19 ] | |
env: | |
DISABLE_FILE_SYSTEM_TEST: true | |
DUBBO_DEFAULT_SERIALIZATION: fastjson2 | |
MAVEN_SUREFIRE_ADD_OPENS: true | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
ref: "3.1" | |
- name: "Set up JDK ${{ matrix.jdk }}" | |
uses: actions/setup-java@v1 | |
with: | |
java-version: ${{ matrix.jdk }} | |
- uses: actions/cache@v3 | |
name: "Cache local Maven repository" | |
with: | |
path: ~/.m2/repository | |
key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}-${{ github.run_id }} | |
restore-keys: | | |
${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} | |
${{ runner.os }}-maven- | |
- uses: actions/cache@v3 | |
name: "Cache zookeeper binary archive" | |
id: "cache-zookeeper" | |
with: | |
path: ${{ github.workspace }}/.tmp/zookeeper | |
key: zookeeper-${{ runner.os }}-${{ env.ZOOKEEPER_VERSION }} | |
restore-keys: | | |
zookeeper-${{ runner.os }}- | |
- name: "Test with Maven with Integration Tests" | |
timeout-minutes: 70 | |
if: ${{ startsWith( matrix.os, 'ubuntu') }} | |
run: ./mvnw --batch-mode --no-snapshot-updates -e --no-transfer-progress --fail-fast clean test verify -Pjacoco -Dmaven.wagon.httpconnectionManager.ttlSeconds=120 -Dmaven.wagon.http.retryHandler.count=5 -DskipTests=false -DskipIntegrationTests=false -Dcheckstyle.skip=false -Dcheckstyle_unix.skip=false -Drat.skip=false -Dmaven.javadoc.skip=true -DembeddedZookeeperPath=${{ github.workspace }}/.tmp/zookeeper | |
- name: "Test with Maven without Integration Tests" | |
timeout-minutes: 90 | |
if: ${{ startsWith( matrix.os, 'windows') }} | |
run: ./mvnw --batch-mode --no-snapshot-updates -e --no-transfer-progress --fail-fast clean test verify -Pjacoco -D"http.keepAlive=false" -D"maven.wagon.http.pool=false" -D"maven.wagon.httpconnectionManager.ttlSeconds=120" -D"maven.wagon.http.retryHandler.count=5" -DskipTests=false -DskipIntegrationTests=true -D"checkstyle.skip=false" -D"checkstyle_unix.skip=true" -D"rat.skip=false" -D"maven.javadoc.skip=true" -D"embeddedZookeeperPath=${{ github.workspace }}/.tmp/zookeeper" | |
integration-test-prepare: | |
runs-on: ubuntu-latest | |
env: | |
JOB_COUNT: 5 | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
repository: 'apache/dubbo-samples' | |
ref: master | |
- name: "Prepare test list" | |
run: | | |
bash ./test/scripts/prepare-test.sh | |
- name: "Upload test list" | |
uses: actions/upload-artifact@v3 | |
with: | |
name: test-list | |
path: test/jobs | |
integration-test-job: | |
needs: [build-source, integration-test-prepare] | |
name: "Integration Test on ubuntu-latest (JobId: ${{matrix.job_id}})" | |
runs-on: ubuntu-latest | |
timeout-minutes: 90 | |
env: | |
JAVA_VER: ${{matrix.jdk}} | |
TEST_CASE_FILE: jobs/testjob_${{matrix.job_id}}.txt | |
strategy: | |
fail-fast: false | |
matrix: | |
jdk: [ 8, 11 ] | |
job_id: [1, 2, 3, 4, 5] | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
repository: 'apache/dubbo-samples' | |
ref: master | |
- name: "Cache local Maven repository" | |
uses: actions/cache@v3 | |
with: | |
path: ~/.m2/repository | |
key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}-${{ github.run_id }} | |
restore-keys: | | |
${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} | |
${{ runner.os }}-maven- | |
- name: "Restore Dubbo cache" | |
uses: actions/cache@v3 | |
with: | |
path: ~/.m2/repository/org/apache/dubbo | |
key: ${{ runner.os }}-dubbo-snapshot-${{ github.sha }}-${{ github.run_id }} | |
restore-keys: | | |
${{ runner.os }}-dubbo-snapshot-${{ github.sha }} | |
${{ runner.os }}-dubbo-snapshot- | |
- name: "Download test list" | |
uses: actions/download-artifact@v3 | |
with: | |
name: test-list | |
path: test/jobs/ | |
- name: "Set up JDK ${{matrix.jdk}}" | |
uses: actions/setup-java@v1 | |
with: | |
java-version: ${{matrix.jdk}} | |
- name: "Init Candidate Versions" | |
run: | | |
DUBBO_VERSION="${{needs.build-source.outputs.version}}" | |
CANDIDATE_VERSIONS="dubbo.version:$DUBBO_VERSION;compiler.version:$DUBBO_VERSION;$CANDIDATE_VERSIONS;dubbo.compiler.version:$DUBBO_VERSION" | |
echo "CANDIDATE_VERSIONS=$CANDIDATE_VERSIONS" >> $GITHUB_ENV | |
- name: "Build test image" | |
run: | | |
cd test && bash ./build-test-image.sh | |
- name: "Run tests" | |
run: cd test && bash ./run-tests.sh | |
- name: "Upload test result" | |
if: always() | |
uses: actions/upload-artifact@v3 | |
with: | |
name: test-result-${{matrix.jdk}} | |
path: test/jobs/*-result* | |
integration-test-result: | |
needs: [integration-test-job] | |
if: always() | |
runs-on: ubuntu-latest | |
env: | |
JAVA_VER: ${{matrix.jdk}} | |
strategy: | |
matrix: | |
jdk: [ 8, 11 ] | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
repository: 'apache/dubbo-samples' | |
ref: master | |
- name: "Download test result" | |
uses: actions/download-artifact@v3 | |
with: | |
name: test-result-${{matrix.jdk}} | |
path: test/jobs/ | |
- name: "Merge test result" | |
run: ./test/scripts/merge-test-results.sh | |
error-code-inspecting: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
ref: "3.1" | |
path: "./dubbo" | |
- uses: actions/checkout@v3 | |
with: | |
repository: 'apache/dubbo-test-tools' | |
ref: main | |
path: "./dubbo-test-tools" | |
- name: "Set up JDK 17" | |
uses: actions/setup-java@v1 | |
with: | |
java-version: 17 | |
- name: "Compile Dubbo (Linux)" | |
run: | | |
cd ${{ github.workspace }}/dubbo | |
./mvnw --batch-mode --no-snapshot-updates -e --no-transfer-progress --fail-fast -T 2C clean install -DskipTests=true -DskipIntegrationTests=true -Dcheckstyle.skip=true -Dcheckstyle_unix.skip=true -Drat.skip=true -Dmaven.javadoc.skip=true | |
- name: "Run Error Code Inspecting" | |
env: | |
DUBBO_ECI_REPORT_AS_ERROR: true | |
run: | | |
cd ${{ github.workspace }}/dubbo-test-tools/dubbo-error-code-inspector | |
../mvnw --batch-mode --no-snapshot-updates -e --no-transfer-progress --fail-fast -T 2C package exec:java -Ddubbo.eci.report-as-error=${DUBBO_ECI_REPORT_AS_ERROR} -Dmaven.test.skip=true -Dmaven.test.skip.exec=true -Ddubbo.eci.path=${{ github.workspace }}/dubbo | |
- name: "Upload error code inspection result" | |
# always() should not be used here, since we don't need to handle the 'canceled' situation. | |
if: ${{ success() || failure() }} | |
uses: actions/upload-artifact@v3 | |
with: | |
name: "error-inspection-result" | |
path: ${{ github.workspace }}/dubbo-test-tools/dubbo-error-code-inspector/error-inspection-result.txt | |
native-image-inspecting: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
ref: "3.1" | |
path: "./dubbo" | |
- name: "Setup GraalVM environment" | |
uses: graalvm/setup-graalvm@v1 | |
with: | |
version: '22.3.0' | |
java-version: '17' | |
components: 'native-image' | |
github-token: ${{ secrets.GITHUB_TOKEN }} | |
native-image-job-reports: 'true' | |
- name: "Setup Zookeeper environment" | |
run: | | |
wget https://dlcdn.apache.org/zookeeper/zookeeper-3.7.1/apache-zookeeper-3.7.1-bin.tar.gz | |
tar -zxvf apache-zookeeper-3.7.1-bin.tar.gz | |
mv apache-zookeeper-3.7.1-bin/conf/zoo_sample.cfg apache-zookeeper-3.7.1-bin/conf/zoo.cfg | |
apache-zookeeper-3.7.1-bin/bin/zkServer.sh start | |
- name: "Check environment" | |
run: | | |
java --version | |
native-image --version | |
- name: "Compile Dubbo (Linux)" | |
run: | | |
cd ${{ github.workspace }}/dubbo | |
./mvnw --batch-mode --no-snapshot-updates -e --no-transfer-progress --fail-fast -T 2C clean install -DskipTests=true -DskipIntegrationTests=true -Dcheckstyle.skip=true -Dcheckstyle_unix.skip=true -Drat.skip=true -Dmaven.javadoc.skip=true | |
- name: "Compile and run Dubbo demo for native (Linux)" | |
run: | | |
cd ${{ github.workspace }}/dubbo/dubbo-demo/dubbo-demo-native/dubbo-demo-native-provider | |
${{ github.workspace }}/dubbo/mvnw --batch-mode --no-snapshot-updates -e --no-transfer-progress --fail-fast -T 2C clean package -P native -Dmaven.test.skip=true native:compile | |
nohup ./target/demo-native-provider & | |
cd ${{ github.workspace }}/dubbo/dubbo-demo/dubbo-demo-native/dubbo-demo-native-consumer | |
${{ github.workspace }}/dubbo/mvnw --batch-mode --no-snapshot-updates -e --no-transfer-progress --fail-fast -T 2C clean package -P native -Dmaven.test.skip=true native:compile | |
./target/demo-native-consumer |