Build optional ROS 2 overlay #34
This file contains hidden or 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: 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 |