summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohannes Schindelin <johannes.schindelin@gmx.de>2020-04-10 17:18:14 (GMT)
committerJunio C Hamano <gitster@pobox.com>2020-04-10 17:30:40 (GMT)
commitf72f328bc57e1b0db380ef76e0c1e94a9ed0ac7c (patch)
tree813da494c2ddf70379cb3757ccca9e739eb32480
parent676eb0c1ce0d380478eb16bdc5a3f2a7bc01c1d2 (diff)
downloadgit-f72f328bc57e1b0db380ef76e0c1e94a9ed0ac7c.zip
git-f72f328bc57e1b0db380ef76e0c1e94a9ed0ac7c.tar.gz
git-f72f328bc57e1b0db380ef76e0c1e94a9ed0ac7c.tar.bz2
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>
-rw-r--r--.github/workflows/main.yml18
-rwxr-xr-xci/print-test-failures.sh7
2 files changed, 25 insertions, 0 deletions
diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index e1ac6d2..fd4df93 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -63,6 +63,12 @@ jobs:
shell: powershell
run: |
& .\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:
env:
MSYSTEM: MINGW64
@@ -176,6 +182,12 @@ jobs:
- run: ci/run-build-and-tests.sh
- run: ci/print-test-failures.sh
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:
strategy:
matrix:
@@ -194,6 +206,12 @@ jobs:
- run: ci/run-build-and-tests.sh
- run: ci/print-test-failures.sh
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:
env:
jobname: StaticAnalysis
diff --git a/ci/print-test-failures.sh b/ci/print-test-failures.sh
index e688a26..92a983a 100755
--- a/ci/print-test-failures.sh
+++ b/ci/print-test-failures.sh
@@ -46,6 +46,13 @@ do
mv "$trash_dir" failed-test-artifacts
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
exit 1