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: Anas Nashif <anas.nashif@intel.com>
This commit is contained in:
parent
1ef0ec55c9
commit
f772bd1106
38
.github/workflows/codecov.yaml
vendored
38
.github/workflows/codecov.yaml
vendored
@ -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
|
||||
|
||||
Loading…
Reference in New Issue
Block a user