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

VariableDefaultPurpose
ROS_DISTROrequiredROS distribution (e.g., humble, jazzy)
ROS_REPOtestingPackage repository source (ros, main, building)
BUILDERcolcon (ROS2)Build tool (colcon, catkin_tools, catkin_make)
UPSTREAM_WORKSPACEExtra deps to clone and build before target
TARGET_WORKSPACErepo rootSource location for the package under test
DOWNSTREAM_WORKSPACEPackages to test against your changes
DOCKER_IMAGECustom Docker image to run CI in
CLANG_FORMAT_CHECKEnforce clang-format style
CLANG_TIDYRun static analysis (true or pedantic)
PYLINT_CHECKfalsePython linting
BLACK_CHECKPython format validation
ABICHECK_URLBinary compatibility check against baseline
CCACHE_DIRCompiler cache dir to speed up rebuilds
ADDITIONAL_DEBSExtra 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.