Add support for OpenCV > v4.6.0 (#88) #219
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: | |
env: | |
MC_CALIB_PROD_DOCKER_IMG: bailool/mc-calib-prod:opencv4100 | |
MC_CALIB_DEV_DOCKER_IMG: bailool/mc-calib-dev:opencv4100 | |
# 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: ${{env.MC_CALIB_DEV_DOCKER_IMG}} | |
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: ${{env.MC_CALIB_DEV_DOCKER_IMG}} | |
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 | |
test-charuco-boards-generation: | |
runs-on: ubuntu-latest | |
needs: | |
- clang-format-lint | |
- cppcheck | |
- clang-tidy | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v2 | |
- name: Run charuco boards generation app | |
uses: addnab/docker-run-action@v3 | |
with: | |
image: ${{env.MC_CALIB_PROD_DOCKER_IMG}} | |
options: -v ${{ github.workspace }}:/home/MC-Calib:rw | |
run: | | |
mkdir MC-Calib/build && cd MC-Calib/build | |
cmake -DCMAKE_BUILD_TYPE=Release .. | |
make -j4 | |
./apps/create_charuco_boards/generate_charuco ../tests/configs_for_end2end_tests/calib_param_synth_Scenario1.yml | |
- name: Archive results artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: charuco_boards | |
path: ${{ github.workspace }}/build/charuco_boards | |
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: ${{env.MC_CALIB_DEV_DOCKER_IMG}} | |
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: ${{env.MC_CALIB_DEV_DOCKER_IMG}} | |
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-opencv4100: | |
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: ${{env.MC_CALIB_PROD_DOCKER_IMG}} | |
options: -v ${{ github.workspace }}:/home/MC-Calib:rw | |
run: | | |
mkdir MC-Calib/build && cd MC-Calib/build | |
cmake -DCMAKE_BUILD_TYPE=Release .. | |
make -j4 | |
./tests/boost_tests_run | |
- name: Collect results | |
run: | | |
cd ${{ github.workspace }}/data/Blender_Images | |
mkdir Results_Blender_Sequences | |
mkdir Results_Blender_Sequences/Scenario_1 | |
cp -r Scenario_1/Results Results_Blender_Sequences/Scenario_1 | |
cp Scenario_1/GroundTruth.yml Results_Blender_Sequences/Scenario_1 | |
mkdir Results_Blender_Sequences/Scenario_2 | |
cp -r Scenario_2/Results Results_Blender_Sequences/Scenario_2 | |
cp Scenario_2/GroundTruth.yml Results_Blender_Sequences/Scenario_2 | |
mkdir Results_Blender_Sequences/Scenario_3 | |
cp -r Scenario_3/Results Results_Blender_Sequences/Scenario_3 | |
cp Scenario_3/GroundTruth.yml Results_Blender_Sequences/Scenario_3 | |
mkdir Results_Blender_Sequences/Scenario_4 | |
cp -r Scenario_4/Results Results_Blender_Sequences/Scenario_4 | |
cp Scenario_4/GroundTruth.yml Results_Blender_Sequences/Scenario_4 | |
mkdir Results_Blender_Sequences/Scenario_5 | |
cp -r Scenario_5/Results Results_Blender_Sequences/Scenario_5 | |
cp Scenario_5/GroundTruth.yml Results_Blender_Sequences/Scenario_5 | |
- name: Archive results artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: results_blender_sequences | |
path: ${{ github.workspace }}/data/Blender_Images/Results_Blender_Sequences | |
unit-tests-in-release-mode-opencv455: | |
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:opencv455 | |
options: -v ${{ github.workspace }}:/home/MC-Calib:rw | |
run: | | |
mkdir MC-Calib/build && cd MC-Calib/build | |
cmake -DCMAKE_BUILD_TYPE=Release .. | |
make -j4 | |
./tests/boost_tests_run | |
unit-tests-in-release-mode-opencv420: | |
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:opencv420 | |
options: -v ${{ github.workspace }}:/home/MC-Calib:rw | |
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: ${{env.MC_CALIB_DEV_DOCKER_IMG}} | |
options: -v ${{ github.workspace }}:${{ github.workspace }} | |
run: | | |
mkdir ${{ github.workspace }}/build && cd ${{ github.workspace }}/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: 77 | |
artifact-name: code-coverage-report-with-github-actions | |
github-token: ${{ secrets.GITHUB_TOKEN }} | |
update-comment: true | |
python-utils-linters: | |
runs-on: ubuntu-latest | |
needs: | |
- unit-tests-in-release-mode-opencv4100 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v2 | |
- name: Run python linters | |
uses: addnab/docker-run-action@v3 | |
with: | |
image: ${{env.MC_CALIB_DEV_DOCKER_IMG}} | |
options: -v ${{ github.workspace }}:/home/MC-Calib | |
run: | | |
cd MC-Calib/python_utils | |
./format.sh | |
./test.sh | |
python-utils: | |
runs-on: ubuntu-latest | |
needs: | |
- python-utils-linters | |
- unit-tests-in-release-mode-opencv4100 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v2 | |
- name: Download calibration results | |
uses: actions/download-artifact@v4 | |
with: | |
name: results_blender_sequences | |
path: ${{ github.workspace }}/data | |
- name: Run python utils | |
uses: addnab/docker-run-action@v3 | |
with: | |
image: ${{env.MC_CALIB_PROD_DOCKER_IMG}} | |
options: -v ${{ github.workspace }}:/home/MC-Calib:rw | |
run: | | |
cd MC-Calib/python_utils | |
python3 post_calibration_analysis.py -d /home/MC-Calib/data/Scenario_1/Results/ /home/MC-Calib/data/Scenario_2/Results/ /home/MC-Calib/data/Scenario_3/Results/ /home/MC-Calib/data/Scenario_4/Results/ /home/MC-Calib/data/Scenario_5/Results/ | |
- name: Archive results artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: results_blender_sequences_with_python_utils | |
path: ${{ github.workspace }}/data |