114b11b2bSmrg# Summary stage
214b11b2bSmrg#
314b11b2bSmrg# This stage takes coverage reports from test runs for all architectures, and
414b11b2bSmrg# merges it into a single report, with GitLab visualization. There is also an
514b11b2bSmrg# HTML report generated as a separate artifact.
614b11b2bSmrg
714b11b2bSmrgsummary:
814b11b2bSmrg  extends: .target:all
914b11b2bSmrg  stage: summary
1014b11b2bSmrg  variables:
1114b11b2bSmrg    TARGET: linux-amd64
1214b11b2bSmrg    COVERAGE_SUMMARY_DIR: ${COVERAGE_BASE_DIR}/summary
1314b11b2bSmrg  needs:
1414b11b2bSmrg    - job: test:linux-386
1514b11b2bSmrg      optional: true
1614b11b2bSmrg    - job: test:linux-amd64
1714b11b2bSmrg      optional: true
1814b11b2bSmrg    - job: test:linux-arm-v7
1914b11b2bSmrg      optional: true
2014b11b2bSmrg    - job: test:linux-arm64-v8
2114b11b2bSmrg      optional: true
2214b11b2bSmrg    - job: test:linux-mips64le
2314b11b2bSmrg      optional: true
2414b11b2bSmrg    - job: test:linux-ppc64le
2514b11b2bSmrg      optional: true
2614b11b2bSmrg    - job: test:linux-riscv64
2714b11b2bSmrg      optional: true
2814b11b2bSmrg  script:
2914b11b2bSmrg    - echo "Input coverage reports:" && ls ${COVERAGE_BASE_DIR}/*.json || (echo "No coverage reports available." && exit)
3014b11b2bSmrg    - |
3114b11b2bSmrg      args=( )
3214b11b2bSmrg      for f in ${COVERAGE_BASE_DIR}/*.json; do
3314b11b2bSmrg        args+=( "-a" "$f" )
3414b11b2bSmrg      done
3514b11b2bSmrg    - mkdir -p ${COVERAGE_SUMMARY_DIR}
3614b11b2bSmrg    - gcovr "${args[@]}"
3714b11b2bSmrg        --cobertura-pretty --cobertura ${COVERAGE_SUMMARY_DIR}/coverage.xml
3814b11b2bSmrg        --html-details ${COVERAGE_SUMMARY_DIR}/coverage.html
3914b11b2bSmrg        --txt --print-summary
4014b11b2bSmrg  coverage: '/^TOTAL.*\s+(\d+\%)$/'
4114b11b2bSmrg  artifacts:
4214b11b2bSmrg    when: always
4314b11b2bSmrg    reports:
4414b11b2bSmrg      coverage_report:
4514b11b2bSmrg        coverage_format: cobertura
4614b11b2bSmrg        path: ${COVERAGE_SUMMARY_DIR}/coverage.xml
4714b11b2bSmrg    paths:
4814b11b2bSmrg      - ${COVERAGE_BASE_DIR}/
49