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_WORKSPACE—Extra deps to clone and build before target
TARGET_WORKSPACErepo rootSource 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_CHECKfalsePython 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.