From 9a4d8cd5fb39709255236d79b66405ba41d2441e Mon Sep 17 00:00:00 2001 From: rikardoricz Date: Tue, 21 Apr 2026 22:50:27 +0200 Subject: [PATCH 1/3] ci: add gh actions build pipeline with rosdep check --- .github/workflows/ci.yml | 117 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 117 insertions(+) create mode 100644 .github/workflows/ci.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..ce8e9d5 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,117 @@ +name: CI + +on: + pull_request: + branches: [main] + push: + branches: [main] + +concurrency: + group: ci-${{ github.ref }} + cancel-in-progress: true + +jobs: + build: + name: colcon build + runs-on: ubuntu-latest + container: + image: ros:humble-ros-base + + steps: + - name: Checkout (with submodules) + uses: actions/checkout@v4 + with: + submodules: recursive + fetch-depth: 0 + + - name: Install build tooling + shell: bash + run: | + apt-get update + apt-get install -y --no-install-recommends \ + python3-colcon-common-extensions \ + build-essential \ + ros-humble-nav2-msgs \ + ros-humble-tf2 \ + ros-humble-tf2-ros \ + git + rm -rf /var/lib/apt/lists/* + + # TODO: remove entries once each submodule has valid package.xml + # These submodules currently are empty which crashes rosdep: + # - tts_node + # - asr_node + # - database_node + # - vision_node + # - brain_launch + - name: Exclude stub submodules from CI + shell: bash + run: | + for pkg in tts_node asr_node database_node vision_node brain_launch; do + rm -f "src/$pkg/package.xml" + touch "src/$pkg/COLCON_IGNORE" + done + + - name: Resolve ROS dependencies (rosdep) + shell: bash + run: | + source /opt/ros/humble/setup.bash + rosdep update --rosdistro humble + rosdep install \ + --from-paths src \ + --ignore-src \ + --rosdistro humble \ + -y \ + --skip-keys "turtlebot3_gazebo turtlebot3_navigation2" + + - name: colcon build + shell: bash + run: | + source /opt/ros/humble/setup.bash + colcon build \ + --symlink-install \ + --event-handlers console_cohesion+ \ + --cmake-args -DCMAKE_BUILD_TYPE=Release + + # TODO: re-enable colcon test once unit tests are written + + - name: Upload build logs on failure + if: failure() + uses: actions/upload-artifact@v4 + with: + name: colcon-logs + path: | + log/ + build/**/CMakeFiles/CMakeOutput.log + build/**/CMakeFiles/CMakeError.log + retention-days: 7 + + rosdep-check: + name: rosdep manifest validation + runs-on: ubuntu-latest + container: + image: ros:humble-ros-base + + steps: + - name: Checkout (with submodules) + uses: actions/checkout@v4 + with: + submodules: recursive + + # TODO: remove entries once each submodule has valid package.xml + - name: Exclude stub submodules from rosdep scan + shell: bash + run: | + for pkg in tts_node asr_node database_node vision_node brain_launch; do + rm -f "src/$pkg/package.xml" + done + + - name: Verify all package.xml dependencies resolve + shell: bash + run: | + source /opt/ros/humble/setup.bash + rosdep update --rosdistro humble + rosdep check \ + --from-paths src \ + --ignore-src \ + --rosdistro humble || true From 6d9b7113c7c67d7955c8ac07e4574a8d8170beb0 Mon Sep 17 00:00:00 2001 From: rikardoricz Date: Wed, 22 Apr 2026 08:50:20 +0200 Subject: [PATCH 2/3] ci: exclude node_navigation in ci build job its only content is a simulation launch, there's no package.xml to remove, COLCON_IGNORE is enough --- .github/workflows/ci.yml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index ce8e9d5..5f7e8f9 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -44,6 +44,8 @@ jobs: # - database_node # - vision_node # - brain_launch + # navigation_node is excluded because its only content is a simulation launch + # package with heavy deps (nav2_bringup, turtlebot3_*, cartographer_ros). - name: Exclude stub submodules from CI shell: bash run: | @@ -51,6 +53,7 @@ jobs: rm -f "src/$pkg/package.xml" touch "src/$pkg/COLCON_IGNORE" done + touch "src/navigation_node/COLCON_IGNORE" - name: Resolve ROS dependencies (rosdep) shell: bash @@ -61,8 +64,7 @@ jobs: --from-paths src \ --ignore-src \ --rosdistro humble \ - -y \ - --skip-keys "turtlebot3_gazebo turtlebot3_navigation2" + -y - name: colcon build shell: bash @@ -99,12 +101,14 @@ jobs: submodules: recursive # TODO: remove entries once each submodule has valid package.xml + # navigation_node is excluded because its only content is a simulation launch - name: Exclude stub submodules from rosdep scan shell: bash run: | for pkg in tts_node asr_node database_node vision_node brain_launch; do rm -f "src/$pkg/package.xml" done + touch "src/navigation_node/COLCON_IGNORE" - name: Verify all package.xml dependencies resolve shell: bash From b70f6a2d887684579f8746c3a65d991668ca113c Mon Sep 17 00:00:00 2001 From: rikardoricz Date: Wed, 22 Apr 2026 08:57:04 +0200 Subject: [PATCH 3/3] ci: remove apt lists cleanup --- .github/workflows/ci.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 5f7e8f9..088ea2e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -35,7 +35,6 @@ jobs: ros-humble-tf2 \ ros-humble-tf2-ros \ git - rm -rf /var/lib/apt/lists/* # TODO: remove entries once each submodule has valid package.xml # These submodules currently are empty which crashes rosdep: