This is an automated email from the ASF dual-hosted git repository. yiguolei pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/master by this push: new b8d8cf1ac9 [regression](test) script for teamcity to check if pr need run build (#16937) b8d8cf1ac9 is described below commit b8d8cf1ac995752bb5c00a41559068b41f176d52 Author: Dongyang Li <hello_step...@qq.com> AuthorDate: Wed Mar 1 15:59:31 2023 +0800 [regression](test) script for teamcity to check if pr need run build (#16937) * [regression](test) script for teamcity to check if pr need run build * Update check-pr-if-need-run-build.sh fix * Update check-pr-if-need-run-build.sh fix --------- Co-authored-by: stephen <hello_stephen@@qq.com> --- .../pipeline/common/check-pr-if-need-run-build.sh | 178 +++++++++++++++++++++ 1 file changed, 178 insertions(+) diff --git a/regression-test/pipeline/common/check-pr-if-need-run-build.sh b/regression-test/pipeline/common/check-pr-if-need-run-build.sh new file mode 100755 index 0000000000..20c4f16b1a --- /dev/null +++ b/regression-test/pipeline/common/check-pr-if-need-run-build.sh @@ -0,0 +1,178 @@ +#!/usr/bin/env bash +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + +# shellcheck source=/dev/null +# source ~/.bashrc +# set -ex + +usage() { + echo -e "Usage: + env GITHUB_TOKEN=****** bash $0 <PULL_NUMBER> <OPTIONS> + note: https://github.com/apache/doris/pull/13259, PULL_NUMBER is 13259 + OPTIONS should be one of [be-ut|fe-ut|ckb|regression-p0|regression-p1|arm-regression-p0] + " && return 1 +} + +_get_pr_changed_files() { + usage_str="Usage: + _get_pr_changed_files <PULL_NUMBER> [OPTIONS] + note: https://github.com/apache/doris/pull/13259, PULL_NUMBER is 13259 + OPTIONS can be one of [all|added|modified|removed], default is all + " + if [[ -z "$1" ]]; then echo -e "${usage_str}" && return 1; fi + if [[ -z "${GITHUB_TOKEN}" ]]; then echo "error: GITHUB_TOKEN required..." && return 1; fi + if ! curl --version >/dev/null; then echo 'error: curl required...' && return 1; fi + if ! command -v jq >/dev/null; then sudo yum install jq -y || sudo apt install -y jq; fi + + PULL_NUMBER="$1" + which_file="$2" + pr_url="https://github.com/${OWNER:=apache}/${REPO:=doris}/pull/${PULL_NUMBER}" + try_times=10 + # The number of results per page (max 100), Default 30. + per_page=100 + file_name='pr_change_files' + while [[ ${try_times} -gt 0 ]]; do + if curl \ + -H "Accept: application/vnd.github+json" \ + -H "Authorization: Bearer ${GITHUB_TOKEN:-}" \ + https://api.github.com/repos/"${OWNER}"/"${REPO}"/pulls/"${PULL_NUMBER}"/files?per_page="${per_page}" \ + 2>/dev/null >"${file_name}"; then + break + else + try_times=$((try_times - 1)) + fi + done + if [[ ${try_times} = 0 ]]; then echo -e "\033[31m List pull request(${pr_url}) files FAIL... \033[0m" && return 255; fi + + all_files=$(jq -r '.[] | .filename' "${file_name}") + added_files=$(jq -r '.[] | select(.status == "added") | .filename' "${file_name}") + modified_files=$(jq -r '.[] | select(.status == "modified") | .filename' "${file_name}") + removed_files=$(jq -r '.[] | select(.status == "removed") | .filename' "${file_name}") + rm "${file_name}" + if [[ -z "${all_files}" ]]; then echo -e "\033[31m List pull request(${pr_url}) files FAIL... \033[0m" && return 255; fi + + echo -e " +https://github.com/apache/doris/pull/${PULL_NUMBER}/files all change files: +---------------------------------------------------------------" + if [[ "${which_file:-all}" == "all" ]]; then + echo -e "${all_files}\n" && export all_files + elif [[ "${which_file}" == "added" ]]; then + echo -e "${added_files}\n" && export added_files + elif [[ "${which_file}" == "modified" ]]; then + echo -e "${modified_files}\n" && export modified_files + elif [[ "${which_file}" == "removed" ]]; then + echo -e "${removed_files}\n" && export removed_files + else + return 1 + fi +} + +need_run_fe_ut() { + if ! _get_pr_changed_files "$1"; then echo "get pr changed files failed, return need" && return 0; fi + for af in ${all_files}; do + if [[ "${af}" == 'fe'* ]] || + [[ "${af}" == 'fe_plugins'* ]] || + [[ "${af}" == 'bin/start_fe.sh' ]] || + [[ "${af}" == 'bin/stop_fe.sh' ]] || + [[ "${af}" == 'run-fe-ut.sh' ]]; then echo "fe-ut related file changed, return need" && return 0; fi + done + echo "return no need" && return 1 +} + +need_run_be_ut() { + if ! _get_pr_changed_files "$1"; then echo "get pr changed files failed, return need" && return 0; fi + for af in ${all_files}; do + if [[ "${af}" == 'be'* ]] || + [[ "${af}" == 'contrib'* ]] || + [[ "${af}" == 'thirdparty'* ]] || + [[ "${af}" == 'bin/start_be.sh' ]] || + [[ "${af}" == 'bin/stop_be.sh' ]] || + [[ "${af}" == 'run-be-ut.sh' ]]; then + echo "be-ut related file changed, return need" && return 0 + fi + done + echo "return no need" && return 1 +} + +need_run_regression_p0() { + if ! _get_pr_changed_files "$1"; then echo "get pr changed files failed, return need" && return 0; fi + for af in ${all_files}; do + if [[ "${af}" == 'be'* ]] || + [[ "${af}" == 'bin'* ]] || + [[ "${af}" == 'conf'* ]] || + [[ "${af}" == 'contrib'* ]] || + [[ "${af}" == 'fe'* ]] || + [[ "${af}" == 'fe_plugins'* ]] || + [[ "${af}" == 'gensrc'* ]] || + [[ "${af}" == 'regression-test'* ]] || + [[ "${af}" == 'thirdparty'* ]] || + [[ "${af}" == 'ui'* ]] || + [[ "${af}" == 'webroot'* ]] || + [[ "${af}" == 'build.sh' ]] || + [[ "${af}" == 'env.sh' ]] || + [[ "${af}" == 'run-regression-test.sh' ]]; then + echo "regression related file changed, return need" && return 0 + fi + done + echo "return no need" && return 1 +} + +need_run_regression_p1() { + need_run_regression_p0 "$1" +} + +need_run_arm_regression_p0() { + if [[ $(($1 % 2)) -eq 0 ]]; then echo "the pull request id is even, return no need" && return 1; fi + need_run_regression_p0 "$1" +} + +need_run_ckb() { + if [[ $(($1 % 2)) -eq 0 ]]; then echo "the pull request id is even, return no need" && return 1; fi + if ! _get_pr_changed_files "$1"; then echo "get pr changed files failed, return need" && return 0; fi + for af in ${all_files}; do + if [[ "${af}" == 'be'* ]] || + [[ "${af}" == 'bin'* ]] || + [[ "${af}" == 'conf'* ]] || + [[ "${af}" == 'fe'* ]] || + [[ "${af}" == 'gensrc'* ]] || + [[ "${af}" == 'thirdparty'* ]] || + [[ "${af}" == 'build.sh' ]] || + [[ "${af}" == 'env.sh' ]]; then + echo "clickbench performance related file changed, return need" && return 0 + fi + done + echo "return no need" && return 1 +} + +if [[ -z "$1" ]]; then + usage +elif [[ "$2" == "be-ut" ]]; then + need_run_be_ut "$1" +elif [[ "$2" == "fe-ut" ]]; then + need_run_fe_ut "$1" +elif [[ "$2" == "ckb" ]]; then + need_run_ckb "$1" +elif [[ "$2" == "regression-p0" ]]; then + need_run_regression_p0 "$1" +elif [[ "$2" == "regression-p1" ]]; then + need_run_regression_p1 "$1" +elif [[ "$2" == "arm-regression-p0" ]]; then + need_run_arm_regression_p0 "$1" +else + usage +fi --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org