ros-industrial/industrial_ci
Easy continuous integration repository for ROS repositories.
What It Does
industrial_ci provides reusable CI scripts that any ROS or ROS2 package can adopt via a single uses: line (GitHub Actions) or a git clone (Travis/GitLab). It runs inside Docker, builds your workspace with colcon (ROS2) or catkin_tools (ROS1), executes all unit and integration tests, and optionally runs static analysis and prerelease tests.
Supported CI Platforms
- GitHub Actions
- GitLab CI
- Bitbucket Pipelines
- Travis CI
- Google Cloud Build
Key Environment Variables
| Variable | Default | Purpose |
|---|---|---|
ROS_DISTRO | required | ROS distribution (e.g., humble, jazzy) |
ROS_REPO | testing | Package repository source (ros, main, building) |
BUILDER | colcon (ROS2) | Build tool (colcon, catkin_tools, catkin_make) |
UPSTREAM_WORKSPACE | — | Extra deps to clone and build before target |
TARGET_WORKSPACE | repo root | Source location for the package under test |
DOWNSTREAM_WORKSPACE | — | Packages to test against your changes |
DOCKER_IMAGE | — | Custom Docker image to run CI in |
CLANG_FORMAT_CHECK | — | Enforce clang-format style |
CLANG_TIDY | — | Run static analysis (true or pedantic) |
PYLINT_CHECK | false | Python linting |
BLACK_CHECK | — | Python format validation |
ABICHECK_URL | — | Binary compatibility check against baseline |
CCACHE_DIR | — | Compiler cache dir to speed up rebuilds |
ADDITIONAL_DEBS | — | Extra apt packages to install |
BEFORE_* / AFTER_* | — | Hook scripts at pipeline stages |
Minimal GitHub Actions Example
name: industrial_ci
on: [push, pull_request]
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
env:
- ROS_DISTRO: humble
- ROS_DISTRO: jazzy
steps:
- uses: actions/checkout@v4
- uses: ros-industrial/industrial_ci@master
env: ${{ matrix.env }}Supported ROS2 Distributions
Humble, Jazzy, Kilted (active). Earlier distributions (Foxy, Galactic, etc.) are EOL but still in history.