[Enhancement] Add logs for slow interfaces #16364
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: CI PIPELINE | |
on: | |
pull_request: | |
types: | |
- opened | |
- synchronize | |
branches: | |
- main | |
concurrency: | |
group: ${{ github.event.number }} | |
cancel-in-progress: true | |
jobs: | |
sync-checker: | |
runs-on: [self-hosted, normal] | |
name: RUN CHECKER | |
env: | |
PR_NUMBER: ${{ github.event.number }} | |
CODE_PATH: ${{ github.workspace }} | |
BRANCH: ${{ github.base_ref }} | |
GH_TOKEN: ${{ github.token }} | |
outputs: | |
PASS: ${{ steps.check.outputs.pass }} | |
steps: | |
- name: Check | |
id: check | |
if: > | |
(!contains(github.event.pull_request.title, '(sync #') && | |
!contains(github.event.pull_request.labels.*.name, 'sync') && | |
(!startsWith(github.head_ref, github.base_ref) || !contains(github.head_ref, '-sync-'))) || | |
contains(github.event.pull_request.labels.*.name, 'force-check') | |
run: | | |
echo "pass=true" >> $GITHUB_OUTPUT | |
be-checker: | |
runs-on: ubuntu-latest | |
needs: sync-checker | |
name: BE FILTER | |
if: needs.sync-checker.outputs.PASS == 'true' | |
outputs: | |
output1: ${{ steps.be-changes-info.outputs.be }} | |
output2: ${{ steps.be-changes-info.outputs.thirdparty }} | |
steps: | |
- uses: dorny/paths-filter@v2 | |
id: changes | |
with: | |
filters: | | |
be: | |
- 'be/**' | |
- 'gensrc/**' | |
- 'run-be-ut.sh' | |
- 'build.sh' | |
- 'thirdparty/**' | |
- 'docker/dockerfiles/dev-env/dev-env.Dockerfile' | |
thirdparty: | |
- 'thirdparty/**' | |
- 'docker/dockerfiles/dev-env/dev-env.Dockerfile' | |
- name: BE CHECK INFO | |
id: be-changes-info | |
run: | | |
echo "be=${{ steps.changes.outputs.be }}" >> $GITHUB_OUTPUT | |
echo "thirdparty=${{ steps.changes.outputs.thirdparty }}" >> $GITHUB_OUTPUT | |
clang-format: | |
runs-on: [self-hosted, light] | |
needs: be-checker | |
name: Clang-Format | |
env: | |
PR_NUMBER: ${{ github.event.number }} | |
if: ${{ needs.be-checker.outputs.output1 == 'true' }} | |
steps: | |
- name: clean | |
run: | | |
rm -rf ${{ github.workspace }} | |
mkdir -p ${{ github.workspace }} | |
- name: Checkout Code | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- name: BRANCH INFO | |
id: branch | |
run: | | |
echo ${{github.base_ref}} | |
echo "branch=${{github.base_ref}}" >> $GITHUB_OUTPUT | |
- name: Checkout PR | |
run: | | |
BRANCH=${{steps.branch.outputs.branch}} | |
git config --global user.name "wanpengfei-git"; | |
git config --global user.email "[email protected]"; | |
git checkout $BRANCH; | |
git pull; | |
BRANCH_NAME="${BRANCH}-${PR_NUMBER}"; | |
git fetch origin pull/${PR_NUMBER}/head:${BRANCH_NAME}; | |
git checkout $BRANCH_NAME; | |
git checkout -b merge_pr; | |
git merge --squash --no-edit ${BRANCH} || (echo "::error::Merge conflict, please check." && exit -1); | |
- name: Run Clang-Format | |
run: | | |
export PATH=/var/lib/llvm/bin:$PATH | |
bash build-support/check-format.sh | |
- name: Clean ENV | |
if: always() | |
run: | | |
rm -rf ${{ github.workspace }}/* | |
thirdparty-update: | |
runs-on: [self-hosted, normal] | |
needs: [ be-checker, clang-format ] | |
name: Thirdparty Update | |
env: | |
PR_NUMBER: ${{ github.event.number }} | |
BRANCH: ${{ github.base_ref }} | |
REPO: ${{ github.repository }} | |
outputs: | |
ip: ${{ steps.update-image.outputs.ip }} | |
instance_id: ${{ steps.update-image.outputs.instance_id }} | |
image_cache_id: ${{ steps.update-image.outputs.image_cache_id }} | |
steps: | |
- name: clean | |
run: | | |
rm -rf ${{ github.workspace }} | |
mkdir -p ${{ github.workspace }} | |
- name: Checkout Code | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- name: Update Image | |
id: update-image | |
run: | | |
if [[ "${{ needs.be-checker.outputs.output2 }}" == 'true' ]]; then | |
rm -rf ./ci-tool && cp -rf /var/lib/ci-tool ./ci-tool && cd ci-tool && git pull && source lib/init.sh | |
./bin/run-pr-update-image.sh | |
fi | |
- name: Clean ENV | |
if: always() | |
run: | | |
if [[ "${{ needs.be-checker.outputs.output2 }}" == 'true' ]]; then | |
cd ci-tool && source lib/init.sh | |
./bin/elastic-cluster.sh --delete | |
fi | |
rm -rf ${{ github.workspace }}/* | |
be-ut: | |
runs-on: [self-hosted, normal] | |
needs: [ be-checker, thirdparty-update ] | |
timeout-minutes: 180 | |
name: BE UT | |
env: | |
PR_NUMBER: ${{ github.event.number }} | |
BRANCH: ${{ github.base_ref }} | |
steps: | |
- name: BRANCH INFO | |
id: branch | |
run: | | |
echo ${{github.base_ref}} | |
echo "branch=${{github.base_ref}}" >> $GITHUB_OUTPUT | |
- name: UPDATE ECI & RUN UT | |
id: run_ut | |
shell: bash | |
timeout-minutes: 180 | |
run: | | |
rm -rf ./ci-tool && cp -rf /var/lib/ci-tool ./ci-tool && cd ci-tool && git pull && source lib/init.sh | |
if [[ "${{ needs.be-checker.outputs.output2 }}" == 'true' ]]; then | |
export image_cache_id=${{ needs.thirdparty-update.outputs.image_cache_id }} | |
export image_tag=$BRANCH-$PR_NUMBER | |
fi | |
./bin/elastic-ut.sh --pr ${PR_NUMBER} --module be --repository ${{ github.repository }} --with-gcov | |
- name: clean ECI | |
if: always() | |
run: | | |
echo ${{ steps.run_ut.outputs.ECI_ID }} | |
eci rm ${{ steps.run_ut.outputs.ECI_ID }} | |
- name: Upload Log | |
uses: actions/upload-artifact@v3 | |
if: always() && steps.run_ut.outcome == 'failure' | |
with: | |
name: BE UT LOG | |
path: ${{ steps.run_ut.outputs.BE_LOG }} | |
retention-days: 1 | |
- name: Clean ENV | |
if: always() | |
run: | | |
rm -f ${{ steps.run_ut.outputs.RES_FILE }} | |
rm -f ${{ steps.run_ut.outputs.RES_LOG }} | |
rm -rf ${{ steps.run_ut.outputs.BE_LOG }} | |
rm -rf ${{ github.workspace }}/* | |
clang-tidy: | |
runs-on: [self-hosted, normal] | |
needs: [ be-checker, thirdparty-update ] | |
timeout-minutes: 90 | |
name: Clang-Tidy | |
env: | |
PR_NUMBER: ${{ github.event.number }} | |
BRANCH: ${{ github.base_ref }} | |
steps: | |
- name: clean | |
run: | | |
rm -rf ${{ github.workspace }} | |
mkdir -p ${{ github.workspace }} | |
- name: BRANCH INFO | |
id: branch | |
run: | | |
echo ${{github.base_ref}} | |
echo "branch=${{github.base_ref}}" >> $GITHUB_OUTPUT | |
- name: UPDATE ECI & RUN Clang Tidy | |
id: run_clang_tidy | |
shell: bash | |
timeout-minutes: 60 | |
run: | | |
rm -rf ./ci-tool && cp -rf /var/lib/ci-tool ./ci-tool && cd ci-tool && git pull && source lib/init.sh | |
if [[ "${{ needs.be-checker.outputs.output2 }}" == 'true' ]]; then | |
export image_cache_id=${{ needs.thirdparty-update.outputs.image_cache_id }} | |
export image_tag=$BRANCH-$PR_NUMBER | |
fi | |
./bin/elastic-build.sh --pr ${PR_NUMBER} --repository ${{ github.repository }} --be --clang-tidy | |
- name: clean ECI | |
if: always() | |
run: | | |
echo ${{ steps.run_clang_tidy.outputs.ECI_ID }} | |
eci rm ${{ steps.run_clang_tidy.outputs.ECI_ID }} | |
- name: Clean ENV | |
if: always() | |
run: | | |
rm -f ${{ steps.run_clang_tidy.outputs.RES_FILE }} | |
rm -f ${{ steps.run_clang_tidy.outputs.RES_LOG }} | |
rm -rf ${{ github.workspace }}/* | |
fe-checker: | |
runs-on: ubuntu-latest | |
needs: sync-checker | |
name: FE FILTER | |
if: needs.sync-checker.outputs.PASS == 'true' | |
outputs: | |
output1: ${{ steps.fe-changes-info.outputs.fe }} | |
steps: | |
- uses: dorny/paths-filter@v2 | |
id: changes | |
with: | |
filters: | | |
fe: | |
- 'fe/**' | |
- 'gensrc/**' | |
- 'run-fe-ut.sh' | |
- 'java-extensions/**' | |
- 'build.sh' | |
- run: echo ${{ steps.changes.outputs.fe }} | |
- name: FE CHECK INFO | |
id: fe-changes-info | |
run: | | |
echo "fe=${{ steps.changes.outputs.fe }}" >> $GITHUB_OUTPUT | |
fe-codestyle-check: | |
runs-on: ubuntu-latest | |
needs: fe-checker | |
if: needs.fe-checker.outputs.output1 == 'true' | |
name: FE Code Style Check | |
env: | |
PR_NUMBER: ${{ github.event.number }} | |
steps: | |
- name: clean | |
run: | | |
rm -rf ${{ github.workspace }} | |
mkdir -p ${{ github.workspace }} | |
- uses: dorny/paths-filter@v2 | |
id: java-file | |
name: JAVA FILE | |
with: | |
filters: | | |
java: | |
- '**.java' | |
- run: echo ${{ steps.java-file.outputs.java }} | |
- name: BRANCH INFO | |
id: branch | |
run: | | |
echo ${{github.base_ref}} | |
echo "branch=${{github.base_ref}}" >> $GITHUB_OUTPUT | |
- uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- name: Checkout PR | |
run: | | |
BRANCH=${{steps.branch.outputs.branch}} | |
git config --global user.name "wanpengfei-git"; | |
git config --global user.email "[email protected]"; | |
git checkout $BRANCH; | |
git pull; | |
BRANCH_NAME="${BRANCH}-${PR_NUMBER}"; | |
git fetch origin pull/${PR_NUMBER}/head:${BRANCH_NAME}; | |
git checkout $BRANCH_NAME; | |
git checkout -b merge_pr; | |
git merge --squash --no-edit ${BRANCH} || (echo "::error::Merge conflict, please check." && exit -1); | |
- name: Copy checkstyle files | |
if: ${{ steps.java-file.outputs.java == 'true' }} | |
run: | | |
cp fe/checkstyle* . | |
- name: Run java checkstyle | |
if: ${{ steps.java-file.outputs.java == 'true' }} | |
uses: dbelyaev/[email protected] | |
with: | |
workdir: "./fe" | |
checkstyle_config: checkstyle.xml | |
reporter: 'github-pr-check' | |
github_token: ${{ secrets.GITHUB_TOKEN }} | |
fail_on_error: true | |
level: error | |
sonarcloud-fe-checker: | |
runs-on: [self-hosted, normal] | |
needs: fe-checker | |
if: needs.fe-checker.outputs.output1 == 'true' && github.repository == 'StarRocks/starrocks' | |
name: FE Sonarcloud Check | |
env: | |
PR_NUMBER: ${{ github.event.number }} | |
CODE_PATH: ${{ github.workspace }} | |
BRANCH: ${{ github.base_ref }} | |
GH_TOKEN: ${{ github.token }} | |
steps: | |
- name: clean | |
run: | | |
rm -rf ${{ github.workspace }} | |
mkdir -p ${{ github.workspace }} | |
- uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- name: Checkout PR | |
run: | | |
rm -rf ./ci-tool && cp -rf /var/lib/ci-tool ./ci-tool && cd ci-tool && git pull && source lib/init.sh && ./bin/checkout.sh | |
- name: Cache SonarCloud packages | |
uses: actions/cache@v3 | |
with: | |
path: ~/.sonar/cache | |
key: ${{ runner.os }}-sonar | |
restore-keys: ${{ runner.os }}-sonar | |
- name: Analyze FE | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Needed to get PR information, if any | |
SONAR_TOKEN: f0fb4d25c03bae90c2e994c45c29c49dc86fc169 # ${{ secrets.SONAR_TOKEN }} | |
run: | | |
set -x | |
export JAVA_HOME=/var/local/env/jdk17.0.8; | |
export PATH=$JAVA_HOME/bin:/var/local/env/tools/maven/bin:$PATH; | |
export MAVEN_OPTS=-D"maven.repo.local"=/var/local/env/.m2/repository; | |
export STARROCKS_HOME=${{ github.workspace }} | |
source env.sh | |
mkdir -p thirdparty/installed/bin/ | |
cd thirdparty/installed/bin/ && ln -s /var/local/env/tools/thrift_0.13/thrift thrift | |
cd ${{ github.workspace }}/fe | |
sed -i 's#<tasks>#<target>#g' fe-core/pom.xml | |
sed -i 's#</tasks>#</target>#g' fe-core/pom.xml | |
mvn -B -DskipTests verify org.sonarsource.scanner.maven:sonar-maven-plugin:sonar -Dsonar.projectKey=StarRocks_starrocks -Dsonar.pullrequest.key=${{ github.event.number }} -Dsonar.pullrequest.base=${{ github.base_ref }} -Dsonar.pullrequest.branch=${{ github.head_ref }} | |
- name: clean | |
if: always() | |
run: | | |
rm -rf ${{ github.workspace }}/* | |
fe-ut: | |
runs-on: [self-hosted, normal] | |
needs: [fe-codestyle-check] | |
name: FE UT | |
env: | |
PR_NUMBER: ${{ github.event.number }} | |
CODE_PATH: ${{ github.workspace }} | |
BRANCH: ${{ github.base_ref }} | |
GH_TOKEN: ${{ github.token }} | |
steps: | |
- name: clean | |
run: | | |
rm -rf ${{ github.workspace }} | |
mkdir -p ${{ github.workspace }} | |
- name: BRANCH INFO | |
id: branch | |
run: | | |
echo "branch=${{github.base_ref}}" >> $GITHUB_OUTPUT | |
repo="${{ github.repository }}" | |
bucket_prefix=`echo ${repo%/*} | tr '[:upper:]' '[:lower:]'` | |
echo "bucket_prefix=${bucket_prefix}" >> $GITHUB_OUTPUT | |
- uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- name: Checkout PR | |
run: | | |
cd /var/lib/ci-tool/ && git pull && ./bin/checkout.sh | |
- name: UPDATE ECI & RUN UT | |
id: run_ut | |
shell: bash | |
timeout-minutes: 60 | |
run: | | |
rm -rf ./ci-tool && cp -rf /var/lib/ci-tool ./ci-tool && cd ci-tool && git pull && source lib/init.sh | |
./bin/elastic-ut.sh --pr ${PR_NUMBER} --module fe --branch ${{steps.branch.outputs.branch}} --build Release --repository ${{ github.repository }} | |
- name: Clean ECI | |
if: always() | |
run: | | |
echo ${{ steps.run_ut.outputs.ECI_ID }} | |
echo ">>> Dmesg info:" | |
eci exec ${{ steps.run_ut.outputs.ECI_ID }} bash -c "dmesg -T" | |
eci rm ${{ steps.run_ut.outputs.ECI_ID }} | |
- name: Upload log | |
if: always() | |
uses: actions/upload-artifact@v3 | |
with: | |
name: FE UT LOG | |
path: ${{ steps.run_ut.outputs.RES_LOG }} | |
retention-days: 1 | |
- name: Clean ENV | |
if: always() | |
run: | | |
rm -rf ${{ steps.run_ut.outputs.FE_REPORT_DIR }} | |
rm -f ${{ steps.run_ut.outputs.RES_FILE }} | |
rm -f ${{ steps.run_ut.outputs.RES_LOG }} | |
rm -rf ${{ steps.run_ut.outputs.COV_DIR }} | |
rm -rf ${{ github.workspace }}/* | |
test-checker: | |
runs-on: ubuntu-latest | |
needs: sync-checker | |
name: TEST FILTER | |
if: needs.sync-checker.outputs.PASS == 'true' | |
outputs: | |
output1: ${{ steps.test-changes-info.outputs.test }} | |
steps: | |
- uses: dorny/paths-filter@v2 | |
id: changes | |
with: | |
filters: | | |
test: | |
- 'test/**' | |
- name: FE CHECK INFO | |
id: test-changes-info | |
run: | | |
echo "test=${{ steps.changes.outputs.test }}" >> $GITHUB_OUTPUT | |
build: | |
runs-on: [self-hosted, normal] | |
needs: [be-checker, fe-checker, test-checker, be-ut, clang-tidy, fe-ut, thirdparty-update] | |
name: BUILD | |
env: | |
PR_NUMBER: ${{ github.event.number }} | |
BRANCH: ${{ github.base_ref }} | |
outputs: | |
build_output_tar: ${{ steps.run_build.outputs.OUTPUT_TAR }} | |
base_version: ${{ steps.run_build.outputs.BASE_VERSION }} | |
if: > | |
always() && | |
(needs.be-ut.result == 'success' && needs.clang-tidy.result == 'success' && needs.fe-ut.result == 'success') || | |
(needs.be-checker.outputs.output1 != 'true' && needs.fe-ut.result == 'success') || | |
(needs.fe-checker.outputs.output1 != 'true' && needs.be-ut.result == 'success' && needs.clang-tidy.result == 'success') || | |
(needs.be-checker.outputs.output1 != 'true' && needs.fe-checker.outputs.output1 != 'true' && needs.test-checker.outputs.output1 == 'true') | |
steps: | |
- name: CLEAN | |
run: | | |
rm -rf ${{ github.workspace }} && mkdir -p ${{ github.workspace }} | |
- name: BRANCH INFO | |
id: branch | |
run: | | |
echo ${{github.base_ref}} | |
echo "branch=${{github.base_ref}}" >> $GITHUB_OUTPUT | |
- name: UPDATE ECI & RUN BUILD | |
id: run_build | |
shell: bash | |
timeout-minutes: 90 | |
run: | | |
rm -rf ./ci-tool && cp -rf /var/lib/ci-tool ./ci-tool && cd ci-tool && git pull && source lib/init.sh | |
if [[ "${{ needs.be-checker.outputs.output2 }}" == 'true' ]]; then | |
export image_cache_id=${{ needs.thirdparty-update.outputs.image_cache_id }} | |
export image_tag=$BRANCH-$PR_NUMBER | |
fi | |
./bin/elastic-build.sh --pr ${PR_NUMBER} --repository ${{ github.repository }} --with-gcov | |
- name: build result | |
run: | | |
echo ${{ steps.run_build.outputs.OUTPUT_TAR }} | |
echo ${{ steps.run_build.outputs.BASE_VERSION }} > ./base_version.txt | |
- name: Upload the Base Version | |
uses: actions/upload-artifact@v2 | |
with: | |
name: base_version | |
path: ./base_version.txt | |
retention-days: 3 | |
- name: clean ECI | |
if: always() | |
run: | | |
echo ${{ steps.run_build.outputs.ECI_ID }} | |
eci rm ${{ steps.run_build.outputs.ECI_ID }} | |
- name: Clean ENV | |
if: always() | |
run: | | |
rm -f ${{ steps.run_build.outputs.RES_FILE }} | |
rm -f ${{ steps.run_build.outputs.RES_LOG }} | |
rm -rf ${{ github.workspace }} | |
deploy: | |
runs-on: [self-hosted, normal] | |
if: always() && needs.build.result == 'success' | |
needs: build | |
name: DEPLOY SR | |
env: | |
PR_NUMBER: ${{ github.event.number }} | |
CLUSTER_NAME: ci-admit | |
outputs: | |
fe: ${{steps.deploy_sr.outputs.fe}} | |
be: ${{steps.deploy_sr.outputs.be}} | |
deploy_conf_file: ${{steps.apply_resource.outputs.deploy_conf_file}} | |
steps: | |
- name: Clean Workspace | |
uses: AutoModality/[email protected] | |
- name: BRANCH INFO | |
id: branch | |
run: | | |
echo ${{github.base_ref}} | |
echo "branch=${{github.base_ref}}" >> $GITHUB_OUTPUT | |
- name: Apply for resources | |
id: apply_resource | |
run: | | |
rm -rf ./ci-tool && cp -rf /var/lib/ci-tool ./ci-tool && cd ci-tool && git pull && source lib/init.sh | |
./bin/elastic-cluster.sh --template ci-admit | |
cp conf/starrocks_deploy.conf /var/local/env/${PR_NUMBER}-starrocks_deploy.conf | |
echo "deploy_conf_file=/var/local/env/${PR_NUMBER}-starrocks_deploy.conf" >> $GITHUB_OUTPUT | |
- name: Deploy SR | |
id: deploy_sr | |
run: | | |
cd ci-tool && source lib/init.sh | |
repo="${{ github.repository }}" | |
bucket_prefix=`echo ${repo%/*} | tr '[:upper:]' '[:lower:]'` | |
tar_path="oss://${bucket_prefix}-ci-release/${{steps.branch.outputs.branch}}/Release/pr/${{needs.build.outputs.build_output_tar}}" | |
echo ${tar_path} | |
./bin/deploy-cluster.sh -c ${CLUSTER_NAME} --output ${tar_path} --with-coverage | |
- run: | | |
echo "FE: ${{steps.deploy_sr.outputs.fe}}, BE: ${{steps.deploy_sr.outputs.be}}" | |
- name: Clean ENV | |
if: always() | |
run: | | |
rm -rf ${{ github.workspace }}/* | |
SQL-Tester: | |
runs-on: [self-hosted, normal] | |
name: SQL-Tester | |
needs: [ build, deploy ] | |
if: always() && needs.deploy.result == 'success' | |
timeout-minutes: 60 | |
env: | |
PR_NUMBER: ${{ github.event.number }} | |
CLUSTER_NAME: ci-admit | |
FE_NODE: ${{ needs.deploy.outputs.fe }} | |
BE_NODE: ${{ needs.deploy.outputs.be }} | |
BASE_VERSION: ${{needs.build.outputs.base_version}} | |
outputs: | |
MYSQL_ECI_ID: ${{ steps.run_case.outputs.MYSQL_ECI_ID }} | |
steps: | |
- name: CLEAN | |
run: | | |
rm -rf ${{ github.workspace }} && mkdir -p ${{ github.workspace }} | |
- name: Checkout Code | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- name: BRANCH INFO | |
id: branch | |
run: | | |
echo "branch=${{github.base_ref}}" >> $GITHUB_OUTPUT | |
repo="${{ github.repository }}" | |
bucket_prefix=`echo ${repo%/*} | tr '[:upper:]' '[:lower:]'` | |
echo "bucket_prefix=${bucket_prefix}" >> $GITHUB_OUTPUT | |
- name: Checkout PR | |
run: | | |
BRANCH=${{steps.branch.outputs.branch}} | |
git config --global user.name "wanpengfei-git"; | |
git config --global user.email "[email protected]"; | |
git checkout $BRANCH; | |
git reset ${BASE_VERSION} --hard || true; | |
BRANCH_NAME="${BRANCH}-${PR_NUMBER}"; | |
git fetch origin pull/${PR_NUMBER}/head:${BRANCH_NAME}; | |
git checkout $BRANCH_NAME; | |
git checkout -b merge_pr; | |
git merge --squash --no-edit ${BRANCH} || (echo "::error::Merge conflict, please check." && exit -1); | |
- name: Run Case (${{ needs.deploy.outputs.fe }}) | |
id: run_case | |
run: | | |
rm -rf ./ci-tool && cp -rf /var/lib/ci-tool ./ci-tool && cd ci-tool && git pull && source lib/init.sh | |
./bin/run-sql-tester.sh | |
- name: Upload SQL-Tester XML | |
if: success() || failure() | |
run: | | |
branch=${{ steps.branch.outputs.branch }} | |
bucket_prefix=${{ steps.branch.outputs.bucket_prefix }} | |
ossutil64 --config-file ~/.ossutilconfig rm oss://${bucket_prefix}-ci-release/$branch/Release/pr/SQL-Tester-XML/${PR_NUMBER}/ -rf | |
ossutil64 --config-file ~/.ossutilconfig cp test/ oss://${bucket_prefix}-ci-release/$branch/Release/pr/SQL-Tester-XML/${PR_NUMBER}/ --include "*.xml" --recursive --force --tagging="type=ci" | |
- name: Upload log | |
uses: actions/upload-artifact@v3 | |
if: always() | |
with: | |
name: SQL-Tester Log | |
path: test/log/ | |
retention-days: 1 | |
- name: Clean ENV | |
if: always() | |
run: | | |
rm -rf ${{ github.workspace }}/* | |
admit: | |
runs-on: [self-hosted, normal] | |
name: ADMIT TEST | |
needs: [ deploy, SQL-Tester ] | |
if: always() && needs.deploy.result == 'success' && needs.SQL-Tester.result == 'success' | |
timeout-minutes: 40 | |
env: | |
PR_NUMBER: ${{ github.event.number }} | |
CLUSTER_NAME: ci-admit | |
FE_NODE: ${{ needs.deploy.outputs.fe }} | |
BE_NODE: ${{ needs.deploy.outputs.be }} | |
steps: | |
- name: CLEAN | |
run: | | |
rm -rf ${{ github.workspace }} && mkdir -p ${{ github.workspace }} | |
- name: BRANCH INFO | |
id: branch | |
run: | | |
echo "branch=${{github.base_ref}}" >> $GITHUB_OUTPUT | |
repo="${{ github.repository }}" | |
bucket_prefix=`echo ${repo%/*} | tr '[:upper:]' '[:lower:]'` | |
echo "bucket_prefix=${bucket_prefix}" >> $GITHUB_OUTPUT | |
- name: Run Case | |
run: | | |
echo "FE: ${{needs.deploy.outputs.fe}}, BE: ${{needs.deploy.outputs.be}}" | |
rm -rf ./ci-tool && cp -rf /var/lib/ci-tool ./ci-tool && cd ci-tool && git pull && source lib/init.sh | |
cd ${{ github.workspace }} | |
rm -rf ./StarRocksTest && cp -rf /var/lib/StarRocksTest ./StarRocksTest && cd ./StarRocksTest && git pull >/dev/null | |
cd ${{ github.workspace }}/ci-tool | |
./bin/run-admit.sh --pr ${PR_NUMBER} --branch ${{steps.branch.outputs.branch}} --build Release --repository ${{ github.repository }} | |
- name: Upload Admit XML | |
if: success() || failure() | |
run: | | |
branch=${{ steps.branch.outputs.branch }} | |
bucket_prefix=${{ steps.branch.outputs.bucket_prefix }} | |
ossutil64 --config-file ~/.ossutilconfig rm oss://${bucket_prefix}-ci-release/$branch/Release/pr/Admit-XML/${PR_NUMBER}/ -rf | |
ossutil64 --config-file ~/.ossutilconfig cp StarRocksTest/result oss://${bucket_prefix}-ci-release/$branch/Release/pr/Admit-XML/${PR_NUMBER}/ --include "*.xml" --recursive --force --tagging="type=ci" | |
- name: Clean ENV | |
if: always() | |
run: | | |
rm -rf ${{ github.workspace }}/* | |
Teardown: | |
runs-on: [self-hosted, normal] | |
name: Teardown | |
needs: [ deploy, SQL-Tester, admit ] | |
if: always() | |
env: | |
PR_NUMBER: ${{ github.event.number }} | |
BRANCH: ${{ github.base_ref }} | |
CONF_FILE: ${{ needs.deploy.outputs.deploy_conf_file }} | |
steps: | |
- name: Backup SR Info | |
if: needs.deploy.outputs.deploy_conf_file != '' | |
id: backup | |
run: | | |
rm -rf ./ci-tool && cp -rf /var/lib/ci-tool ./ci-tool && cd ci-tool && git pull && source lib/init.sh | |
./bin/backup_log_cores.sh --branch $BRANCH --pr $PR_NUMBER --build Release --conf $CONF_FILE --repository ${{ github.repository }} | |
- name: Clean ECS | |
if: steps.backup.outcome == 'success' | |
env: | |
SQL_TESTER_RESULT: ${{ needs.SQL-Tester.result }} | |
ADMIT_RESULT: ${{ needs.admit.result }} | |
run: | | |
cd ci-tool && source lib/init.sh | |
if [[ "${SQL_TESTER_RESULT}" == 'success' && "${ADMIT_RESULT}" == 'success' ]]; then | |
./bin/elastic-cluster.sh --delete | |
else | |
./bin/elastic-cluster.sh --renew 0.5 | |
fi | |
- name: clean ECI | |
if: always() && needs.SQL-Tester.outputs.MYSQL_ECI_ID != '' | |
run: | | |
eci rm ${{ needs.SQL-Tester.outputs.MYSQL_ECI_ID }} | |
- name: upload info | |
if: always() | |
run: | | |
echo $PR_NUMBER > pr_num.txt | |
- name: Upload the PR number | |
uses: actions/upload-artifact@v3 | |
with: | |
name: pr_num | |
path: ./pr_num.txt | |
retention-days: 3 | |
- name: Clean | |
if: always() | |
run: | | |
rm -f $CONF_FILE | |
rm -rf ${{ github.workspace }}/* |