update github-workflow (#1200) #1278
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: Dubbo 3.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 | |
VERSIONS_LIMIT: 4 | |
CANDIDATE_VERSIONS: ' | |
spring.version:5.3.24,6.1.5; | |
spring-boot.version:2.7.6,3.2.3; | |
' | |
DUBBO_REF: '3.3' | |
jobs: | |
build-samples: | |
needs: [build-dubbo] | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Cache local Maven repository | |
uses: actions/cache@v3 | |
with: | |
path: ~/.m2/repository | |
key: ${{ runner.os }}-samples-maven-${{ hashFiles('**/pom.xml') }} | |
restore-keys: | | |
${{ runner.os }}-samples-maven- | |
- name: Set up JDK 21 | |
uses: actions/setup-java@v3 | |
with: | |
distribution: 'zulu' | |
java-version: 21 | |
- name: Build with Maven | |
run: | | |
./mvnw $BUILD_OPTS | |
- name: Clean with Maven | |
run: | | |
./mvnw --batch-mode --no-snapshot-updates --no-transfer-progress --settings ${{github.workspace}}/.mvn/settings.xml clean | |
build-dubbo: | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
outputs: | |
commit_id: ${{ steps.git-checker.outputs.commit_id }} | |
version: ${{ steps.git-checker.outputs.version }} | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
repository: 'apache/dubbo' | |
ref: ${{env.DUBBO_REF}} | |
- name: Get commit id and dubbo version | |
id: git-checker | |
run: | | |
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=$(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@v3 | |
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@v3 | |
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 17 | |
if: steps.dubbocache.outputs.cache-hit != 'true' | |
uses: actions/setup-java@v3 | |
with: | |
distribution: 'zulu' | |
java-version: 17 | |
- 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: 5 | |
steps: | |
- uses: actions/checkout@v3 | |
- 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 | |
- name: "Cache Skywalking Agent" | |
id: cache-skywalking-agent | |
uses: actions/cache@v4 | |
with: | |
path: /tmp/skywalking-agent/dubbo-samples-benchmark-agent.jar | |
key: ${{ runner.os }}-skywalking-agent-9.0.0 | |
- name: "Cache MySQL Driver" | |
id: cache-mysql-driver | |
uses: actions/cache@v4 | |
with: | |
path: /tmp/mysql-connector-java-8.0.23.jar | |
key: ${{ runner.os }}-mysql-driver-8.0.23 | |
- name: "Download Skywalking Agent and MySQL Driver" | |
if: steps.cache-skywalking-agent.outputs.cache-hit != 'true' || steps.cache-mysql-driver.outputs.cache-hit != 'true' | |
run: | | |
download_with_retry() { | |
local url=$1 | |
local dest=$2 | |
local retries=3 | |
local count=0 | |
local success=0 | |
while [ $count -lt $retries ]; do | |
echo "Attempt $(($count+1)) to download $url" | |
wget -c $url --no-check-certificate -O $dest && success=1 && break | |
count=$(($count+1)) | |
echo "Retry in 5 seconds..." | |
sleep 5 | |
done | |
if [ $success -ne 1 ]; then | |
echo "Failed to download $url after $retries attempts." | |
exit 1 | |
fi | |
} | |
download_with_retry "https://archive.apache.org/dist/skywalking/java-agent/9.0.0/apache-skywalking-java-agent-9.0.0.tgz" "/tmp/apache-skywalking-java-agent-9.0.0.tgz" | |
tar -zxvf /tmp/apache-skywalking-java-agent-9.0.0.tgz -C /tmp | |
download_with_retry "https://repo1.maven.org/maven2/mysql/mysql-connector-java/8.0.23/mysql-connector-java-8.0.23.jar" "/tmp/mysql-connector-java-8.0.23.jar" | |
- name: "Mvn Benchmark Skywalking Plugin" | |
run: | | |
rm -rf /tmp/skywalking-agent/dubbo-samples-benchmark-agent.jar | |
cd 10-task/dubbo-samples-benchmark/dubbo-samples-benchmark-agent && mvn --batch-mode --no-snapshot-updates -e --no-transfer-progress clean package -Dmaven.test.skip=true -Dmaven.test.skip.exec=true | |
cp -f ./target/dubbo-samples-benchmark-agent.jar /tmp/skywalking-agent/ | |
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 | |
ALL_REMOTE_VERSION: true | |
strategy: | |
fail-fast: false | |
matrix: | |
java: [8, 11, 17, 21] | |
job_id: [1,2,3,4,5] | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Set up JDK ${{matrix.java}} | |
uses: actions/setup-java@v3 | |
with: | |
distribution: 'zulu' | |
java-version: ${{matrix.java}} | |
- name: Cache local Maven repository | |
uses: actions/cache@v3 | |
with: | |
path: ~/.m2/repository | |
key: ${{ runner.os }}-samples-maven-${{ hashFiles('**/pom.xml') }} | |
restore-keys: | | |
${{ runner.os }}-samples-maven- | |
- name: Dubbo cache | |
uses: actions/cache@v3 | |
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@v3 | |
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;compiler.version:$DUBBO_VERSION;dubbo.compiler.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@v3 | |
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, 17, 21] | |
env: | |
JAVA_VER: ${{matrix.java}} | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Download test result | |
uses: actions/download-artifact@v3 | |
with: | |
name: test-result | |
path: test/jobs/ | |
- name: Merge test result - java ${{matrix.java}} | |
run: ./test/scripts/merge-test-results.sh |