diff --git a/bob/devtools/build.py b/bob/devtools/build.py
index 6fb59da7265378e2b1cdce8d513b23e926f8cc85..30f873c8d4cf5a66e04b53afc4714834f82e3b58 100644
--- a/bob/devtools/build.py
+++ b/bob/devtools/build.py
@@ -591,6 +591,7 @@ def git_clean_build(runner, verbose):
         "miniconda.sh",  # the installer, cached
         "torch",  # eventual pytorch caches
         "sphinx",  # build artifact -- documentation
+        "test_results.xml",  # build artifact -- tests report
         "coverage.xml",  # build artifact -- coverage report
     ]
 
diff --git a/bob/devtools/data/gitlab-ci/single-package.yaml b/bob/devtools/data/gitlab-ci/single-package.yaml
index 243b52ce7627af45e1d3c4b4aefb6005826df1ed..d4729072b0ab7b4844e9f93f712e0d4aeb881553 100644
--- a/bob/devtools/data/gitlab-ci/single-package.yaml
+++ b/bob/devtools/data/gitlab-ci/single-package.yaml
@@ -45,8 +45,10 @@ stages:
     - bdt ci clean -vv
   coverage: '/(?i)total.*? (100(?:\.0+)?\%|[1-9]?\d(?:\.\d+)?\%)$/'
   artifacts:
+    when: always
     expire_in: 1 week
     reports:
+      junit: test_results.xml
       coverage_report:
         coverage_format: cobertura
         path: coverage.xml