Skip to content

Build optional ROS 2 overlay #34

Build optional ROS 2 overlay

Build optional ROS 2 overlay #34

name: build_ros2_overlay
run-name: Build optional ROS 2 overlay
on:
workflow_dispatch:
push:
branches:
- "master"
- "main"
- "develop"
tags:
- "v*.*.*"
paths:
- CMakeLists.txt
- cmake/**
- src/**
- lib/**
- ros2/**
- build_ros2.sh
- generate_version.sh
- .github/workflows/build_ros2_overlay.yml
pull_request:
branches:
- "master"
- "main"
- "develop"
- "dev*"
paths:
- CMakeLists.txt
- cmake/**
- src/**
- lib/**
- ros2/**
- build_ros2.sh
- generate_version.sh
- .github/workflows/build_ros2_overlay.yml
jobs:
overlay-build:
runs-on: ubuntu-24.04
container:
image: ros:jazzy
steps:
- name: Checkout repository
id: checkout_repository
uses: actions/checkout@v6
with:
fetch-depth: 0
- name: Trust checked-out Git worktree
id: trust_worktree
shell: bash
run: |
git config --global --add safe.directory "${GITHUB_WORKSPACE}"
git -C "${GITHUB_WORKSPACE}" rev-parse --is-inside-work-tree
- name: Install ROS 2 overlay dependencies
id: install_dependencies
run: |
apt-get update
apt-get install -y --no-install-recommends build-essential cmake git libeigen3-dev python3-colcon-common-extensions ros-dev-tools
- name: Synchronize ROS package metadata
id: sync_metadata
shell: bash
run: |
if [[ -x ./generate_version.sh ]] \
&& grep -q -- "--sync-ros2" ./generate_version.sh \
&& grep -q -- "ROS2_PROJECT_METADATA_SYNC=1" ./generate_version.sh; then
./generate_version.sh --sync-ros2
git diff --exit-code -- ros2/*/package.xml
else
echo "::warning::Skipping ROS package metadata sync; generate_version.sh is missing or predates full project metadata sync."
fi
- name: Resolve ROS 2 package dependencies
id: resolve_dependencies
run: |
rosdep update
rosdep install --from-paths ros2 -i -r -y --rosdistro jazzy
- name: Build and test ROS 2 overlay
id: build_overlay
shell: bash
run: ./build_ros2.sh --clean --no-version-sync