Enable Test Coverage Visualization for merge requests

This feature allows GitLab to visualize test coverage information in the
file diff view of merge requests.

This commit makes the gcov CI job depend on the following chain of jobs:

    gcc:buster:amd64 → unit:gcc:buster:amd64 → system:gcc:buster:amd64

The reason for running the last two jobs above sequentially rather than
in parallel is that both of them create *.gcda files (containing
coverage data) in the same locations.  While some way of merging these
files from different job artifact archives could probably be designed
with the help of additional tools, the simplest thing to do is not to
run unit test and system test jobs in parallel, carrying *.gcda files
over between jobs as gcov knows how to append coverage data to existing
*.gcda files.

Also note that test coverage will not be visualized if any of the jobs
in the above dependency chain fails (because the gcov job will not be
run).

(cherry picked from commit 2dabf328)
83 jobs for !4315 with mnowak/test-coverage-visualization-v9_11 in 22 minutes and 21 seconds (queued for 12 seconds)
detached
Status Job ID Name Coverage
  Precheck
passed #1252969
amd64 linux
autoreconf

00:00:16

passed #1252971
amd64 linux
clang-format

00:00:09

passed #1252972
amd64 linux
coccinelle

00:01:01

passed #1252973
amd64 linux
danger

00:00:16

passed #1252970
amd64 linux
misc

00:00:16

 
  Build
passed #1252988
amd64 linux
clang:asan

00:04:23

passed #1252993
amd64 linux
clang:buster:amd64

00:01:50

passed #1252995
amd64 libvirt
clang:freebsd11:amd64

00:01:53

passed #1252996
amd64 libvirt
clang:freebsd12:amd64

00:01:48

passed #1252997
amd64 libvirt
clang:openbsd:amd64

00:03:59

passed #1252990
amd64 linux
clang:tsan

00:02:19

passed #1252974
amd64 linux
gcc:alpine3.12:amd64

00:01:37

passed #1252987
amd64 linux
gcc:asan

00:03:18

passed #1252979
amd64 linux
gcc:buster:amd64

00:01:17

passed #1252975
amd64 linux
gcc:centos6:amd64

00:01:26

passed #1252976
amd64 linux
gcc:centos7:amd64

00:01:29

passed #1252977
amd64 linux
gcc:centos8:amd64

00:01:35

passed #1252984
amd64 linux
gcc:fedora32:amd64

00:01:37

passed #1252986
amd64 linux
gcc:focal:amd64

00:01:31

passed #1252991
amd64 linux
gcc:mutexatomics

00:01:35

passed #1252992
amd64 linux
gcc:noatomics

00:01:52

passed #1252981
amd64 linux
gcc:out-of-tree

00:01:35

passed #1252994
amd64 linux
gcc:pkcs11

00:01:35

passed #1252980
amd64 linux
gcc:sid:amd64

00:02:14

passed #1252982
i386 linux
gcc:sid:i386

00:01:39

passed #1252978
amd64 linux
gcc:stretch:amd64

00:01:52

passed #1252989
amd64 linux
gcc:tsan

00:01:53

passed #1252983
amd64 linux
gcc:tumbleweed:amd64

00:01:34

passed #1252985
amd64 linux
gcc:xenial:amd64

00:01:41

passed #1252999
amd64 windows
msvc:windows:amd64

00:02:21

passed #1252998
amd64 linux
nolibtool:sid:amd64

00:02:15

 
  Unit
passed #1253013
amd64 linux
unit:clang:asan

00:01:15

passed #1253018
amd64 linux
unit:clang:buster:amd64

00:00:32

passed #1253020
amd64 libvirt
unit:clang:freebsd11:amd64

00:01:09

passed #1253021
amd64 libvirt
unit:clang:freebsd12:amd64

00:00:54

passed #1253015
amd64 linux
unit:clang:tsan

00:04:20

passed #1253000
amd64 linux
unit:gcc:alpine3.12:amd64

00:00:30

passed #1253012
amd64 linux
unit:gcc:asan

00:01:19

passed #1253005
amd64 linux
unit:gcc:buster:amd64

00:00:59

