Giter Club home page Giter Club logo

ros2-ci's Introduction

ROS 2 Continuous Integration

latest version commits since latest version license test status

This action could be used as a continuous integration (CI) to build and test a ROS 2 project.

Warn! this action is no longer in development and will be discontinued. Further development of build and test action for a ROS 2 project will be continued on ROS 2 Build and Test Action.

How It Works?

This action works by building and testing a ROS 2 project inside a Docker's container using the official ROS 2 Docker image. To handle which ROS 2 environment to be used, this action uses a Docker in Docker (DinD). Hence the CI process happens inside the container's container, not just the first layer of the Docker's container for GitHub Actions. Although, The CI process is guaranteed to be fast (approximately 3-5 minutes, depends on each package) as almost every component of the ROS 2 has already been installed inside the Docker's image.

To be able to build and test the project inside the repository, This action requires the Checkout action. Before the build process, the project files will be put under the /ws/repo directory inside the container. Then, the build and test process will be done using colcon inside the /ws directory. After the test process happens, the build results (build, install, and log) will be copied inside the /ws/repo/.ws.

The drawback of using this action is it still needs to install external dependencies that haven't been included in the ROS 2 default installation. But that problem could be solved by adding a apt-packages or a pip-packages input inside the action configuration (see this) or by cloning external packages inside the /ws directory before the build process happens (see this).

Usage

For more information, see action.yml and the GitHub Actions guide.

Default Usage

name: Build and Test
on:
  pull_request:
    branches: [ main ]
  push:
    branches: [ main ]
jobs:
  build-and-test:
    runs-on: ubuntu-latest
    steps:
      - name: Checking out
        uses: actions/[email protected]
      - name: Building and testing
        uses: ichiro-its/[email protected]

This will be defaulted to use ROS 2 Foxy Fitzroy.

Using Different ROS 2 Distributin

- name: Building and testing
  uses: ichiro-its/[email protected]
  with:
    ros2-distro: rolling

Install Several Dependencies

- name: Building and testing
  uses: ichiro-its/[email protected]
  with:
    apt-packages: libssh-dev libopencv-dev

Run Command During the Process

- name: Building and testing
  uses: ichiro-its/[email protected]
  with:
    post-test: ls .ws

Include External Repositories

- name: Building and testing
  uses: ichiro-its/[email protected]
  with:
    ros2-distro: foxy
    external-repos: https://github.com/ros2/example_interfaces#foxy ros2/examples#foxy

License

This action is licensed under the MIT License. This project is originally created by ICHIRO ITS, and maintained continuously by OUXT Polaris.

ros2-ci's People

Contributors

threeal avatar hakuturu583 avatar segara2410 avatar kazuki0824 avatar maroqijalil avatar ichiro-its-admin avatar nathan24zz avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.