A GitHub Action for automatically building and packaging ROS 2 packages into Debian packages using bloom.
IMPORTANT This action does not support End of Life ROS distributions.
- Automatically discovers and builds all ROS 2 packages in your repository
- Filter packages using whitelist/blacklist regex patterns
- Supports ROS 2 (Humble, Jazzy, Kilted, Rolling)
- Outputs ready-to-deploy .deb files
name: Build ROS Packages
on:
push:
branches: [ main ]
jobs:
build:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
- uses: watonomous/bloom-release-ros@v0.1.0
with:
ros_distro: 'humble'
debian_distro: 'jammy'
packages_dir: '.' # Optional: directory to search for packages
package_whitelist: '.*' # Optional: regex to whitelist packages
package_blacklist: '' # Optional: regex to blacklist packages
artifact_name: '' # Optional: name of artifacts producedArtifacts are automatically uploaded as bloom-debian-packages-{distro}-{job}-{run_id} and can be downloaded from the Actions tab.
| Input | Description | Required | Default |
|---|---|---|---|
ros_distro |
ROS 2 distribution (humble, jazzy, kilted, rolling) | Yes | - |
debian_distro |
Debian/Ubuntu distribution (jammy, noble) | Yes | - |
packages_dir |
Directory to search for ROS packages | No | . |
package_whitelist |
Regex to whitelist package names | No | .* |
package_blacklist |
Regex to blacklist package names | No | '' |
artifact_name |
Custom artifact name (avoids conflicts in parallel jobs) | No | bloom-debian-packages-{distro}-{job}-{run_id} |
# Build only packages starting with "myproject_"
package_whitelist: '^myproject_.*'
# Exclude test packages
package_blacklist: '.*_test$'
# Combine filters
package_whitelist: '^myproject_.*'
package_blacklist: '.*_(test|sim)$'- Searches for all
package.xmlfiles inpackages_dir - Filters packages using whitelist/blacklist patterns
- Builds all packages together in a workspace using colcon (handles inter-package dependencies)
- For each package: runs bloom-generate and builds .deb
- Collects all .deb files into output directory
- Must checkout repository with
actions/checkout@v4first - Each package needs valid
package.xml - Dependencies should be available via apt or rosdep
Bloom generation fails: Ensure package.xml has all required fields (name, version, description, maintainer, license)
Build dependencies not found: Ensure all dependencies are properly declared in package.xml and available via rosdep
Apache 2.0 License - see LICENSE