Code coverage testing #118
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CI | |
# Controls when the action will run. | |
on: | |
# Triggers the workflow on push or pull request events but only for the master branch | |
push: | |
branches: [ master ] | |
pull_request: | |
branches: [ master ] | |
types: | |
- opened | |
- reopened | |
- synchronize | |
- ready_for_review | |
# Allows you to run this workflow manually from the Actions tab | |
workflow_dispatch: | |
# A workflow run is made up of one or more jobs that can run sequentially or in parallel | |
jobs: | |
clang-format-lint: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v2 # required to mount the Github Workspace to a volume | |
- name: Run clang-format-lint | |
uses: DoozyX/[email protected] | |
with: | |
source: '.' | |
exclude: './third_party ./external .git' | |
extensions: 'h,cpp' | |
clangFormatVersion: 11 | |
cppcheck: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v2 | |
- name: Run cppcheck | |
uses: addnab/docker-run-action@v3 | |
with: | |
image: bailool/mc-calib-dev:latest | |
options: -v ${{ github.workspace }}:/home/MC-Calib | |
run: | | |
cppcheck MC-Calib/McCalib/include | |
cppcheck MC-Calib/McCalib/src | |
clang-tidy: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v2 | |
- name: Run clang-tidy | |
uses: addnab/docker-run-action@v3 | |
with: | |
image: bailool/mc-calib-dev:latest | |
options: -v ${{ github.workspace }}:/home/MC-Calib | |
run: | | |
mkdir MC-Calib/build && cd MC-Calib/build | |
cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DCMAKE_BUILD_TYPE=Debug .. | |
run-clang-tidy | |
# unit-tests-with-sanitizers: | |
# if: ${{ false }} # TODO: disable for now until understand how to suppress leaks from external libraries like OpenCV | |
# runs-on: ubuntu-latest | |
# needs: | |
# - clang-format-lint | |
# - cppcheck | |
# - clang-tidy | |
# steps: | |
# - name: Checkout | |
# uses: actions/checkout@v2 | |
# - name: Checkout MC-Calib-data | |
# uses: actions/checkout@v4 | |
# with: | |
# repository: BAILOOL/MC-Calib-data | |
# path: ${{ github.workspace }}/data | |
# lfs: 'true' | |
# - name: Unzip MC-Calib-data | |
# run: tar xf ${{ github.workspace }}/data/Blender_Images.tar.gz -C ${{ github.workspace }}/data | |
# - name: Run tests | |
# uses: addnab/docker-run-action@v3 | |
# with: | |
# image: bailool/mc-calib-dev:latest | |
# options: -v ${{ github.workspace }}:/home/MC-Calib | |
# run: | | |
# mkdir MC-Calib/build && cd MC-Calib/build | |
# cmake -DCMAKE_BUILD_TYPE=Debug -DUSE_SANITIZERS=ON .. | |
# make -j4 | |
# ./tests/boost_tests_run | |
# unit-tests-with-valgrind: | |
# runs-on: ubuntu-latest | |
# needs: | |
# - clang-format-lint | |
# - cppcheck | |
# - clang-tidy | |
# steps: | |
# - name: Checkout | |
# uses: actions/checkout@v2 | |
# - name: Checkout MC-Calib-data | |
# uses: actions/checkout@v4 | |
# with: | |
# repository: BAILOOL/MC-Calib-data | |
# path: ${{ github.workspace }}/data | |
# lfs: 'true' | |
# - name: Unzip MC-Calib-data | |
# run: tar xf ${{ github.workspace }}/data/Blender_Images.tar.gz -C ${{ github.workspace }}/data | |
# - name: Run tests | |
# uses: addnab/docker-run-action@v3 | |
# with: | |
# image: bailool/mc-calib-dev:latest | |
# options: -v ${{ github.workspace }}:/home/MC-Calib | |
# run: | | |
# mkdir MC-Calib/build && cd MC-Calib/build | |
# cmake -DCMAKE_BUILD_TYPE=Debug -DUSE_SANITIZERS=OFF .. | |
# make -j4 | |
# valgrind --leak-check=full \ | |
# --leak-check=full \ | |
# --track-origins=yes \ | |
# --show-reachable=yes \ | |
# --error-limit=no \ | |
# --gen-suppressions=all \ | |
# --verbose \ | |
# --log-file=valgrind-out.txt \ | |
# --suppressions=../tests/valgrind_suppress/opencv_valgrind.supp \ | |
# --suppressions=../tests/valgrind_suppress/opencv_valgrind_3rdparty.supp \ | |
# --suppressions=../tests/valgrind_suppress/boost_valgrind.supp \ | |
# ./apps/calibrate/calibrate ../tests/configs_for_end2end_tests/calib_param_synth_Scenario1.yml | |
# unit-tests-in-release-mode: | |
# runs-on: ubuntu-latest | |
# needs: | |
# - clang-format-lint | |
# - cppcheck | |
# - clang-tidy | |
# steps: | |
# - name: Checkout | |
# uses: actions/checkout@v2 | |
# - name: Checkout MC-Calib-data | |
# uses: actions/checkout@v4 | |
# with: | |
# repository: BAILOOL/MC-Calib-data | |
# path: ${{ github.workspace }}/data | |
# lfs: 'true' | |
# - name: Unzip MC-Calib-data | |
# run: tar xf ${{ github.workspace }}/data/Blender_Images.tar.gz -C ${{ github.workspace }}/data | |
# - name: Run tests | |
# uses: addnab/docker-run-action@v3 | |
# with: | |
# image: bailool/mc-calib-prod:latest | |
# options: -v ${{ github.workspace }}:/home/MC-Calib | |
# run: | | |
# mkdir MC-Calib/build && cd MC-Calib/build | |
# cmake -DCMAKE_BUILD_TYPE=Release .. | |
# make -j4 | |
# ./tests/boost_tests_run | |
code-coverage-testing: | |
runs-on: ubuntu-latest | |
needs: | |
- clang-format-lint | |
- cppcheck | |
- clang-tidy | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v2 | |
- name: Checkout MC-Calib-data | |
uses: actions/checkout@v4 | |
with: | |
repository: BAILOOL/MC-Calib-data | |
path: ${{ github.workspace }}/data | |
lfs: 'true' | |
- name: Unzip MC-Calib-data | |
run: tar xf ${{ github.workspace }}/data/Blender_Images.tar.gz -C ${{ github.workspace }}/data | |
- name: Run tests | |
uses: addnab/docker-run-action@v3 | |
with: | |
image: bailool/mc-calib-dev:latest | |
options: -v ${{ github.workspace }}:/home/MC-Calib | |
run: | | |
mkdir MC-Calib/build && cd MC-Calib/build | |
cmake -DCMAKE_BUILD_TYPE=Debug -DENABLE_COVERAGE=true .. | |
make -j4 | |
./tests/boost_tests_run && make coverage | |
- name: Upload code coverage results | |
uses: actions/upload-artifact@v4 | |
with: | |
name: code-coverage-report | |
path: ${{ github.workspace }}/build/coverage | |
- name: Setup LCOV for report to PR | |
uses: hrishikesh-kadam/setup-lcov@v1 | |
- name: Report code coverage to PR | |
uses: zgosalvez/github-actions-report-lcov@v3 | |
with: | |
coverage-files: build/coverage.info | |
minimum-coverage: 90 | |
artifact-name: code-coverage-report-with-github-actions | |
github-token: ${{ secrets.GITHUB_TOKEN }} | |
update-comment: true |