passed #1253001
amd64 linux
unit:gcc:centos6:amd64

00:00:36

passed #1253002
amd64 linux
unit:gcc:centos7:amd64

00:00:33

passed #1253003
amd64 linux
unit:gcc:centos8:amd64

00:00:31

passed #1253009
amd64 linux
unit:gcc:fedora32:amd64

00:00:31

passed #1253011
amd64 linux
unit:gcc:focal:amd64

00:00:35

passed #1253016
amd64 linux
unit:gcc:mutexatomics

00:00:32

passed #1253017
amd64 linux
unit:gcc:noatomics

00:00:32

passed #1253019
amd64 linux
unit:gcc:pkcs11

00:00:34

passed #1253006
amd64 linux
unit:gcc:sid:amd64

00:00:33

passed #1253007
i386 linux
unit:gcc:sid:i386

00:00:30

passed #1253004
amd64 linux
unit:gcc:stretch:amd64

00:00:29

passed #1253014
amd64 linux
unit:gcc:tsan

00:04:56

passed #1253008
amd64 linux
unit:gcc:tumbleweed:amd64

00:00:32

passed #1253010
amd64 linux
unit:gcc:xenial:amd64

00:00:31

passed #1253022
amd64 linux
unit:nolibtool:sid:amd64

00:00:56

 
  System
passed #1253036
amd64 linux
system:clang:asan

00:08:55

passed #1253041
amd64 linux
system:clang:buster:amd64

00:07:12

passed #1253043
amd64 libvirt
system:clang:freebsd11:amd64

00:08:14

passed #1253044
amd64 libvirt
system:clang:freebsd12:amd64

00:08:14

passed #1253038
amd64 linux
system:clang:tsan

00:11:03

passed #1253023
amd64 linux
system:gcc:alpine3.12:amd64

00:07:29

passed #1253035
amd64 linux
system:gcc:asan

00:09:01

passed #1253028
amd64 linux
system:gcc:buster:amd64

00:08:08

passed #1253024
amd64 linux
system:gcc:centos6:amd64

00:07:17

passed #1253025
amd64 linux
system:gcc:centos7:amd64

00:07:13

passed #1253026
amd64 linux
system:gcc:centos8:amd64

00:07:09

passed #1253032
amd64 linux
system:gcc:fedora32:amd64

00:07:27

passed #1253034
amd64 linux
system:gcc:focal:amd64

00:07:08

passed #1253039
amd64 linux
system:gcc:mutexatomics

00:07:25

failed #1253040
amd64 linux
system:gcc:noatomics

00:07:38

passed #1253042
amd64 linux
system:gcc:pkcs11

00:08:12

passed #1253029
amd64 linux
system:gcc:sid:amd64

00:07:09

passed #1253030
i386 linux
system:gcc:sid:i386

00:07:16

passed #1253027
amd64 linux
system:gcc:stretch:amd64

00:07:25

passed #1253037
amd64 linux
system:gcc:tsan

00:11:58

passed #1253031
amd64 linux
system:gcc:tumbleweed:amd64

00:06:50

passed #1253033
amd64 linux
system:gcc:xenial:amd64

00:06:41

passed #1253045
amd64 linux
system:nolibtool:sid:amd64

00:07:40

 
  Docs
passed #1253046
amd64 linux
docs

00:00:27

 
  Postcheck
passed #1253050
amd64 linux
cppcheck

00:00:28

passed #1253047
amd64 linux
flake8

00:00:21

passed #1253051
amd64 linux
gcov

00:00:35

74.0%
passed #1253048
amd64 linux
pylint

00:00:23

passed #1253049
amd64 linux
scan-build

00:08:51

 
Name Stage Failure
failed
system:gcc:noatomics System
I:The following system tests failed:
I: rpzrecurse
make: *** [Makefile:474: test] Error 1
Uploading artifacts for failed job
Uploading artifacts...
untracked: found 2650 files

Uploading artifacts as "archive" to coordinator... ok
id=1253040 responseStatus=201 Created token=EQEPYGVD
Cleaning up file based variables
ERROR: Job failed: exit code 1