Browse Source

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>
maint
Johannes Schindelin 2 years ago committed by Junio C Hamano
parent
commit
dab73aebd8
  1. 56
      ci/lib.sh
  2. 4
      ci/run-build-and-tests.sh
  3. 2
      ci/run-test-slice.sh

56
ci/lib.sh

@ -1,5 +1,50 @@ @@ -1,5 +1,50 @@
# 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 () {
# 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
@ -88,12 +133,6 @@ export TERM=${TERM:-dumb} @@ -88,12 +133,6 @@ export TERM=${TERM:-dumb}
# Clear MAKEFLAGS that may come from the outside world.
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"
then
CI_TYPE=azure-pipelines
@ -138,7 +177,7 @@ then @@ -138,7 +177,7 @@ then
test_name="${test_exit%.exit}"
test_name="${test_name##*/}"
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"
cp "t/test-results/$test_name.out" t/failed-test-artifacts/
@ -233,3 +272,6 @@ linux-leaks) @@ -233,3 +272,6 @@ linux-leaks)
esac

MAKEFLAGS="$MAKEFLAGS CC=${CC:-cc}"

end_group
set -x

4
ci/run-build-and-tests.sh

@ -45,10 +45,10 @@ pedantic) @@ -45,10 +45,10 @@ pedantic)
;;
esac

make
group Build make
if test -n "$run_tests"
then
make test ||
group "Run tests" make test ||
handle_failed_tests
fi
check_unignored_build_artifacts

2
ci/run-test-slice.sh

@ -10,7 +10,7 @@ windows*) cmd //c mklink //j t\\.prove "$(cygpath -aw "$cache_dir/.prove")";; @@ -10,7 +10,7 @@ windows*) cmd //c mklink //j t\\.prove "$(cygpath -aw "$cache_dir/.prove")";;
*) ln -s "$cache_dir/.prove" t/.prove;;
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 |
tr '\n' ' ')" ||
handle_failed_tests

Loading…
Cancel
Save