@@ -17,14 +17,20 @@ bm_project=$(realpath -e "$bm_project") # ensure it's an absolute path and exis
1717declare -x ARTIFACTS_DIR=${ARTIFACTS_DIR:= " $solution_dir /BmArtifacts" }
1818ARTIFACTS_DIR=$( realpath -m " $ARTIFACTS_DIR " ) # ensure it's an absolute path
1919
20+ declare -x force_new_baseline=${FORCE_NEW_BASELINE:- false}
21+
2022declare configuration=${CONFIGURATION:= " Release" }
2123
24+ declare define=${DEFINE:- }
25+
2226source " $script_dir /_common.sh"
2327source " $script_dir /run-benchmarks-utils.sh"
2428
2529get_arguments " $@ "
2630declare -r bm_project
2731declare -r configuration
32+ declare -r force_new_baseline
33+ declare -r define
2834
2935declare -x results_dir=${results_dir:= " $ARTIFACTS_DIR /results" }
3036results_dir=$( realpath -m " $results_dir " ) # ensure it's an absolute path
@@ -38,12 +44,12 @@ declare -x baseline_dir=${baseline_dir:="$ARTIFACTS_DIR/baseline"}
3844baseline_dir=$( realpath -m " $baseline_dir " )
3945declare -r baseline_dir
4046
41- renamed_artifacts_dir=" $ARTIFACTS_DIR -$( date -u +" %Y%m%dT%H%M%S" ) "
42- declare -r renamed_artifacts_dir
43-
4447max_regression_pct=${MAX_REGRESSION_PCT:- 10}
4548declare -ri max_regression_pct
4649
50+ renamed_artifacts_dir=" $ARTIFACTS_DIR -$( date -u +" %Y%m%dT%H%M%S" ) "
51+ declare -r renamed_artifacts_dir
52+
4753dump_all_variables
4854
4955if [[ -d " $ARTIFACTS_DIR " && -n " $( ls -A " $ARTIFACTS_DIR " ) " ]]; then
@@ -84,7 +90,7 @@ execute mkdir -p "$summaries_dir"
8490trace " Running benchmark tests in project '$bm_project ' with configuration '$configuration '..."
8591execute mkdir -p " $ARTIFACTS_DIR "
8692execute dotnet run \
87- /p:DefineConstants=" $DEFINE " \
93+ /p:DefineConstants=" $define " \
8894 --project " $bm_project " \
8995 --configuration " $configuration " \
9096 --filter ' *' \
@@ -157,6 +163,12 @@ flush_stdout
157163
158164if (( pct > max_regression_pct )) ; then
159165 echo " Performance regression exceeds threshold" >&2
166+ if [[ $force_new_baseline == " true" ]] && is_defined " GITHUB_ENV" ; then
167+ echo " Significant regression of $pct % over baseline. Updating the baseline."
168+ # shellcheck disable=SC2154
169+ echo " FORCE_NEW_BASELINE=true" >> " $GITHUB_ENV "
170+ exit 0
171+ fi
160172 echo " If this is acceptable, please update the baseline by setting the variable 'FORCE_NEW_BASELINE=true'." >&2
161173 exit 2
162174elif (( pct > 0 )) ; then
0 commit comments