Continuous Integration #193
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: | |
- 'doc/**' | |
- '**.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}} | |
needs: maybe_skip | |
if: ${{needs.maybe_skip.outputs.should_skip != 'true'}} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-20.04, ubuntu-22.04] | |
robotology: | |
- { yarp: yarp-3.7, cmake: 3.16.x } | |
- { yarp: yarp-3.8, cmake: 3.16.x } | |
- { yarp: master, cmake: 3.16.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@v3 | |
- name: Check out YCM | |
uses: actions/checkout@v3 | |
with: | |
repository: robotology/ycm | |
path: .deps/ycm | |
- name: Check out YARP | |
uses: actions/checkout@v3 | |
with: | |
repository: robotology/yarp | |
ref: ${{matrix.robotology.yarp}} | |
path: .deps/yarp | |
- name: Install dependencies via apt | |
run: sudo apt-get update && sudo apt-get install -qq ccache libopencv-dev libpcl-dev swig googletest | |
- name: Set up CMake | |
uses: jwlawson/actions-setup-cmake@v1 | |
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 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 | |
sudo 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 | |
sudo 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: sudo cmake --install build && sudo ldconfig | |
- name: Test vision | |
working-directory: build | |
run: ctest -V | |
- name: Uninstall vision | |
run: sudo cmake --build build --target uninstall |