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 <[email protected]>
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: [email protected]
For additional commands, e-mail: [email protected]