Merge branch 'refs/heads/3.3' into feat/refactor_dir #290
Workflow file for this run
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 For PR" | |
on: [push, pull_request, 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; | |
' | |
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-format: | |
name: "Check if code needs formatting" | |
runs-on: ubuntu-latest | |
steps: | |
- name: "Checkout" | |
uses: actions/checkout@v4 | |
- name: "Setup maven" | |
uses: actions/setup-java@v4 | |
with: | |
java-version: 21 | |
distribution: zulu | |
- name: "Check if code aligns with code style" | |
id: check | |
run: mvn --log-file mvn.log spotless:check | |
continue-on-error: true | |
- name: "Upload checkstyle result" | |
uses: actions/upload-artifact@v4 | |
with: | |
name: checkstyle-result | |
path: mvn.log | |
- name: "Generate Summary for successful run" | |
if: ${{ steps.check.outcome == 'success' }} | |
run: | | |
echo ":ballot_box_with_check: Kudos! No formatting issues found!" >> $GITHUB_STEP_SUMMARY | |
- name: "Generate Summary for failed run" | |
if: ${{ steps.check.outcome == 'failure' }} | |
run: | | |
echo "## :negative_squared_cross_mark: Formatting issues found!" >> $GITHUB_STEP_SUMMARY | |
echo "\`\`\`" >> $GITHUB_STEP_SUMMARY | |
cat mvn.log | grep "ERROR" | sed 's/Check if code needs formatting Check if code aligns with code style [0-9A-Z:.-]\+//' | sed 's/\[ERROR] //' | head -n -11 >> $GITHUB_STEP_SUMMARY | |
echo "\`\`\`" >> $GITHUB_STEP_SUMMARY | |
echo "Please run \`mvn spotless:apply\` to fix the formatting issues." >> $GITHUB_STEP_SUMMARY | |
- name: "Fail if code needs formatting" | |
if: ${{ steps.check.outcome == 'failure' }} | |
uses: actions/[email protected] | |
with: | |
github-token: ${{ secrets.GITHUB_TOKEN }} | |
script: | | |
core.setFailed("Formatting issues found!") | |
license: | |
name: "Check License" | |
needs: check-format | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: "Check License" | |
uses: apache/skywalking-eyes@e1a02359b239bd28de3f6d35fdc870250fa513d5 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
- name: "Set up JDK 21" | |
uses: actions/setup-java@v4 | |
with: | |
distribution: 'zulu' | |
java-version: 21 | |
- name: "Compile Dubbo (Linux)" | |
run: | | |
./mvnw ${{ env.MAVEN_ARGS }} -T 2C clean install -Pskip-spotless -Dmaven.test.skip=true -Dcheckstyle.skip=true -Dcheckstyle_unix.skip=true -Drat.skip=true | |
- name: "Check Dependencies' License" | |
uses: apache/skywalking-eyes/dependency@e1a02359b239bd28de3f6d35fdc870250fa513d5 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
config: .licenserc.yaml | |
mode: check | |
build-source: | |
name: "Build Dubbo" | |
needs: check-format | |
runs-on: ubuntu-latest | |
outputs: | |
version: ${{ steps.dubbo-version.outputs.version }} | |
steps: | |
- name: "Checkout code" | |
uses: actions/checkout@v4 | |
with: | |
path: dubbo | |
- name: "Set up JDK" | |
uses: actions/setup-java@v4 | |
with: | |
distribution: 'zulu' | |
java-version: 21 | |
- name: "Set current date as env variable" | |
run: echo "TODAY=$(date +'%Y%m%d')" >> $GITHUB_ENV | |
- 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') }}-${{ env.TODAY }} | |
- 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-${{ hashFiles('**/pom.xml') }} | |
restore-keys: | | |
${{ 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 }} clean install -Psources,'!demo',skip-spotless,checkstyle -Dmaven.test.skip=true -DembeddedZookeeperPath=${{ github.workspace }}/.tmp/zookeeper | |
- 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') }}-${{ env.TODAY }} | |
- 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" | |
uses: actions/upload-artifact@v4 | |
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" | |
needs: check-format | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
env: | |
ZOOKEEPER_VERSION: 3.7.2 | |
steps: | |
- name: "Cache zookeeper binary archive" | |
uses: actions/cache@v3 | |
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" | |
uses: msys2/setup-msys2@v2 | |
if: ${{ startsWith( matrix.os, 'windows') && steps.cache-zookeeper.outputs.cache-hit != 'true' }} | |
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 | |
unit-test: | |
needs: [check-format, build-source, unit-test-prepare] | |
name: "Unit Test On ubuntu-latest" | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
env: | |
DISABLE_FILE_SYSTEM_TEST: true | |
CURRENT_ROLE: ${{ matrix.case-role }} | |
ZOOKEEPER_VERSION: 3.7.2 | |
steps: | |
- name: "Checkout code" | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: "Set up JDK ${{ matrix.jdk }}" | |
uses: actions/setup-java@v4 | |
with: | |
distribution: 'zulu' | |
java-version: 21 | |
- name: "Set current date as env variable" | |
run: echo "TODAY=$(date +'%Y%m%d')" >> $GITHUB_ENV | |
- name: "Cache local maven repository" | |
uses: actions/cache/restore@v4 | |
with: | |
path: ~/.m2/repository | |
key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}-${{ env.TODAY }} | |
restore-keys: | | |
${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} | |
${{ runner.os }}-maven- | |
- name: "Cache zookeeper binary archive" | |
uses: actions/cache@v3 | |
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" | |
timeout-minutes: 90 | |
run: | | |
set -o pipefail | |
./mvnw ${{ env.MAVEN_ARGS }} clean test verify -Pjacoco,jdk15ge-simple,'!jdk15ge','!demo',skip-spotless,jacoco089 -DtrimStackTrace=false -Dmaven.test.skip=false -Dcheckstyle.skip=false -Dcheckstyle_unix.skip=false -Drat.skip=false -DembeddedZookeeperPath=${{ github.workspace }}/.tmp/zookeeper 2>&1 | tee >(grep -n -B 1 -A 200 "FAILURE! -- in" > test_errors.log) | |
- name: "Print test error log" | |
if: failure() | |
run: cat test_errors.log | |
- name: "Upload coverage result" | |
uses: actions/upload-artifact@v4 | |
with: | |
name: coverage-result | |
path: "**/target/site/**/jacoco.xml" | |
samples-test-prepare: | |
needs: check-format | |
runs-on: ubuntu-latest | |
env: | |
JOB_COUNT: 3 | |
steps: | |
- uses: actions/checkout@v4 | |
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@v4 | |
with: | |
name: samples-test-list | |
path: test/jobs | |
samples-test-job: | |
needs: [check-format, build-source, samples-test-prepare] | |
name: "Samples Test on ubuntu-latest (JobId: ${{matrix.job_id}})" | |
runs-on: ubuntu-latest | |
timeout-minutes: 90 | |
env: | |
JAVA_VER: 8 | |
TEST_CASE_FILE: jobs/testjob_${{matrix.job_id}}.txt | |
strategy: | |
fail-fast: false | |
matrix: | |
job_id: [1,2,3] | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
repository: 'apache/dubbo-samples' | |
ref: master | |
- name: "Set current date as env variable" | |
run: echo "TODAY=$(date +'%Y%m%d')" >> $GITHUB_ENV | |
- name: "Restore local maven repository cache" | |
uses: actions/cache/restore@v4 | |
with: | |
path: ~/.m2/repository | |
key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}-${{ env.TODAY }} | |
restore-keys: | | |
${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} | |
${{ 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 }} | |
restore-keys: | | |
${{ runner.os }}-dubbo-snapshot-${{ github.sha }} | |
${{ runner.os }}-dubbo-snapshot- | |
- name: "Download test list" | |
uses: actions/download-artifact@v4 | |
with: | |
name: samples-test-list | |
path: test/jobs/ | |
- name: "Set up JDK 8" | |
uses: actions/setup-java@v4 | |
with: | |
distribution: 'zulu' | |
java-version: 8 | |
- 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: "merge jacoco result" | |
run: cd test/dubbo-test-jacoco-merger && mvn clean compile exec:java -Dexec.mainClass="org.apache.dubbo.test.JacocoMerge" -Dexec.args="${{github.workspace}}" | |
- name: "Upload jacoco" | |
uses: actions/upload-artifact@v4 | |
with: | |
name: samples-jacoco-result-${{matrix.job_id}} | |
path: target/jacoco*.exec | |
- name: "Upload test result" | |
if: always() | |
uses: actions/upload-artifact@v3 | |
with: | |
name: samples-test-result | |
path: test/jobs/*-result* | |
samples-test-result: | |
needs: [check-format, samples-test-job] | |
if: always() | |
runs-on: ubuntu-latest | |
env: | |
JAVA_VER: 8 | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
repository: 'apache/dubbo-samples' | |
ref: master | |
- name: "Download test result" | |
uses: actions/download-artifact@v3 | |
with: | |
name: samples-test-result | |
path: test/jobs/ | |
- name: "Merge test result" | |
run: ./test/scripts/merge-test-results.sh | |
integration-test-prepare: | |
needs: check-format | |
runs-on: ubuntu-latest | |
env: | |
JOB_COUNT: 3 | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
repository: 'apache/dubbo-integration-cases' | |
ref: main | |
- name: "Prepare test list" | |
run: bash ./test/scripts/prepare-test.sh | |
- name: "Upload test list" | |
uses: actions/upload-artifact@v4 | |
with: | |
name: test-list | |
path: test/jobs | |
integration-test-job: | |
needs: [check-format, 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: 8 | |
TEST_CASE_FILE: jobs/testjob_${{matrix.job_id}}.txt | |
strategy: | |
fail-fast: false | |
matrix: | |
job_id: [1,2,3] | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
repository: 'apache/dubbo-integration-cases' | |
ref: main | |
- name: "Set current date as env variable" | |
run: echo "TODAY=$(date +'%Y%m%d')" >> $GITHUB_ENV | |
- name: "Restore local maven repository cache" | |
uses: actions/cache/restore@v4 | |
with: | |
path: ~/.m2/repository | |
key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}-${{ env.TODAY }} | |
restore-keys: | | |
${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} | |
${{ 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 }} | |
restore-keys: | | |
${{ runner.os }}-dubbo-snapshot-${{ github.sha }} | |
${{ runner.os }}-dubbo-snapshot- | |
- name: "Download test list" | |
uses: actions/download-artifact@v4 | |
with: | |
name: test-list | |
path: test/jobs/ | |
- name: "Set up JDK 8" | |
uses: actions/setup-java@v4 | |
with: | |
distribution: 'zulu' | |
java-version: 8 | |
- 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: "merge jacoco result" | |
run: cd test/dubbo-test-jacoco-merger && mvn clean compile exec:java -Dexec.mainClass="org.apache.dubbo.test.JacocoMerge" -Dexec.args="${{github.workspace}}" | |
- name: "Upload jacoco" | |
uses: actions/upload-artifact@v4 | |
with: | |
name: jacoco-result-${{matrix.job_id}} | |
path: target/jacoco*.exec | |
- name: "Upload test result" | |
if: always() | |
uses: actions/upload-artifact@v3 | |
with: | |
name: test-result | |
path: test/jobs/*-result* | |
integration-test-result: | |
needs: [check-format, integration-test-job] | |
if: always() | |
runs-on: ubuntu-latest | |
env: | |
JAVA_VER: 8 | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
repository: 'apache/dubbo-integration-cases' | |
ref: main | |
- name: "Download test result" | |
uses: actions/download-artifact@v3 | |
with: | |
name: test-result | |
path: test/jobs/ | |
- name: "Merge test result" | |
run: ./test/scripts/merge-test-results.sh | |
jacoco-result-merge: | |
runs-on: ubuntu-latest | |
needs: [check-format, integration-test-result, samples-test-result, unit-test] | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
path: "./dubbo" | |
- uses: actions/checkout@v4 | |
with: | |
repository: 'apache/dubbo-samples' | |
path: "./dubbo-samples" | |
- uses: actions/checkout@v4 | |
with: | |
repository: 'apache/dubbo-integration-cases' | |
path: "./dubbo-integration-cases" | |
- name: "Set up JDK 21" | |
uses: actions/setup-java@v4 | |
with: | |
distribution: 'zulu' | |
java-version: 21 | |
- name: "Restore class result" | |
uses: actions/download-artifact@v4 | |
with: | |
name: "class-file" | |
github-token: ${{ secrets.GITHUB_TOKEN }} | |
path: ${{ github.workspace }} | |
- name: "Unpack class result" | |
run: | | |
cd ${{ github.workspace }}/dubbo | |
unzip -o ${{ github.workspace }}/class.zip | |
- name: "Restore samples jacoco exec" | |
uses: actions/download-artifact@v4 | |
with: | |
pattern: samples-jacoco-result-* | |
github-token: ${{ secrets.GITHUB_TOKEN }} | |
path: dubbo-samples/target/ | |
- name: "Restore integration test jacoco exec" | |
uses: actions/download-artifact@v4 | |
with: | |
pattern: jacoco-result-* | |
github-token: ${{ secrets.GITHUB_TOKEN }} | |
path: dubbo-integration-cases/target/ | |
- name: "Merge samples jacoco result" | |
run: | | |
cd ${{ github.workspace }}/dubbo-samples/test/dubbo-test-jacoco-merger | |
mvn clean compile exec:java -Dexec.mainClass="org.apache.dubbo.test.JacocoReport" -Dexec.args="${{github.workspace}}/dubbo-samples ${{github.workspace}}/dubbo" | |
- name: "Merge integration test jacoco result" | |
run: | | |
cd ${{ github.workspace }}/dubbo-integration-cases/test/dubbo-test-jacoco-merger | |
mvn clean compile exec:java -Dexec.mainClass="org.apache.dubbo.test.JacocoReport" -Dexec.args="${{github.workspace}}/dubbo-integration-cases ${{github.workspace}}/dubbo" | |
- name: "Restore coverage result" | |
uses: actions/download-artifact@v4 | |
with: | |
name: coverage-result | |
github-token: ${{ secrets.GITHUB_TOKEN }} | |
path: dubbo/ | |
- name: "Upload coverage to Codecov" | |
uses: codecov/codecov-action@v3 | |
with: | |
token: ${{ secrets.CODECOV_TOKEN }} | |
version: v0.6.0 | |
verbose: true | |
env: | |
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} | |
error-code-inspecting: | |
needs: check-format | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
path: "./dubbo" | |
- 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 local maven repository cache" | |
uses: actions/cache/restore@v4 | |
id: cache-maven-repository | |
with: | |
path: ~/.m2/repository | |
key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}-${{ env.TODAY }} | |
restore-keys: | | |
${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} | |
${{ runner.os }}-maven- | |
- name: "Compile Dubbo (Linux)" | |
run: | | |
cd ${{ github.workspace }}/dubbo | |
./mvnw ${{ env.MAVEN_ARGS }} -T 2C clean install -P '!demo',skip-spotless -Dmaven.test.skip=true -Dcheckstyle.skip=true -Dcheckstyle_unix.skip=true -Drat.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 ${{ env.MAVEN_ARGS }} -T 2C package exec:java -Ddubbo.eci.report-as-error=${DUBBO_ECI_REPORT_AS_ERROR} -Dmaven.test.skip=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@v4 | |
with: | |
name: "error-inspection-result" | |
path: ${{ github.workspace }}/dubbo-test-tools/dubbo-error-code-inspector/error-inspection-result.txt | |
native-image-inspecting: | |
needs: check-format | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
path: "./dubbo" | |
- name: "Set up 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: "Set up Zookeeper environment" | |
run: | | |
wget https://dlcdn.apache.org/zookeeper/zookeeper-3.8.4/apache-zookeeper-3.8.4-bin.tar.gz | |
tar -zxvf apache-zookeeper-3.8.4-bin.tar.gz | |
mv apache-zookeeper-3.8.4-bin/conf/zoo_sample.cfg apache-zookeeper-3.8.4-bin/conf/zoo.cfg | |
apache-zookeeper-3.8.4-bin/bin/zkServer.sh start | |
- name: "Check environment" | |
run: | | |
java --version | |
native-image --version | |
- name: "Set current date as env variable" | |
run: echo "TODAY=$(date +'%Y%m%d')" >> $GITHUB_ENV | |
- name: "Restore local Maven repository cache" | |
uses: actions/cache/restore@v4 | |
with: | |
path: ~/.m2/repository | |
key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}-${{ env.TODAY }} | |
restore-keys: | | |
${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} | |
${{ runner.os }}-maven- | |
- name: "Compile Dubbo (Linux)" | |
run: | | |
cd ${{ github.workspace }}/dubbo | |
./mvnw ${{ env.MAVEN_ARGS }} -T 2C clean install -P '!demo',skip-spotless -Dmaven.test.skip=true -Dcheckstyle.skip=true -Dcheckstyle_unix.skip=true -Drat.skip=true | |
- name: "Checkout dubbo-samples repository" | |
uses: actions/checkout@v4 | |
with: | |
repository: 'apache/dubbo-samples' | |
ref: master | |
path: "./dubbo-samples" | |
- name: "Compile and run Dubbo native image demo" | |
run: | | |
MVNW="${{ github.workspace }}/dubbo-samples/mvnw ${{ env.MAVEN_ARGS }} -Dmaven.test.skip=true" | |
cd ${{ github.workspace }}/dubbo-samples/2-advanced/dubbo-samples-native-image/dubbo-samples-native-image-provider | |
$MVNW clean package -P native native:compile | |
nohup ./target/dubbo-samples-native-image-provider & | |
sleep 10 | |
curl \ | |
--header "Content-Type: application/json" \ | |
--data '{"name":"Dubbo"}' \ | |
http://localhost:50052/org.apache.dubbo.nativeimage.DemoService/sayHello/ | |