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.
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).
For more information, see action.yml and the GitHub Actions guide.
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/checkout@v2.3.4
- name: Building and testing
uses: ichiro-its/ros2-ci@v1.0.0
This will be defaulted to use ROS 2 Foxy Fitzroy.
- name: Building and testing
uses: ichiro-its/ros2-ci@v1.0.0
with:
ros2-distro: rolling
- name: Building and testing
uses: ichiro-its/ros2-ci@v1.0.0
with:
apt-packages: libssh-dev libopencv-dev
- name: Building and testing
uses: ichiro-its/ros2-ci@v1.0.0
with:
post-test: ls .ws
- name: Building and testing
uses: ichiro-its/ros2-ci@v1.0.0
with:
ros2-distro: foxy
external-repos: https://github.com/ros2/example_interfaces#foxy ros2/examples#foxy
This project is maintained by ICHIRO ITS and licensed under the MIT License.