ci/run-build-and-tests: add some structure to the GitHub workflow output
The current output of Git's GitHub workflow can be quite confusing, especially for contributors new to the project. To make it more helpful, let's introduce some collapsible grouping. Initially, readers will see the high-level view of what actually happened (did the build fail, or the test suite?). To drill down, the respective group can be expanded. Note: sadly, workflow output currently cannot contain any nested groups (see https://github.com/actions/runner/issues/802 for details), therefore we take pains to ensure to end any previous group before starting a new one. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
08dccc8fc1
commit
dab73aebd8
56
ci/lib.sh
56
ci/lib.sh
@ -1,5 +1,50 @@
|
|||||||
# Library of functions shared by all CI scripts
|
# Library of functions shared by all CI scripts
|
||||||
|
|
||||||
|
if test true != "$GITHUB_ACTIONS"
|
||||||
|
then
|
||||||
|
begin_group () { :; }
|
||||||
|
end_group () { :; }
|
||||||
|
|
||||||
|
group () {
|
||||||
|
shift
|
||||||
|
"$@"
|
||||||
|
}
|
||||||
|
set -x
|
||||||
|
else
|
||||||
|
begin_group () {
|
||||||
|
need_to_end_group=t
|
||||||
|
echo "::group::$1" >&2
|
||||||
|
set -x
|
||||||
|
}
|
||||||
|
|
||||||
|
end_group () {
|
||||||
|
test -n "$need_to_end_group" || return 0
|
||||||
|
set +x
|
||||||
|
need_to_end_group=
|
||||||
|
echo '::endgroup::' >&2
|
||||||
|
}
|
||||||
|
trap end_group EXIT
|
||||||
|
|
||||||
|
group () {
|
||||||
|
set +x
|
||||||
|
begin_group "$1"
|
||||||
|
shift
|
||||||
|
"$@"
|
||||||
|
res=$?
|
||||||
|
end_group
|
||||||
|
return $res
|
||||||
|
}
|
||||||
|
|
||||||
|
begin_group "CI setup"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Set 'exit on error' for all CI scripts to let the caller know that
|
||||||
|
# something went wrong.
|
||||||
|
#
|
||||||
|
# We already enabled tracing executed commands earlier. This helps by showing
|
||||||
|
# how # environment variables are set and and dependencies are installed.
|
||||||
|
set -e
|
||||||
|
|
||||||
skip_branch_tip_with_tag () {
|
skip_branch_tip_with_tag () {
|
||||||
# Sometimes, a branch is pushed at the same time the tag that points
|
# Sometimes, a branch is pushed at the same time the tag that points
|
||||||
# at the same commit as the tip of the branch is pushed, and building
|
# at the same commit as the tip of the branch is pushed, and building
|
||||||
@ -88,12 +133,6 @@ export TERM=${TERM:-dumb}
|
|||||||
# Clear MAKEFLAGS that may come from the outside world.
|
# Clear MAKEFLAGS that may come from the outside world.
|
||||||
export MAKEFLAGS=
|
export MAKEFLAGS=
|
||||||
|
|
||||||
# Set 'exit on error' for all CI scripts to let the caller know that
|
|
||||||
# something went wrong.
|
|
||||||
# Set tracing executed commands, primarily setting environment variables
|
|
||||||
# and installing dependencies.
|
|
||||||
set -ex
|
|
||||||
|
|
||||||
if test -n "$SYSTEM_COLLECTIONURI" || test -n "$SYSTEM_TASKDEFINITIONSURI"
|
if test -n "$SYSTEM_COLLECTIONURI" || test -n "$SYSTEM_TASKDEFINITIONSURI"
|
||||||
then
|
then
|
||||||
CI_TYPE=azure-pipelines
|
CI_TYPE=azure-pipelines
|
||||||
@ -138,7 +177,7 @@ then
|
|||||||
test_name="${test_exit%.exit}"
|
test_name="${test_exit%.exit}"
|
||||||
test_name="${test_name##*/}"
|
test_name="${test_name##*/}"
|
||||||
printf "\\e[33m\\e[1m=== Failed test: ${test_name} ===\\e[m\\n"
|
printf "\\e[33m\\e[1m=== Failed test: ${test_name} ===\\e[m\\n"
|
||||||
cat "t/test-results/$test_name.out"
|
group "Failed test: $test_name" cat "t/test-results/$test_name.out"
|
||||||
|
|
||||||
trash_dir="t/trash directory.$test_name"
|
trash_dir="t/trash directory.$test_name"
|
||||||
cp "t/test-results/$test_name.out" t/failed-test-artifacts/
|
cp "t/test-results/$test_name.out" t/failed-test-artifacts/
|
||||||
@ -233,3 +272,6 @@ linux-leaks)
|
|||||||
esac
|
esac
|
||||||
|
|
||||||
MAKEFLAGS="$MAKEFLAGS CC=${CC:-cc}"
|
MAKEFLAGS="$MAKEFLAGS CC=${CC:-cc}"
|
||||||
|
|
||||||
|
end_group
|
||||||
|
set -x
|
||||||
|
@ -45,10 +45,10 @@ pedantic)
|
|||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
make
|
group Build make
|
||||||
if test -n "$run_tests"
|
if test -n "$run_tests"
|
||||||
then
|
then
|
||||||
make test ||
|
group "Run tests" make test ||
|
||||||
handle_failed_tests
|
handle_failed_tests
|
||||||
fi
|
fi
|
||||||
check_unignored_build_artifacts
|
check_unignored_build_artifacts
|
||||||
|
@ -10,7 +10,7 @@ windows*) cmd //c mklink //j t\\.prove "$(cygpath -aw "$cache_dir/.prove")";;
|
|||||||
*) ln -s "$cache_dir/.prove" t/.prove;;
|
*) ln -s "$cache_dir/.prove" t/.prove;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
make --quiet -C t T="$(cd t &&
|
group "Run tests" make --quiet -C t T="$(cd t &&
|
||||||
./helper/test-tool path-utils slice-tests "$1" "$2" t[0-9]*.sh |
|
./helper/test-tool path-utils slice-tests "$1" "$2" t[0-9]*.sh |
|
||||||
tr '\n' ' ')" ||
|
tr '\n' ' ')" ||
|
||||||
handle_failed_tests
|
handle_failed_tests
|
||||||
|
Loading…
Reference in New Issue
Block a user