Build and Test Scheduled On master #920
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 master | |
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 | |
JACOCO_ENABLE: true | |
CANDIDATE_VERSIONS: ' | |
spring.version:5.3.24; | |
spring-boot.version:2.7.6; | |
' | |
jobs: | |
# Check ASF License | |
check-license: | |
name: "Check License" | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
ref: 'master' | |
- name: Check License | |
uses: apache/[email protected] | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
- name: "Set up JDK 21" | |
uses: actions/setup-java@v4 | |
with: | |
distribution: 'zulu' | |
java-version: 21 | |
- name: Restore Maven local repository cache | |
uses: actions/cache@v4 | |
with: | |
path: ~/.m2/repository | |
key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} | |
restore-keys: | | |
${{ runner.os }}-maven- | |
${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} | |
- name: Check Dependencies' License | |
uses: apache/skywalking-eyes/dependency@e1a02359b239bd28de3f6d35fdc870250fa513d5 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
config: .licenserc.yaml | |
mode: check | |
# Build dubbo-build-tool | |
build-tools: | |
name: "Build-tools" | |
needs: check-license | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
os: [ ubuntu-latest, windows-latest ] | |
fail-fast: false | |
outputs: | |
cache-key: ${{ steps.dubbo-build-tools.cache }} | |
steps: | |
- name: Support long paths on Windows | |
if: ${{ startsWith( matrix.os, 'windows') }} | |
run: git config --system core.longpaths true | |
- uses: actions/checkout@v4 | |
name: build tools | |
with: | |
repository: 'apache/dubbo' | |
ref: '3.2' | |
path: dubbo | |
- name: "Set up JDK 21" | |
uses: actions/setup-java@v4 | |
with: | |
distribution: 'zulu' | |
java-version: 21 | |
- uses: actions/cache@v4 | |
name: "Cache local Maven repository" | |
with: | |
path: ~/.m2/repository | |
key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} | |
restore-keys: | | |
${{ runner.os }}-maven- | |
${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} | |
- name: "Build tools" | |
run: | | |
cd ./dubbo | |
./mvnw --batch-mode -U -e --no-transfer-progress install -pl dubbo-build-tools -am -DskipTests=true | |
# Build from source code | |
build-source: | |
name: "Build Dubbo-SPI-Extensions" | |
needs: [check-license, build-tools] | |
runs-on: ubuntu-latest | |
# output dubbo-spi-extensions version to others jobs | |
outputs: | |
version: ${{ steps.dubbo-spi-extensions-version.outputs.version }} | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
ref: "master" | |
path: dubbo-spi-extensions | |
- uses: actions/setup-java@v4 | |
with: | |
distribution: 'zulu' | |
java-version: 8 | |
- uses: actions/cache@v4 | |
name: "Cache local Maven repository" | |
with: | |
path: ~/.m2/repository | |
key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}-${{ github.run_id }} | |
restore-keys: | | |
${{ runner.os }}-maven- | |
${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} | |
- name: "Compile Dubbo-SPI-Extensions (Linux)" | |
run: | | |
cd ./dubbo-spi-extensions | |
./mvnw --batch-mode --no-snapshot-updates -e --no-transfer-progress --fail-fast -T 2C clean compile -DskipTests=true -DskipIntegrationTests=true -Dcheckstyle.skip=true -Dcheckstyle_unix.skip=true -Drat.skip=true -Dmaven.javadoc.skip=true | |
- name: "Build Dubbo-SPI-Extensions with Maven" | |
run: | | |
cd ./dubbo-spi-extensions | |
./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 class result" | |
run: | | |
shopt -s globstar | |
zip ${{ github.workspace }}/class.zip **/target/classes/* -r | |
- name: "Upload class result" | |
uses: actions/upload-artifact@v4 | |
with: | |
name: "class-file" | |
path: ${{ github.workspace }}/class.zip | |
- name: "Pack checkstyle file if failure" | |
if: failure() | |
run: zip ${{ github.workspace }}/checkstyle.zip *checkstyle* -r | |
- name: "Upload checkstyle file if failure" | |
if: failure() | |
uses: actions/upload-artifact@v4 | |
with: | |
name: "checkstyle-file" | |
path: ${{ github.workspace }}/checkstyle.zip | |
- name: "Calculate Dubbo-SPI-Extensions Version" | |
id: dubbo-spi-extensions-version | |
run: | | |
REVISION=`awk '/<revision>[^<]+<\/revision>/{gsub(/<revision>|<\/revision>/,"",$1);print $1;exit;}' ./dubbo-spi-extensions/pom.xml` | |
echo "version=$REVISION" >> $GITHUB_OUTPUT | |
echo "dubbo-spi-extensions version: $REVISION" | |
# Download dependencies Prepare for unit test | |
unit-test-prepare: | |
name: "Preparation for Unit Test" | |
needs: [check-license] | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
os: [ ubuntu-latest, windows-latest ] | |
env: | |
ZOOKEEPER_VERSION: 3.6.3 | |
steps: | |
- uses: actions/cache@v4 | |
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" | |
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 | |
- uses: actions/cache@v4 | |
name: "Cache secret key" | |
id: "cache-secret-cert" | |
with: | |
path: ${{ github.workspace }}/.tmp/rsa | |
key: secret-rsa-${{ runner.os }}-${{ github.run_id }} | |
- name: "Create Secret" | |
run: | | |
mkdir -p ${{ github.workspace }}/.tmp/rsa | |
cd ${{ github.workspace }}/.tmp/rsa | |
openssl genrsa -out rsa_private.pem 1024 | |
openssl rsa -in rsa_private.pem -pubout -out rsa_public.pem | |
echo "Current workflow run id: ${{ github.run_id }}" | |
echo "Start Print Rsa Public Key ---" | |
cat rsa_public.pem | |
echo "--- End Print Rsa Public Key" | |
# Start unit test | |
unit-test: | |
needs: [check-license, build-source, unit-test-prepare] | |
name: "Unit Test ${{ matrix.os }} with JDK ${{ matrix.jdk }}" | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
os: [ ubuntu-latest, windows-latest ] | |
jdk: [ 8, 11 ] | |
fail-fast: false | |
env: | |
DISABLE_FILE_SYSTEM_TEST: true | |
CURRENT_ROLE: ${{ matrix.case-role }} | |
DUBBO_DEFAULT_SERIALIZATION: fastjson2 | |
steps: | |
- name: Support Windows | |
if: ${{ startsWith( matrix.os, 'windows') }} | |
run: | | |
git config --system core.longpaths true | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: "Set up JDK ${{ matrix.jdk }}" | |
uses: actions/setup-java@v4 | |
with: | |
distribution: 'zulu' | |
java-version: 8 | |
- uses: actions/cache@v4 | |
name: "Cache local Maven repository" | |
with: | |
path: ~/.m2/repository | |
key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}-${{ github.run_id }} | |
restore-keys: | | |
${{ runner.os }}-maven- | |
${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} | |
- uses: actions/cache@v4 | |
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 }}- | |
- uses: actions/cache@v4 | |
name: "Cache secret key" | |
id: "cache-secret-cert" | |
with: | |
path: ${{ github.workspace }}/.tmp/rsa | |
key: secret-rsa-${{ runner.os }}-${{ github.run_id }} | |
# - name: "Get sonarcloud token" | |
# if: ${{ github.repository == 'apache/dubbo-spi-extensions' }} | |
# run: | | |
# curl "http://dubbo-vm.apache.org:8000/token?workflow_id=${{ github.run_id }}" -o ${{ github.workspace }}/.tmp/encrypted-sonarcloud-token | |
# openssl rsautl -decrypt -in ${{ github.workspace }}/.tmp/encrypted-sonarcloud-token -out ${{ github.workspace }}/.tmp/decrypted-sonarcloud-token -inkey ${{ github.workspace }}/.tmp/rsa/rsa_private.pem | |
# - name: "Test with Maven with SonarCloud Scan" | |
# if: ${{ github.repository == 'apache/dubbo-spi-extensions' }} | |
# timeout-minutes: 70 | |
# env: | |
# # Needed to get some information about the pull request, if any | |
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
# run: | | |
# source ${{ github.workspace }}/.tmp/decrypted-sonarcloud-token | |
# ./mvnw --batch-mode --no-snapshot-updates -e --no-transfer-progress --fail-fast clean test verify org.sonarsource.scanner.maven:sonar-maven-plugin:sonar -Pjacoco,jdk15ge-simple,'!jdk15ge',jacoco089 -Dsonar.host.url=https://sonarcloud.io -Dsonar.organization=apache -Dsonar.projectKey=apache_dubbo -DtrimStackTrace=false -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 -Dsonar.coverage.jacoco.xmlReportPaths=dubbo-test/dubbo-dependencies-all/target/site/jacoco-aggregate/jacoco.xml -Dsonar.login=${SONAR_TOKEN} | |
- name: "Test with Maven without SonarCloud Scan On Linux" | |
if: ${{ startsWith( matrix.os, 'linux') || startsWith( matrix.os, 'ubuntu') }} | |
timeout-minutes: 70 | |
run: | | |
./mvnw --batch-mode --no-snapshot-updates -e --no-transfer-progress --fail-fast clean test verify -D"maven.wagon.httpconnectionManager.ttlSeconds=120" -Pjacoco -DtrimStackTrace=false -D"maven.wagon.http.retryHandler.count=5" -DskipTests=false -DskipIntegrationTests=false -D"checkstyle.skip=false" -D"checkstyle_unix.skip=false" -D"rat.skip=false" -D"maven.javadoc.skip=true" -D"embeddedZookeeperPath=${{ github.workspace }}/.tmp/zookeeper" | |
- name: "Test with Maven without SonarCloud Scan On Windows" | |
if: ${{ startsWith( matrix.os, 'windows') }} | |
timeout-minutes: 70 | |
run: | | |
./mvnw --batch-mode --no-snapshot-updates -e --no-transfer-progress --fail-fast clean test verify -D"maven.wagon.httpconnectionManager.ttlSeconds=120" -Pjacoco -DtrimStackTrace=false -D"maven.wagon.http.retryHandler.count=5" -DskipTests=false -DskipIntegrationTests=false -D"checkstyle.skip=false" -D"checkstyle_unix.skip=true" -D"rat.skip=false" -D"maven.javadoc.skip=true" -D"embeddedZookeeperPath=${{ github.workspace }}/.tmp/zookeeper" | |
- name: "Upload surefire-reports if failure" | |
if: ${{ failure() }} | |
uses: actions/upload-artifact@v4 | |
with: | |
name: surefire-reports-${{ matrix.os }}-${{ matrix.jdk }} | |
path: "**/target/surefire-reports/**" | |
- name: "Upload coverage result" | |
uses: actions/upload-artifact@v4 | |
with: | |
name: coverage-result-${{ matrix.os }}-${{ matrix.jdk }} | |
path: "**/target/site/**/jacoco.xml" | |
- name: "Upload coverage to Codecov" | |
uses: codecov/codecov-action@v4 | |
# error-code-inspecting: | |
# needs: [check-license, build-tools] | |
# runs-on: ubuntu-latest | |
# steps: | |
# - uses: actions/checkout@v4 | |
# with: | |
# path: "./dubbo-spi-extensions" | |
# - uses: actions/checkout@v4 | |
# with: | |
# repository: 'apache/dubbo-test-tools' | |
# ref: main | |
# path: "./dubbo-test-tools" | |
# - name: "Set up JDK 21" | |
# uses: actions/setup-java@v4 | |
# with: | |
# distribution: 'zulu' | |
# java-version: 21 | |
# - name: Restore Maven local repository cache | |
# uses: actions/cache@v4 | |
# with: | |
# path: ~/.m2/repository | |
# key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} | |
# restore-keys: | | |
# ${{ runner.os }}-maven- | |
# ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} | |
# - name: "Compile Dubbo-SPI-Extensions (Linux)" | |
# run: | | |
# cd ${{ github.workspace }}/dubbo-spi-extensions | |
# ./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-spi-extensions | |
# - 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@v4 | |
# with: | |
# name: "error-inspection-result" | |
# path: ${{ github.workspace }}/dubbo-test-tools/dubbo-error-code-inspector/error-inspection-result.txt |