diff mbox series

[v5,12/12] ci: let GitHub Actions upload failed tests' directories

Message ID 8de46ee1c6e0e9cab91008c27f097f6f37ed5ca8.1586538752.git.congdanhqx@gmail.com (mailing list archive)
State New, archived
Headers show
Series ci: replace our Azure Pipeline by GitHub Actions | expand

Commit Message

Đoàn Trần Công Danh April 10, 2020, 5:18 p.m. UTC
From: Johannes Schindelin <johannes.schindelin@gmx.de>

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>
---
 .github/workflows/main.yml | 18 ++++++++++++++++++
 ci/print-test-failures.sh  |  7 +++++++
 2 files changed, 25 insertions(+)
diff mbox series

Patch

diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index e1ac6d23b4..fd4df939b5 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 e688a26f0d..92a983a265 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