Skip to content

Add GitHub Actions CI and a devcontainer for the ROS 2 branches - #435

Open
ikhann wants to merge 1 commit into
locusrobotics:rollingfrom
ikhann:devops/ros2-ci
Open

Add GitHub Actions CI and a devcontainer for the ROS 2 branches#435
ikhann wants to merge 1 commit into
locusrobotics:rollingfrom
ikhann:devops/ros2-ci

Conversation

@ikhann

@ikhann ikhann commented Aug 16, 2026

Copy link
Copy Markdown

What

Revives #346 (approved in Nov 2023, stalled on a Ceres installation failure) with a modernized workflow:

  • build-and-test: builds and runs colcon test for all packages except fuse_viz (blocked on Qt6,
    Support Qt6 #421) and fuse_doc (rosdoc2 config only), inside the ros:rolling container image. Building in the
    distro container sidesteps the environment problem that stalled Add ROS2 CI #346: the matching Ubuntu base and ROS
    apt sources ship with the image, and rosdep resolves libceres-dev cleanly.
  • benchmarks: builds in Release mode and runs the four google-benchmark suites already in the repo
    (fuse_constraints ×2, fuse_graphs, fuse_models), uploading JSON results as an artifact — so performance
    claims in future PRs have a per-commit baseline.
  • weekly scheduled run: recent breakage arrived from upstream while the repository was quiet
    (Boost 1.86/1.90: fuse_core: Don't fail with boost >= 1.86 #423/Work-around for a bug in Boost 1.90 any_range included in Ubuntu Resolute #424/Fix edge condition on Boost fix versions #425; the rclcpp drift that got fuse dropped from a Rolling sync: Regression on ROS 2 Buildfarm for Rolling #396).
    A cron build surfaces that the week it happens instead of at the next release.
  • devcontainer: the same ros:rolling environment for local development, with rosdep install on
    create — currently a first-time contributor has to construct this by hand.

Side effect: fixes the perpetually failing "Analyze (actions)" check

CodeQL's actions-language analysis currently fails on every pull request ("CodeQL could not process
any code written in GitHub Actions") because these branches contain no workflow files to scan. This PR
gives it something to analyze.

Validation

The exact workflow in this PR ran green on a fork, and the same workflow with only the distro swapped
ran green on the three release branches:

Branch Workflow run build-and-test benchmarks
rolling 31934758634 ✅ 2714 tests, 0 errors, 0 failures ✅ artifact uploaded
jazzy 31936122297 ✅ 2704 tests, 0 errors, 0 failures ✅ artifact uploaded
kilted 31936123749 ✅ 2719 tests, 0 errors, 0 failures ✅ artifact uploaded
lyrical 31936125284 ✅ 2714 tests, 0 errors, 0 failures ✅ artifact uploaded

All steps were additionally validated locally in the ros:<distro> containers, and the workflow files
are actionlint-clean.

Happy to follow up with per-branch PRs for jazzy, kilted, and lyrical so cherry-picks get
validated too — the commits are ready and are what produced the last three rows above.

Revives the CI effort from locusrobotics#346, which was approved but stalled on a
Ceres installation failure in 2023. Building inside the ros:<distro>
container images avoids that class of problem entirely: the matching
Ubuntu base and ROS apt sources come with the image, and rosdep
resolves libceres-dev without additional setup.

The workflow builds and tests every package except fuse_viz (blocked
on Qt6 support, see locusrobotics#421) and fuse_doc (rosdoc2 configuration only).
A weekly scheduled run catches breakage caused by upstream changes
(new Boost, Ceres, or rclcpp releases) even when the repository is
quiet - the failure modes of locusrobotics#396 and locusrobotics#423/locusrobotics#424/locusrobotics#425. A second job
runs the google-benchmark suites in Release mode and uploads the
results as an artifact.

As a side effect this fixes the CodeQL "Analyze (actions)" check that
currently fails on every pull request: the actions language analysis
errors out with "CodeQL could not process any code written in GitHub
Actions" because these branches contain no workflow files to scan.

The devcontainer provides the same ros:rolling environment for local
development, with rosdep dependency installation on create.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

1 participant