Verified Commit f388fbeb authored by Adrian DC's avatar Adrian DC
Browse files

ci(gitlab-ci): create 'quality:coverage' job to generate HTML report

Signed-off-by: default avatarAdrian DC <radian.dc@gmail.com>
parent 13430803
Loading
Loading
Loading
Loading
Loading
+33 −0
Changes for .gitlab-ci.d/quality.yml: 33 added lines, 0 removed lines.
Original line number Diff line number Diff line
spec:
  inputs:
    stage:
      default: test
      description: 'Defines the quality stage (Default: test)'
    image:
      default: undefined:latest
      description: 'Specify the quality image (Default: undefined:latest)'
---

quality:coverage:
  stage: $[[ inputs.stage ]]
  image: $[[ inputs.image ]]
  variables:
    COVERAGE_FILE: ${CI_PROJECT_DIR}/coverage-reports/.coverage-common
    COVERAGE_RCFILE: ${CI_PROJECT_DIR}/.coveragerc
  before_script:
    # Prepare HTML coverage
    - rm -rf ./coverage-reports/html
  script:
    # Combine coverage files
    - coverage combine --keep ./coverage-reports/.coverage-*
    # Generate HTML coverage
    - coverage html --directory ./coverage-reports/html --precision=2 --skip-empty
    # Show common coverage
    - coverage report --ignore-errors --show-missing --skip-covered
  after_script:
    # Resolve ownership
    - chown --recursive --reference ./.gitlab-ci.yml ./coverage-reports
  artifacts:
    expire_in: 1 hour
    paths:
      - coverage-reports/html
+22 −13
Changes for .gitlab-ci.yml: 22 added lines, 13 removed lines.
Original line number Diff line number Diff line
@@ -30,6 +30,10 @@ include:
  - local: .gitlab-ci.d/readme.yml
    inputs:
      stage: build
  - local: .gitlab-ci.d/quality.yml
    inputs:
      stage: quality
      image: registry.gitlab.com/radiandevcore/tools/gitlab-projects-settings/gitlab-projects-settings:test-coverage-linux
  - local: .gitlab-ci.d/sonarcloud.yml
    inputs:
      stage: quality
@@ -343,11 +347,10 @@ build:
    COVERAGE_COMMON_FILE: ${CI_PROJECT_DIR}/coverage-reports/.coverage-common
    COVERAGE_COMMON_XML: ${CI_PROJECT_DIR}/coverage-reports/coverage-common.xml
    COVERAGE_EXCLUDE_ALSO: ''
    COVERAGE_FOLDER: ${CI_PROJECT_DIR}/coverage-reports
    COVERAGE_RCFILE: ${CI_PROJECT_DIR}/.coveragerc
  before_script:
    - mkdir -p "${COVERAGE_FOLDER}/"
    - chmod 777 "${COVERAGE_FOLDER}"
    - mkdir -p ./coverage-reports/
    - chmod 777 ./coverage-reports
    - |
      if [ -z "${SUITE}" ]; then
        coverage erase
@@ -371,7 +374,7 @@ build:
    - |
      set +x
      if [ ! -z "${CI_LOCAL}" ]; then
        COVERAGE_FILE="${COVERAGE_COMMON_FILE}" coverage combine --keep "${COVERAGE_FOLDER}/.coverage-"*
        COVERAGE_FILE="${COVERAGE_COMMON_FILE}" coverage combine --keep ./coverage-reports/.coverage-*
        COVERAGE_FILE="${COVERAGE_COMMON_FILE}" COVERAGE_RCFILE='/tmp/.coveragerc.common' coverage report --ignore-errors --show-missing --skip-covered
        COVERAGE_FILE="${COVERAGE_COMMON_FILE}" coverage xml -o "${COVERAGE_COMMON_XML}"
        sed -i 's#\(<source>\).*\(</source>\)#\1.\2#g' "${COVERAGE_COMMON_XML}"
@@ -459,6 +462,18 @@ py3.12:
  before_script:
    - !reference [.unit-tests-template, before_script]

quality:coverage:
  needs:
    - job: registry:test-coverage-linux
      artifacts: false
      optional: true
    - job: coverage:linux
    - job: coverage:windows
  variables:
    COVERAGE_FILE: !reference [.coverage-scripts, variables, COVERAGE_COMMON_FILE]
    COVERAGE_RCFILE: !reference [.coverage-scripts, variables, COVERAGE_RCFILE]
  rules: !reference [.coverage-template, rules]

sonarcloud:
  needs:
    - job: registry:rehost
@@ -532,22 +547,16 @@ pages:
    - job: build
      artifacts: false
      optional: true
    - job: coverage:linux
      artifacts: true
      optional: true
    - job: coverage:windows
      artifacts: true
      optional: true
    - job: py3.8
      artifacts: false
      optional: true
    - job: py3.12
      artifacts: false
      optional: true
    - job: quality:coverage
      artifacts: true
      optional: true
  variables:
    COVERAGE_FILE: !reference [.coverage-scripts, variables, COVERAGE_COMMON_FILE]
    COVERAGE_FOLDER: !reference [.coverage-scripts, variables, COVERAGE_FOLDER]
    COVERAGE_RCFILE: !reference [.coverage-scripts, variables, COVERAGE_RCFILE]
    DOCS_PREPARE_WATCH_FILES: ./config/* ./docs/.* ./docs/* ./mkdocs.yml ./README.md
    MKDOCS_EXPORTER_PDF_OUTPUT: 'gitlab-projects-settings'
  rules:
+0 −7
Changes for docs/prepare.sh: 0 added lines, 7 removed lines.
Original line number Diff line number Diff line
@@ -241,13 +241,6 @@ diff -u "${root_path}/CHANGELOG.md" "${docs_path}/about/changelog.md" || true
  done
} >"${docs_path}/about/quality.md"

# Generate about/coverage
rm -rf "${COVERAGE_FOLDER}/html"
if ls "${COVERAGE_FOLDER}/.coverage-"* >/dev/null 2>&1; then
  coverage combine --keep "${COVERAGE_FOLDER}/.coverage-"*
fi
coverage html --directory "${COVERAGE_FOLDER}/html" --precision=2 --skip-empty

# Show documentations
echo ' '
ls -laR "${docs_path}/"