Easy continuous integration repository for ROS repositories
.. image:: https://travis-ci.com/ipa320/industrial_ci_mirror.svg?branch=mirror-master :target: https://travis-ci.com/ipa320/industrial_ci_mirror/branches :alt: Travis CI status .. image:: https://github.com/ros-industrial/industrial_ci/workflows/CI/badge.svg?branch=master :target: https://github.com/ros-industrial/industrial_ci/actions :alt: GitHub Actions status .. image:: https://gitlab.com/ipa-mdl/industrial_ci/badges/master/pipeline.svg :target: https://gitlab.com/ipa-mdl/industrial_ci/commits/master :alt: Gitlab CI status .. image:: https://img.shields.io/badge/License-Apache%202.0-blue.svg :target: https://opensource.org/licenses/Apache-2.0 :alt: License
CI (Continuous Integration) configuration for ROS
(Robot Operating System <http://ros.org>
).
This is the refactored version with ROS2 support, the old version can be found in the legacy branch <https://github.com/ros-industrial/industrial_ci/tree/legacy>
.
Please check the migration guide <doc/migration_guide.md>
__ as well.
.. contents:: Table of Contents :depth: 2
Other than the brief introduction in this page, you can also check the detailed doc here <./doc/index.rst>
__.
This package contains CI (Continuous Integration) <https://en.wikipedia.org/wiki/Continuous_integration>
__ scripts that any ROS-powered packages can commonly use.
Some notable feature:
ROS Prerelease Test <http://wiki.ros.org/bloom/Tutorials/PrereleaseTest>
__ can optionally be run.Bitbucket CI
, Gitlab CI
, GitHub Actions
and Travis CI
only, but it can be easily adapted for other CI services.For a brief overall introduction, you could also check a presentation:
ROS-Industrial community meeting <http://rosindustrial.org/news/2016/6/14/ros-i-community-web-meeting-june-2016>
__With a few steps, you can start in your client repository using CI confiurations stored in industrial_ci
.
Activate CI for your github repository on Travis CI <https://travis-ci.com/>
__).
a) You may do so either at https://travis-ci.com/github/YOUR_GITHUB_ORGANIZATION or at https://travis-ci.com/github/YOUR_GITHUB_USER (depending on where your repository sits). b) Activate CI beta for your bitbucket repository is similar, but the target link that your status badge directs to needs to be modified from https://travis-ci.com/USERNAME/REPO_NAME to https://travis-ci.com/bitbucket/USERNAME/REPO_NAME. By default, the generated link directs to a github repository.
Add .travis.yml
file to your repository root (complete template <https://github.com/ros-industrial/industrial_ci/blob/master/doc/.travis.yml>
__):
::
language: generic services: - docker
env: matrix: - ROS_DISTRO="indigo"
install: - git clone --quiet --depth 1 https://github.com/ros-industrial/industrial_ci.git .industrial_ci -b master script: - .industrial_ci/travis.sh
.industrial_ci
is NO longer REQUIRED for the cloned folder starting version 0.3.2; you can pick any name (recommended practice to keep the folder hidden (by prepending ".").Enable CI for your repo. Please refer to official doc <https://docs.gitlab.com/ee/ci/quick_start/>
__ for the steps to do so. Note for Gitlab CI, necessary steps might be different between hosted version (i.e. the one on gitlab.com) v.s. the one on your own server, which Gitlab doesn't always clarify in its documentation.
install <https://docs.gitlab.com/runner/install/index.html>
__ and register <https://docs.gitlab.com/runner/register/index.html>
__ such a runner with your Gitlab instance if you haven't done so yet.In .gitlab-ci.yml
file in your client repo, add the following minimal configuration (this snippet can be the entire content of the file), replacing indigo for your chosen distro:
::
image: docker:git services: - docker:dind before_script: - apk add --update bash coreutils tar - git clone --quiet --depth 1 https://github.com/ros-industrial/industrial_ci .industrial_ci -b master indigo: script: .industrial_ci/gitlab.sh ROS_DISTRO=indigo
official doc <https://confluence.atlassian.com/bitbucket/get-started-with-bitbucket-pipelines-792298921.html>
__ for the steps to do so.bitbucket-pipelines.yml
file in your client repo, add the following minimal configuration (this snippet can be the entire content of the file), replacing indigo for your chosen distro:::
image: docker:git
pipelines: default: - step: services: - docker script: - apk add --update bash coreutils tar - git clone --quiet --depth 1 https://github.com/ros-industrial/industrial_ci .industrial_ci -b master - .industrial_ci/bitbucket.sh ROS_DISTRO=indigo
definitions: services: docker: memory: 2048
.github/workflows/industrial_ci_action.yml
(industrial_ci_action.yml is arbitrary, complete template <doc/industrial_ci_action.yml>
__) with the following configuration, (this snippet can be the entire content of the file), replacing melodic for your chosen distro:::
name: CI
on: [push, pull_request]
jobs: industrial_ci: strategy: matrix: env: - {ROS_DISTRO: melodic, ROS_REPO: testing} - {ROS_DISTRO: melodic, ROS_REPO: main} runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - uses: 'ros-industrial/industrial_ci@master' env: ${{matrix.env}}
official documentation <https://cloud.google.com/build/docs/automating-builds/create-manage-triggers#gcloud>
__ for the steps to do so.cloudbuild.yaml
file in your client repo, add the following minimal configuration::
steps: - name: 'ros:melodic' entrypoint: 'bash' args: - '-c' - |- git clone --depth 1 https://github.com/ros-industrial/industrial_ci .industrial_ci -b master .industrial_ci/ci.sh env: - 'ISOLATION=shell' - 'CI=true'
template for Travis CI <doc/.travis.yml>
__.ros_canopen <https://github.com/ros-industrial/ros_canopen/blob/0a42bf181804167834b8dc3b80bfca971f24546f/.travis.yml>
__example 1 <https://github.com/ros-industrial/industrial_core/blob/eeb6a470e05233d0efaaf8c32a9e4133cdcbb80b/.travis.yml>
__ (Indigo and Jade compatible).example 2 <https://github.com/ros-drivers/leap_motion/blob/954924befd2a6755f9d310f4a8b57aa526056a80/.travis.yml>
__ (Indigo, Jade, Kinetic compatible. Also runs ROS Prerelease Test <http://wiki.ros.org/bloom/Tutorials/PrereleaseTest>
__).industrial_core <https://github.com/ros-industrial/industrial_core/blob/a07f9089b0f6c8a931bab80b7fca959dd6bba05b/.travis.yml>
__.travis.yml <https://github.com/ros-industrial/industrial_ci/blob/d09b8dd40d7f1fa1ad5b62323a1d6b2ca836e558/.travis.yml>
__ from the same repo. You can see how options are used.sample config <./.gitlab-ci.yml>
__.There might not an easy way to precisely count how many repositories out there are using industrial_ci
. Counting that number isn't even our priority at all, but we're often simply curious. Here's some ways that give us some clues for the usage metrics:
Searching Github repos that contain string industrial_ci <https://github.com/search?p=1&q=industrial_ci+-repo%3Aros-industrial%2Findustrial_ci&ref=searchresults&type=Code&utf8=%E2%9C%93>
__) (with some duplicates. Excluding industrial_ci repo):
Github--> Graphs
--> Traffic
view (visible only to admins).
.. figure:: http://ros-industrial.github.io/industrial_ci/images/industrial_ci_traffic_20181230.png
.. figure:: http://ros-industrial.github.io/industrial_ci/images/industrial_ci_20180515_traffic.png
.. figure:: http://ros-industrial.github.io/industrial_ci/images/industrial_ci_traffic_20171212.png
.. figure:: http://ros-industrial.github.io/industrial_ci/images/industrial_ci_traffic_20170120.png
EoF