Build and Test Scheduled On 3.3 #16
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.3 | |
on: | |
schedule: | |
- 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 | |
VERSIONS_LIMIT: 4 | |
ALL_REMOTE_VERSION: true | |
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: | |
check-license: | |
runs-on: ubuntu-latest | |
steps: | |
- 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: | |
name: Build Dubbo on ${{ matrix.os }} | |
runs-on: ${{ matrix.os }}-latest | |
strategy: | |
matrix: | |
os: [ ubuntu, windows ] | |
outputs: | |
version: ${{ steps.dubbo-version.outputs.version }} | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
with: | |
ref: ${{ env.DUBBO_BRANCH }} | |
path: dubbo | |
- name: Set up JDK | |
uses: actions/setup-java@v4 | |
with: | |
distribution: zulu | |
java-version: 21 | |
- 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') }} | |
- 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- | |
- name: Clean dubbo cache | |
run: rm -rf ~/.m2/repository/org/apache/dubbo | |
- name: Build Dubbo with maven | |
run: | | |
cd ./dubbo | |
./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 | |
uses: actions/upload-artifact@v3 | |
if: failure() | |
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 }}-latest | |
env: | |
JOB_COUNT: 1 | |
ZOOKEEPER_VERSION: 3.6.4 | |
strategy: | |
matrix: | |
os: [ ubuntu, windows ] | |
steps: | |
- 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 }} | |
- 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: | | |
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 .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 }} | |
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: 120 | |
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, windows ] | |
jdk: [ 8, 11, 17, 21 ] | |
ser: [ hessian2, fastjson2 ] | |
job_id: [ 1 ] | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
with: | |
ref: ${{ env.DUBBO_BRANCH }} | |
- name: Set up JDK | |
uses: actions/setup-java@v4 | |
with: | |
distribution: zulu | |
java-version: ${{ matrix.jdk }} | |
- name: Restore local maven repository | |
uses: actions/cache/restore@v4 | |
with: | |
path: ~/.m2/repository | |
key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} | |
restore-keys: | | |
${{ runner.os }}-maven- | |
- 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: Download test list | |
uses: actions/download-artifact@v3 | |
with: | |
name: unit-test-list | |
path: test/jobs/ | |
- name: Setup tmate session | |
uses: mxschmitt/action-tmate@v3 | |
if: ${{ github.event_name == 'workflow_dispatch' }} | |
with: | |
detached: true | |
- 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 |