name: CI on: push: pull_request: workflow_dispatch: permissions: read-all jobs: build: name: "ROS2 ${{ matrix.ros }} (${{ matrix.os }})" runs-on: ${{ matrix.os }} continue-on-error: ${{ matrix.ros == 'rolling' }} env: ROS_DISTRO: ${{ matrix.ros }} strategy: fail-fast: false matrix: include: - {image: "ros:foxy-ros-core-focal", os: ubuntu-22.04, ros: foxy} - {image: "ros:humble-ros-core-jammy", os: ubuntu-22.04, ros: humble} - {image: "ros:jazzy-ros-core-noble", os: ubuntu-24.04, ros: jazzy} - {image: "ros:lyrical-ros-core-resolute", os: ubuntu-26.04, ros: lyrical} - {image: "ros:rolling-ros-core-resolute", os: ubuntu-26.04, ros: rolling} container: image: ${{ matrix.image }} steps: - uses: actions/checkout@v6 - name: Install build tools shell: bash run: | set -euo pipefail apt-get update apt-get install --no-install-recommends --yes \ build-essential \ cmake \ git \ python3-colcon-common-extensions \ python3-rosdep rosdep init || true rosdep update --rosdistro "${ROS_DISTRO}" --include-eol-distros - name: Install dependencies and build shell: bash run: | set -eo pipefail source "/opt/ros/${ROS_DISTRO}/setup.bash" rosdep install --from-paths . --ignore-src --rosdistro "${ROS_DISTRO}" -y colcon build --symlink-install --event-handlers console_direct+