[glib: 3/5] ci: Generate Cobertura XML and use it to feed gitlab for MR integration




commit 3ddfb10b0b050992328955cc5f426bce1a35050e
Author: Marco Trevisan (TreviƱo) <mail 3v1n0 net>
Date:   Thu Jul 21 01:05:42 2022 +0200

    ci: Generate Cobertura XML and use it to feed gitlab for MR integration
    
    gitlab has coverage integration in MRs, but we need a cobertura
    formatted XML files (each must be less than 10 MB [1]) to show it, so
    generate it using a python script and inform gitlab about it.
    
    See https://docs.gitlab.com/ee/ci/testing/test_coverage_visualization.html
    
    [1] https://gitlab.com/gitlab-org/gitlab/-/issues/328772#note_840831654

 .gitlab-ci.yml                | 6 +++++-
 .gitlab-ci/coverage-docker.sh | 8 ++++++++
 2 files changed, 13 insertions(+), 1 deletion(-)
---
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 684afddb2a..3b6f44ea6a 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -10,7 +10,7 @@ cache:
     - _ccache/
 
 variables:
-  FEDORA_IMAGE: "registry.gitlab.gnome.org/gnome/glib/fedora:v18"
+  FEDORA_IMAGE: "registry.gitlab.gnome.org/gnome/glib/fedora:v19"
   COVERITY_IMAGE: "registry.gitlab.gnome.org/gnome/glib/coverity:v7"
   DEBIAN_IMAGE: "registry.gitlab.gnome.org/gnome/glib/debian-stable:v13"
   MINGW_IMAGE: "registry.gitlab.gnome.org/gnome/glib/mingw:v9"
@@ -482,6 +482,10 @@ coverage:
     paths:
       - _coverage/coverage/index.html
       - _coverage
+    reports:
+      coverage_report:
+        coverage_format: cobertura
+        path: _coverage/*-cobertura/cobertura-*.xml
   before_script:
     - bash .gitlab-ci/show-execution-environment.sh
   script:
diff --git a/.gitlab-ci/coverage-docker.sh b/.gitlab-ci/coverage-docker.sh
index df3273fa0b..0b9abc0175 100755
--- a/.gitlab-ci/coverage-docker.sh
+++ b/.gitlab-ci/coverage-docker.sh
@@ -10,6 +10,14 @@ for path in _coverage/*.lcov; do
     lcov --config-file .lcovrc -r "${path}" '*/_build/*' -o "$(pwd)/${path}"
     # Remove any coverage from system files
     lcov --config-file .lcovrc -e "${path}" "$(pwd)/*" -o "$(pwd)/${path}"
+
+    # Convert to cobertura format for gitlab integration
+    cobertura_base="${path/.lcov}-cobertura"
+    cobertura_xml="${cobertura_base}.xml"
+    lcov_cobertura "${path}" --output "${cobertura_xml}"
+    mkdir -p "${cobertura_base}"
+    cobertura-split-by-package.py "${cobertura_xml}" "${cobertura_base}"
+    rm -f "${cobertura_xml}"
 done
 
 genhtml \


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]