GitHub Actions for building and testing ROS packages using the exact same pipeline as the ROS buildfarm.
Designed for these use cases:
- Validate that builds will succeed when packages are released into a ROS distribution
- Enable native packaging for creation of custom/private distributions outside the centralized ROS system
| Action | Purpose |
|---|---|
setup |
Install ros_buildfarm |
ci |
Build and test using the prerelease pipeline (no rosdistro needed) |
Installs ros_buildfarm and its dependencies.
Mainly used automatically by the other actions as an initial step.
Use directly if you need to run buildfarm scripts yourself.
- uses: ros-tooling/action-ros-buildfarm/setup@main| Input | Required | Default | Description |
|---|---|---|---|
ros_buildfarm_ref |
no | Git ref to install from GitHub instead of PyPI |
Runs your ROS packages through the same Docker + rosdep + colcon pipeline the buildfarm uses.
Because it uses the prerelease job approach, your package does not need to be registered in any rosdistro.
- uses: ros-tooling/action-ros-buildfarm/ci@main
with:
ros_distro: rolling
os_code_name: nobleBy default, the contents of github.workspace are copied into the build workspace and built.
You can also specify additional repos via custom_repos or underlay_repos.
| Input | Required | Default | Description |
|---|---|---|---|
ros_distro |
yes | ROS distribution (e.g. rolling, humble) |
|
os_code_name |
yes | OS version (e.g. noble, jammy) |
|
config_url |
no | official ROS 2 config | Buildfarm config index URL |
config_name |
no | default |
Config name within the index |
os_name |
no | ubuntu |
OS name |
arch |
no | amd64 |
Target architecture |
source_dir |
no | github.workspace |
Directory of package source to build. Set to '' to skip. |
underlay_repos |
no | Space-separated repo names from rosdistro to include | |
custom_repos |
no | Newline-separated name:type:url:branch for repos not in rosdistro |
|
abort_on_test_failure |
no | false |
Fail the job if tests fail |
upload_test_results |
no | true |
Upload JUnit XML results as an artifact |
| Output | Description |
|---|---|
underlay_test_result |
Exit code of the test suite |
install_dir |
Path to the built install space (use as underlay for downstream) |
If you maintain your own rosdistro and buildfarm config, set config_url to
your own index:
- uses: ros-tooling/action-ros-buildfarm/ci@main
with:
config_url: https://raw.githubusercontent.com/myorg/my_buildfarm_config/main/index.yaml
ros_distro: my_distro
os_code_name: nobleFormatting and linting standards are maintained via pre-commit hooks, configured in .pre-commit-config.yaml.
To have them run locally on commit, install once in the local checkout:
pre-commit install