ci: let GitHub Actions upload failed tests' directories

Arguably, CI builds' most important task is to not only identify
regressions, but to make it as easy as possible to investigate what went
wrong.

In that light, we will want to provide users with a way to inspect the
tests' output as well as the corresponding directories.

This commit adds build steps that are only executed when tests failed,
uploading the relevant information as build artifacts. These artifacts
can then be downloaded by interested parties to diagnose the failures
more efficiently.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Đoàn Trần Công Danh <congdanhqx@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
maint
Johannes Schindelin 2020-04-11 00:18:14 +07:00 committed by Junio C Hamano
parent 676eb0c1ce
commit f72f328bc5
2 changed files with 25 additions and 0 deletions

View File

@ -63,6 +63,12 @@ jobs:
shell: powershell shell: powershell
run: | run: |
& .\git-sdk-64-minimal\usr\bin\bash.exe -lc ci/print-test-failures.sh & .\git-sdk-64-minimal\usr\bin\bash.exe -lc ci/print-test-failures.sh
- name: Upload failed tests' directories
if: failure() && env.FAILED_TEST_ARTIFACTS != ''
uses: actions/upload-artifact@v1
with:
name: failed-tests-windows
path: ${{env.FAILED_TEST_ARTIFACTS}}
vs-build: vs-build:
env: env:
MSYSTEM: MINGW64 MSYSTEM: MINGW64
@ -176,6 +182,12 @@ jobs:
- run: ci/run-build-and-tests.sh - run: ci/run-build-and-tests.sh
- run: ci/print-test-failures.sh - run: ci/print-test-failures.sh
if: failure() if: failure()
- name: Upload failed tests' directories
if: failure() && env.FAILED_TEST_ARTIFACTS != ''
uses: actions/upload-artifact@v1
with:
name: failed-tests-${{matrix.vector.jobname}}
path: ${{env.FAILED_TEST_ARTIFACTS}}
dockerized: dockerized:
strategy: strategy:
matrix: matrix:
@ -194,6 +206,12 @@ jobs:
- run: ci/run-build-and-tests.sh - run: ci/run-build-and-tests.sh
- run: ci/print-test-failures.sh - run: ci/print-test-failures.sh
if: failure() if: failure()
- name: Upload failed tests' directories
if: failure() && env.FAILED_TEST_ARTIFACTS != ''
uses: actions/upload-artifact@v1
with:
name: failed-tests-${{matrix.vector.jobname}}
path: ${{env.FAILED_TEST_ARTIFACTS}}
static-analysis: static-analysis:
env: env:
jobname: StaticAnalysis jobname: StaticAnalysis

View File

@ -46,6 +46,13 @@ do
mv "$trash_dir" failed-test-artifacts mv "$trash_dir" failed-test-artifacts
continue continue
;; ;;
github-actions)
mkdir -p failed-test-artifacts
echo "::set-env name=FAILED_TEST_ARTIFACTS::t/failed-test-artifacts"
cp "${TEST_EXIT%.exit}.out" failed-test-artifacts/
tar czf failed-test-artifacts/"$test_name".trash.tar.gz "$trash_dir"
continue
;;
*) *)
echo "Unhandled CI type: $CI_TYPE" >&2 echo "Unhandled CI type: $CI_TYPE" >&2
exit 1 exit 1