Skip to content

Commit

Permalink
Merge pull request #113 from wxbty/master
Browse files Browse the repository at this point in the history
add workflow conf for  benchmark
  • Loading branch information
wxbty authored May 28, 2024
2 parents 6d5163f + c5d0d4a commit d5a9e4d
Showing 1 changed file with 230 additions and 0 deletions.
230 changes: 230 additions & 0 deletions .github/workflows/trigger-sample-benchmark.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,230 @@
name: Manually Triggered benchmark for Dubbo Samples

on:
repository_dispatch:
types: [ manual-trigger ]

permissions:
contents: read

env:
FORK_COUNT: 0
FAIL_FAST: 1
SHOW_ERROR_DETAIL: 1
#multi-version size limit
VERSIONS_LIMIT: 1
CANDIDATE_VERSIONS: '
spring.version:5.3.24;
spring-boot.version:2.7.6;
'

jobs:
check-benchmark-path:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
repository: 'apache/dubbo-samples'
ref: master
- name: Check if directory exists
run: |
#!/bin/bash
cd test
PATH_TO_CHECK="../10-task/dubbo-samples-benchmark/"
if [ ! -d "$PATH_TO_CHECK" ]; then
exit 1
fi
build-source:
name: "Build Dubbo"
needs: check-benchmark-path
runs-on: ubuntu-latest
outputs:
version: ${{ steps.dubbo-version.outputs.version }}
steps:
- uses: actions/checkout@v4
with:
repository: 'apache/dubbo'
ref: 3.3
- name: "Dubbo cache"
id: dubbo-cache
uses: actions/cache@v4
with:
path: ~/.m2/repository/org/apache/dubbo
key: ${{ runner.os }}-dubbo-snapshot-${{ github.sha }}
- name: "Cache local Maven repository"
if: steps.dubbo-cache.outputs.cache-hit != 'true'
uses: actions/cache@v4
with:
path: ~/.m2/repository
key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
restore-keys: |
${{ runner.os }}-maven-
- name: "Set up JDK 17"
if: steps.dubbo-cache.outputs.cache-hit != 'true'
uses: actions/setup-java@v4
with:
distribution: 'zulu'
java-version: 17
- name: "Build Dubbo with Maven"
if: steps.dubbo-cache.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
- name: "Calculate Dubbo Version"
id: dubbo-version
run: |
REVISION=`awk '/<revision>[^<]+<\/revision>/{gsub(/<revision>|<\/revision>/,"",$1);print $1;exit;}' pom.xml`
echo "version=$REVISION" >> $GITHUB_OUTPUT
echo "dubbo version: $REVISION"
echo "commit_id: ${{ github.sha }}"
samples-test-job:
needs: [ build-source ]
name: "Samples benchmark test on ubuntu-latest"
runs-on: ubuntu-latest
timeout-minutes: 90
env:
JAVA_VER: 8
strategy:
matrix:
job_id: [ 1 ]
fail-fast: false
steps:
- uses: actions/checkout@v4
with:
repository: 'apache/dubbo-samples'
ref: master
- name: "Cache local Maven repository"
uses: actions/cache@v4
with:
path: ~/.m2/repository
key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
restore-keys: |
${{ runner.os }}-maven-
- name: "Restore Dubbo cache"
uses: actions/cache@v4
with:
path: ~/.m2/repository/org/apache/dubbo
key: ${{ runner.os }}-dubbo-snapshot-${{ github.sha }}
- name: "Cache Skywalking Agent"
id: cache-skywalking-agent
uses: actions/cache@v4
with:
path: /tmp/skywalking-agent
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: |
wget -c https://archive.apache.org/dist/skywalking/java-agent/9.0.0/apache-skywalking-java-agent-9.0.0.tgz --no-check-certificate
tar -zxvf apache-skywalking-java-agent-9.0.0.tgz -C /tmp
wget -c https://repo1.maven.org/maven2/mysql/mysql-connector-java/8.0.23/mysql-connector-java-8.0.23.jar
mv mysql-connector-java-8.0.23.jar /tmp/
- name: "Mvn Benchmark Skywalking Plugin"
run: |
rm /tmp/skywalking-agent/plugins/*
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/plugins/
- 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.benchmark:1.0.0;dubbo.compiler.version:$DUBBO_VERSION"
echo "CANDIDATE_VERSIONS=$CANDIDATE_VERSIONS" >> $GITHUB_ENV
- name: "Replace runtime parameter"
run: |
RUNTIME_CONFIG_PATH=./10-task/dubbo-samples-benchmark/case-runtime-parameter.conf
rm -rf $RUNTIME_CONFIG_PATH
runtime_para_pairs="${{ github.event.client_payload.prop}}"
IFS='@' read -ra groups <<< "$runtime_para_pairs"
for group in "${groups[@]}"; do
IFS='|' read -ra prop_array <<< "$group"
config_line=""
for ((i=0; i<${#prop_array[@]}; i+=2)); do
config_line+="-D${prop_array[i]}=${prop_array[i+1]} "
done
echo "${config_line% }" >> "$RUNTIME_CONFIG_PATH"
done
- name: "Build test image"
run: |
cd test && bash ./build-test-image.sh
- name: "Run tests"
run: cd test && bash ./run-tests.sh ../10-task/dubbo-samples-benchmark/
- name: "Upload docker log"
uses: actions/upload-artifact@v4
with:
name: samples-docker-log
path: |
./10-task/dubbo-samples-benchmark/target/logs/*.log
/tmp/skywalking-agent/logs/*.log
- name: "Upload jmh output result"
uses: actions/upload-artifact@v4
with:
name: samples-jmh-result
path: /tmp/jmh*.json
- name: "Push results to results repository"
run: |
RESULTS_REPO_OWNER="${{ github.event.client_payload.PUSH_NAME}}"
RESULTS_REPO_BRANCH="${{ github.event.client_payload.RESULTS_REPO_BRANCH}}"
RESULTS_REPO_NAME="${{ github.event.client_payload.REPO_NAME}}"
GITHUB_TOKEN="${{ github.event.client_payload.PUSH_TOKEN}}"
if ! ls /tmp/jmh_result_prop*.json -1q &> /dev/null; then
echo "No file matching /tmp/jmh_result_prop*.json exists. Exiting..."
exit 0
fi
git clone --depth 1 --branch ${RESULTS_REPO_BRANCH} https://github.com/${RESULTS_REPO_OWNER}/${RESULTS_REPO_NAME}.git jmh_result
cd jmh_result
git config user.name 'github-actions[bot]'
git config user.email 'github-actions[bot]@users.noreply.github.com'
WORK_DIR="$(pwd)"
echo "WorkDir: $WORK_DIR"
DIRECTORY_PATH="$WORK_DIR/test-results/scenario"
if [ ! -d ${DIRECTORY_PATH} ];then
mkdir -p $DIRECTORY_PATH;else
rm $DIRECTORY_PATH/*
fi
cp /tmp/jmh_result*.json "$DIRECTORY_PATH"
cp /tmp/jmh_trace*.json "$DIRECTORY_PATH"
merged_file="merged_prop_results.json"
merged_trace_file="merged_prop_traces.json"
json_array=()
for file in $(ls -t1 "$DIRECTORY_PATH"/jmh_result*.json); do
if [ -f "$file" ]; then
echo "fileName=$file"
json_array+=( "$(cat "$file")" )
fi
done
merged_json=$(echo "${json_array[@]}" | jq -s add)
echo "$merged_json" > "$DIRECTORY_PATH/$merged_file"
json_array=()
for file in $(ls -t1 "$DIRECTORY_PATH"/jmh_trace*.json); do
if [ -f "$file" ]; then
json_array+=( "$(cat "$file")" )
fi
done
merged_json=$(echo "${json_array[@]}" | jq -s add)
echo "$merged_json" > "$DIRECTORY_PATH/$merged_trace_file"
git add $DIRECTORY_PATH
git commit -m "Compare prop in $(date +'%Y-%m-%d %H:%M:%S')"
git pull --rebase
git push https://${GITHUB_TOKEN}@github.com/${RESULTS_REPO_OWNER}/${RESULTS_REPO_NAME}.git ${RESULTS_REPO_BRANCH}

0 comments on commit d5a9e4d

Please sign in to comment.