Skip to content
Snippets Groups Projects

CI: Split coverage generation in 2 stages

+ 50
25
variables:
GIT_SUBMODULE_STRATEGY: normal
MEDIALIBRARY_IMG: registry.videolan.org/medialibrary:20220630074125
MEDIALIBRARY_30_IMAGE: registry.videolan.org/medialibrary-3.0:20220713114658
MEDIALIBRARY_40_IMAGE: registry.videolan.org/medialibrary-4.0:20220713115346
MEDIALIBRARY_WIN32_IMG: registry.videolan.org/medialibrary-win32:20220620092626
MEDIALIBRARY_WIN64_IMG: registry.videolan.org/medialibrary-win64:20220620085314
VLC_DEBIAN_UNSTABLE_IMG: registry.videolan.org/vlc-debian-unstable:20220127084320
@@ -20,7 +21,7 @@ default:
interruptible: true
build:novlc:
image: $MEDIALIBRARY_IMG
image: $MEDIALIBRARY_30_IMAGE
stage: build
rules:
- if: $CI_MERGE_REQUEST_IID
@@ -46,8 +47,8 @@ build:arch:
- meson build
- cd build && ninja
test:debian:
image: $MEDIALIBRARY_IMG
.test:debian.base:
image: $MEDIALIBRARY_30_IMAGE
rules:
- if: $CI_MERGE_REQUEST_IID
- if: '$CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'
@@ -60,33 +61,24 @@ test:debian:
- meson.py -Db_coverage=true build
- cd build
- meson.py test --no-stdsplit
- mkdir html/
- >
gcovr -r "$CI_PROJECT_DIR/"
-e "$CI_PROJECT_DIR/libvlcpp"
-e "$CI_PROJECT_DIR/test"
-e "$CI_PROJECT_DIR/src/database/SqliteErrors.h"
-e "$CI_PROJECT_DIR/src/database/SqliteErrors.cpp"
-e "$CI_PROJECT_DIR/include/medialibrary/filesystem/Errors.h"
-e "$CI_PROJECT_DIR/include/medialibrary/IMediaLibrary.h"
-e "$CI_PROJECT_DIR/src/utils/xxhash/"
--xml cobertura.xml --html=html/medialibrary.html --html-details
-s
-j 4
coverage: /^\s*lines:\s*\d+.\d+\%/
- gcovr -r "$CI_PROJECT_DIR/" --json $CI_PROJECT_DIR/$CI_JOB_NAME.cov.json -j 4
artifacts:
reports:
coverage_report:
coverage_format: cobertura
path: build/cobertura.xml
junit: build/meson-logs/testlog.junit.xml
name: "coverage-medialibrary-$CI_COMMIT_SHORT_SHA"
paths:
- build/html/
- $MEDIALIB_TEST_FOLDER/**/test.db
- $CI_PROJECT_DIR/build/meson-logs/testlog.txt
- $CI_PROJECT_DIR/$CI_JOB_NAME.cov.json
when: always
test:debian-3.0:
extends: .test:debian.base
image: $MEDIALIBRARY_30_IMAGE
test:debian-4.0:
extends: .test:debian.base
image: $MEDIALIBRARY_40_IMAGE
test:win32:
image: $MEDIALIBRARY_WIN32_IMG
variables:
@@ -177,7 +169,7 @@ asan-ubsan:
expire_in: 1 week
.base-sanitizer:
image: $MEDIALIBRARY_IMG
image: $MEDIALIBRARY_30_IMAGE
rules:
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
- if: '$CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH == "$CI_DEFAULT_BRANCH@videolan/medialibrary"'
@@ -217,7 +209,7 @@ test:asan-ubsan:
SANITIZERS: address,undefined
gen-test-db:
image: $MEDIALIBRARY_IMG
image: $MEDIALIBRARY_30_IMAGE
stage: generate
dependencies: []
rules:
@@ -243,3 +235,36 @@ gen-test-db:
paths:
- "$CI_PROJECT_DIR/test_db.sql"
- "$CI_PROJECT_DIR/test.db"
# Combine multiple coverage output into a single coverage artifact
gen-coverage:
image: $MEDIALIBRARY_30_IMAGE
stage: generate
needs: ["test:debian-3.0", "test:debian-4.0"]
rules:
- if: $CI_MERGE_REQUEST_IID
- if: '$CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'
- if: '$CI_PIPELINE_SOURCE == "schedule" && $MEDIALIB_MANUAL_JOB_NAME == null'
script:
- mkdir html
- >
gcovr --add-tracefile '*.cov.json'
-e "$CI_PROJECT_DIR/libvlcpp"
-e "$CI_PROJECT_DIR/test"
-e "$CI_PROJECT_DIR/src/database/SqliteErrors.h"
-e "$CI_PROJECT_DIR/src/database/SqliteErrors.cpp"
-e "$CI_PROJECT_DIR/include/medialibrary/filesystem/Errors.h"
-e "$CI_PROJECT_DIR/include/medialibrary/IMediaLibrary.h"
-e "$CI_PROJECT_DIR/src/utils/xxhash/"
--xml cobertura.xml --html=html/medialibrary.html --html-details
-s
-j 4
coverage: /^\s*lines:\s*\d+.\d+\%/
artifacts:
reports:
coverage_report:
coverage_format: cobertura
path: cobertura.xml
paths:
- html/
name: "coverage-medialibrary-$CI_COMMIT_SHORT_SHA"
Loading