Commit f772bd11 authored by Anas Nashif's avatar Anas Nashif Committed by Carles Cufi
Browse files

ci: codecov: use gcovr and upload cobertura style file

Use gcovr to generate reports and upload cobertura style file instead of
previously lcov info file.

We have been seeing issues with lcov format and code being reporting as
not covered although by inspecting the generate output files, they
should be.

The XML format we generate is otherwise easier to parse and deal with.

Also reduce frequency to twice a day.

Fixes #66656

Signed-off-by: default avatarAnas Nashif <anas.nashif@intel.com>
parent 1ef0ec55
Loading
Loading
Loading
Loading
+19 −19
Changes for .github/workflows/codecov.yaml: 19 added lines, 19 removed lines.
Original line number Diff line number Diff line
@@ -2,7 +2,7 @@ name: Code Coverage with codecov

on:
  schedule:
    - cron: '25 */3 * * 1-5'
    - cron: '25 06,18 * * 1-5'

concurrency:
  group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.head_ref || github.ref }}
@@ -88,27 +88,25 @@ jobs:
          export ZEPHYR_BASE=${PWD}
          export ZEPHYR_TOOLCHAIN_VARIANT=zephyr
          mkdir -p coverage/reports
          ./scripts/twister --force-color -N -v --filter runnable -p ${{ matrix.platform }} --coverage -T tests

      - name: Generate Coverage Report
        run: |
          mv twister-out/coverage.info lcov.pre.info
          lcov -q --remove lcov.pre.info mylib.c --remove lcov.pre.info tests/\* \
            --remove lcov.pre.info samples/\* --remove lcov.pre.info ext/\* \
            --remove lcov.pre.info *generated*  \
            -o coverage/reports/${{ matrix.platform }}.info --rc lcov_branch_coverage=1
          pip3 install gcovr
          ./scripts/twister -i --force-color -N -v --filter runnable -p ${{ matrix.platform }} --coverage -T tests --coverage-tool gcovr

      - name: ccache stats post
        run: |
          ccache -s
          ccache -p

      - name: Rename coverage files
        if: always()
        run: |
          cp twister-out/coverage.json coverage/reports/${{ matrix.platform }}.json

      - name: Upload Coverage Results
        if: always()
        uses: actions/upload-artifact@v3
        with:
          name: Coverage Data (Subset ${{ matrix.platform }})
          path: coverage/reports/${{ matrix.platform }}.info
          path: coverage/reports/${{ matrix.platform }}.json

  codecov-results:
    name: "Publish Coverage Results"
@@ -129,14 +127,14 @@ jobs:

      - name: Move coverage files
        run: |
          mv ./coverage/reports/*/*.info ./coverage/reports
          mv ./coverage/reports/*/*.json ./coverage/reports
          ls -la ./coverage/reports

      - name: Generate list of coverage files
        id: get-coverage-files
        shell: cmake -P {0}
        run: |
          file(GLOB INPUT_FILES_LIST  "coverage/reports/*.info")
          file(GLOB INPUT_FILES_LIST  "coverage/reports/*.json")
          set(MERGELIST "")
          set(FILELIST "")
          foreach(ITEM ${INPUT_FILES_LIST})
@@ -150,7 +148,7 @@ jobs:
          foreach(ITEM ${INPUT_FILES_LIST})
            get_filename_component(f ${ITEM} NAME)
            if(MERGELIST STREQUAL "")
              set(MERGELIST "-a ${f}")
              set(MERGELIST "--add-tracefile ${f}")
            else()
              set(MERGELIST "${MERGELIST} -a ${f}")
            endif()
@@ -160,17 +158,19 @@ jobs:

      - name: Merge coverage files
        run: |
          sudo apt-get update
          sudo apt-get install -y lcov
          cd ./coverage/reports
          lcov ${{ steps.get-coverage-files.outputs.mergefiles }} -o merged.info --rc lcov_branch_coverage=1
          pip3 install gcovr
          gcovr ${{ steps.get-coverage-files.outputs.mergefiles }}  --merge-mode-functions=separate --json merged.json
          gcovr ${{ steps.get-coverage-files.outputs.mergefiles }} --merge-mode-functions=separate --cobertura merged.xml

      - name: Upload Merged Coverage Results
        if: always()
        uses: actions/upload-artifact@v3
        with:
          name: Merged Coverage Data
          path: merged.info
          path: |
            coverage/reports/merged.json
            coverage/reports/merged.xml

      - name: Upload coverage to Codecov
        if: always()
@@ -180,4 +180,4 @@ jobs:
          env_vars: OS,PYTHON
          fail_ci_if_error: false
          verbose: true
          files: merged.info
          files: merged.xml