Skip to content

CI improvements

CI improvements #342

Workflow file for this run

name: ROS
# This determines when this workflow is run
on:
push:
paths-ignore:
- 'doc/**'
- '.gitlab-ci.yml'
- '.gitignore'
- '.pre-commit-config.yaml'
- '*.md'
- 'LICENSE'
- 'pyproject.toml'
- 'package.xml'
- 'dependencies.rosintall'
pull_request:
paths-ignore:
- 'doc/**'
- '.gitlab-ci.yml'
- '.gitignore'
- '.pre-commit-config.yaml'
- '*.md'
- 'LICENSE'
- 'pyproject.toml'
- 'package.xml'
- 'dependencies.rosintall'
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
CI:
if: github.event_name == 'push' || (github.event_name == 'pull_request' && !contains(join(github.event.pull_request.labels.*.name, ','), 'no ros'))
strategy:
fail-fast: false
matrix:
env:
- {name: "(noetic, Release)", ROS_DISTRO: noetic}
# - {name: "(noetic, clang, multi-threading, Release)", ROS_DISTRO: noetic, ADDITIONAL_DEBS: "clang libomp-dev", CC: clang, CXX: clang++, CMAKE_ARGS: "-DBUILD_WITH_MULTITHREADS=ON -DBUILD_WITH_NTHREADS=2"}
name: ${{ matrix.env.name }}
env:
CCACHE_DIR: /github/home/.ccache # Enable ccache
UPSTREAM_WORKSPACE: dependencies.rosinstall # to build example-robot-data from source as it's not released via the ROS buildfarm
CTEST_OUTPUT_ON_FAILURE: 1
# The following is a work-around for ROS tooling in conjunction with jrl-cmakemodules:
# - catkin_make_isolated has issues with Industrial-CI right now
# - colcon cannot find example-robot-data's python bindings due to ROS1 workspace integration hooks
# - catkin_tools correctly finds example-robot-data in the upstream_ws, but does not execute the 'run_tests' target
# as catkin-tools performs tests as '--catkin-make-args' instead of '--make-args' as colcon and catkin_make_isolated
# The work-around is thus to use catkin_tools for building and sourcing, and to manually specify execution of the test
# target after completion of the regular test target. The output of this step does affect the output of the CI process.
# Note, this does not affect projects that do not have pure CMake projects in their upstream_ws.
BUILDER: catkin_tools
runs-on: ubuntu-latest
continue-on-error: true
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
# This step will fetch/store the directory used by ccache before/after the ci run
- uses: actions/cache@v4
with:
path: ${{ env.CCACHE_DIR }}
key: ccache-${{ matrix.env.ROS_DISTRO }}-${{ matrix.env.ROS_REPO }}-${{ github.sha }}
restore-keys: ccache-${{ matrix.env.ROS_DISTRO }}-${{ matrix.env.ROS_REPO }}-
# Run industrial_ci
- uses: 'ros-industrial/industrial_ci@master'
env: ${{ matrix.env }}