Continuous Integration #324
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: Continuous Integration | |
on: | |
push: | |
paths-ignore: | |
- .github/workflows/docker.yml | |
- .github/workflows/doxygen.yml | |
- 'doc/**' | |
- 'docker/**' | |
- '**.md' | |
pull_request: | |
schedule: | |
- cron: '0 0 * * SAT' | |
workflow_dispatch: | |
env: | |
CMAKE_CCACHE_LAUNCHER: -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache | |
jobs: | |
maybe_skip: | |
runs-on: ubuntu-latest | |
outputs: | |
should_skip: ${{steps.skip_check.outputs.should_skip}} | |
steps: | |
- uses: fkirc/skip-duplicate-actions@v5 | |
id: skip_check | |
with: | |
cancel_others: 'true' | |
build: | |
name: build (${{matrix.os}}, ${{matrix.robotology.yarp}}, ${{matrix.compiler.cc}}) | |
runs-on: ${{matrix.os}} | |
container: | |
image: ghcr.io/roboticslab-uc3m/vision:${{matrix.os}}-opencv-4.x | |
env: | |
DEBIAN_FRONTEND: noninteractive | |
needs: maybe_skip | |
if: ${{needs.maybe_skip.outputs.should_skip != 'true'}} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-22.04, ubuntu-24.04] | |
robotology: | |
- { yarp: yarp-3.8, cmake: 3.16.x } | |
- { yarp: yarp-3.9, cmake: 3.16.x } | |
- { yarp: master, cmake: 3.19.x } | |
compiler: | |
- { cc: gcc, cxx: g++ } | |
- { cc: clang, cxx: clang++ } | |
experimental: | |
- ${{github.event_name == 'schedule' || github.event_name == 'workflow_dispatch'}} | |
exclude: | |
- { experimental: false, robotology: { yarp: master } } | |
steps: | |
- name: Check out main project | |
uses: actions/checkout@v4 | |
- name: Check out YCM | |
uses: actions/checkout@v4 | |
with: | |
repository: robotology/ycm | |
path: .deps/ycm | |
- name: Check out YARP | |
uses: actions/checkout@v4 | |
with: | |
repository: robotology/yarp | |
ref: ${{matrix.robotology.yarp}} | |
path: .deps/yarp | |
- name: Set up CMake | |
uses: jwlawson/actions-setup-cmake@v2 | |
with: | |
cmake-version: ${{matrix.robotology.cmake}} | |
- name: Set up Ccache | |
uses: hendrikmuhs/ccache-action@v1 | |
with: | |
key: ${{matrix.os}}-${{matrix.robotology.yarp}}-${{matrix.compiler.cc}} | |
- name: Set up model cache | |
uses: actions/cache@v4 | |
with: | |
path: models | |
key: vision-models-${{hashFiles('models/**/*')}} | |
- name: Set environment variables | |
run: | | |
echo "CC=${{matrix.compiler.cc}}" >> $GITHUB_ENV | |
echo "CXX=${{matrix.compiler.cxx}}" >> $GITHUB_ENV | |
- name: Build YCM | |
run: | | |
cmake -S .deps/ycm -B .deps/ycm/build | |
cmake --build .deps/ycm/build | |
cmake --install .deps/ycm/build | |
- name: Build YARP | |
run: | | |
cmake -S .deps/yarp -B .deps/yarp/build $CMAKE_CCACHE_LAUNCHER -DSKIP_ACE=ON -DYARP_DISABLE_VERSION_SOURCE=ON | |
cmake --build .deps/yarp/build | |
cmake --install .deps/yarp/build | |
- name: Configure vision | |
run: cmake -S . -B build $CMAKE_CCACHE_LAUNCHER -DCREATE_BINDINGS_PYTHON=ON -DENABLE_examples=ON | |
- name: Compile vision | |
run: cmake --build build | |
- name: Install vision | |
run: cmake --install build && ldconfig | |
- name: Test vision | |
working-directory: build | |
run: ctest -V | |
- name: Uninstall vision | |
run: cmake --build build --target uninstall |