INSPECTION PIPELINE #51
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: INSPECTION PIPELINE | |
on: | |
schedule: | |
- cron: "10 0 * * 1-5" | |
- cron: "30 5 * * 1-5" | |
- cron: "30 8 * * 1-5" | |
- cron: "30 10 * * 1-5" | |
workflow_dispatch: | |
concurrency: | |
group: 'INSPECTION-MAIN' | |
cancel-in-progress: false | |
permissions: | |
checks: write | |
actions: write | |
contents: write | |
deployments: write | |
discussions: write | |
issues: write | |
packages: write | |
pages: write | |
pull-requests: write | |
repository-projects: write | |
security-events: write | |
statuses: write | |
jobs: | |
be-ut: | |
runs-on: [self-hosted, normal] | |
if: github.repository == 'StarRocks/starrocks' | |
timeout-minutes: 180 | |
name: BE UT | |
env: | |
BRANCH: 'main' | |
steps: | |
- 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 | |
./bin/elastic-ut.sh --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() | |
with: | |
name: BE UT LOG | |
path: ${{ steps.run_ut.outputs.RES_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 ${{ github.workspace }}/* | |
fe-ut: | |
runs-on: [self-hosted, normal] | |
name: FE UT | |
if: github.repository == 'StarRocks/starrocks' | |
env: | |
BRANCH: 'main' | |
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
steps: | |
- name: clean | |
run: | | |
rm -rf ${{ github.workspace }} | |
mkdir -p ${{ github.workspace }} | |
- name: BRANCH INFO | |
id: branch | |
run: | | |
repo="${{ github.repository }}" | |
bucket_prefix=`echo ${repo%/*} | tr '[:upper:]' '[:lower:]'` | |
echo "bucket_prefix=${bucket_prefix}" >> $GITHUB_OUTPUT | |
- 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 --module fe --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: Download FE UT XML | |
if: always() | |
id: download-ut-xml | |
env: | |
bucket_prefix: ${{ steps.branch.outputs.bucket_prefix }} | |
PR_NUMBER: ${{ steps.run_ut.outputs.PR_NUMBER }} | |
run: | | |
oss_path=oss://${bucket_prefix}-ci-release/$BRANCH/Release/pr/UT-Report/${PR_NUMBER} | |
mkdir fe && cd fe | |
ossutil64 --config-file ~/.ossutilconfig cp ${oss_path}/ . --recursive | |
tar zxf fe_ut_report.tar.gz | |
- name: Publish UT Report | |
uses: mikepenz/action-junit-report@v4 | |
if: always() | |
id: publish_report | |
env: | |
github_token: ${{ secrets.GITHUB_TOKEN }} | |
token: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
check_name: 'FE UT Report' | |
detailed_summary: true | |
fail_on_failure: true | |
report_paths: ./fe/fe-core/target/surefire-reports/*.xml | |
- 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 }}/* | |
build: | |
runs-on: [self-hosted, normal] | |
name: BUILD | |
if: github.repository == 'StarRocks/starrocks' | |
env: | |
BRANCH: 'main' | |
outputs: | |
build_output_tar: ${{ steps.run_build.outputs.OUTPUT_TAR }} | |
pr_number: ${{ steps.run_build.outputs.PR_NUMBER }} | |
base_version: ${{ steps.run_build.outputs.BASE_VERSION }} | |
steps: | |
- name: CLEAN | |
run: | | |
rm -rf ${{ github.workspace }} && mkdir -p ${{ github.workspace }} | |
- 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 | |
./bin/elastic-build.sh --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: 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: | |
CLUSTER_NAME: ci-admit | |
BRANCH: 'main' | |
PR_NUMBER: ${{ needs.build.outputs.pr_number }} | |
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: 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/$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: ${{ needs.build.outputs.pr_number }} | |
CLUSTER_NAME: ci-admit | |
FE_NODE: ${{ needs.deploy.outputs.fe }} | |
BE_NODE: ${{ needs.deploy.outputs.be }} | |
BASE_VERSION: ${{needs.build.outputs.base_version}} | |
BRANCH: 'main' | |
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: | | |
repo="${{ github.repository }}" | |
bucket_prefix=`echo ${repo%/*} | tr '[:upper:]' '[:lower:]'` | |
echo "bucket_prefix=${bucket_prefix}" >> $GITHUB_OUTPUT | |
- name: Checkout PR | |
run: | | |
git checkout $BRANCH; | |
git reset ${BASE_VERSION} --hard | |
- 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: Prepare Tools | |
id: prepare-tools | |
if: success() || failure() | |
run: | | |
mkdir -p .actions/nose-report-action | |
cd .actions/nose-report-action | |
git clone https://github.com/StarRocks/action-junit-report.git . | |
- name: Publish SQL-Tester Report | |
uses: ./.actions/nose-report-action | |
if: always() && steps.prepare-tools.outcome == 'success' | |
with: | |
check_name: 'SQL-Tester Report' | |
fail_on_failure: true | |
detailed_summary: true | |
token: ${{ secrets.GITHUB_TOKEN }} | |
report_paths: 'test/*.xml' | |
- 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: [ build, deploy, SQL-Tester ] | |
if: always() && needs.deploy.result == 'success' | |
timeout-minutes: 40 | |
env: | |
PR_NUMBER: ${{ needs.build.outputs.pr_number }} | |
CLUSTER_NAME: ci-admit | |
FE_NODE: ${{ needs.deploy.outputs.fe }} | |
BE_NODE: ${{ needs.deploy.outputs.be }} | |
BRANCH: 'main' | |
steps: | |
- name: CLEAN | |
run: | | |
rm -rf ${{ github.workspace }} && mkdir -p ${{ github.workspace }} | |
- name: BRANCH INFO | |
id: branch | |
run: | | |
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 | |
cd ${{ github.workspace }}/ci-tool | |
./bin/run-admit.sh --pr ${PR_NUMBER} --branch ${{ github.base_ref }} --build Release --repository ${{ github.repository }} | |
- name: Prepare Tools | |
if: success() || failure() | |
id: prepare-tools | |
run: | | |
mkdir -p .actions/nose-report-action | |
cd .actions/nose-report-action | |
git clone https://github.com/StarRocks/action-junit-report.git . | |
- name: Publish Admit Report | |
uses: ./.actions/nose-report-action | |
if: always() && steps.prepare-tools.outcome == 'success' | |
with: | |
check_name: 'Admit Report' | |
fail_on_failure: true | |
detailed_summary: true | |
token: ${{ secrets.GITHUB_TOKEN }} | |
report_paths: './StarRocksTest/result/*.xml' | |
- 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: | |
BRANCH: ${{ github.base_ref }} | |
CONF_FILE: ${{ needs.deploy.outputs.deploy_conf_file }} | |
GH_TOKEN: ${{ github.token }} | |
steps: | |
- name: Backup SR Info | |
if: needs.deploy.outputs.deploy_conf_file != '' | |
id: backup | |
run: | | |
set -x | |
rm -rf ./ci-tool && cp -rf /var/lib/ci-tool ./ci-tool && cd ci-tool && git pull && source lib/init.sh | |
cp -f $CONF_FILE ./conf/starrocks_deploy.conf | |
cat ./conf/starrocks_deploy.conf | |
- 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 | |
./bin/elastic-cluster.sh --renew 0.5 | |
- name: save unstable cases | |
if: always() | |
run: | | |
cd ci-tool && source lib/init.sh | |
./bin/save_unstable_cases.sh | |
- name: clean ECI | |
if: always() && needs.SQL-Tester.outputs.MYSQL_ECI_ID != '' | |
run: | | |
eci rm ${{ needs.SQL-Tester.outputs.MYSQL_ECI_ID }} | |
- name: Clean | |
if: always() | |
run: | | |
rm -f $CONF_FILE | |
rm -rf ${{ github.workspace }}/* |