Home

Awesome

andino_integration_tests

Description

This repository contains a set of simple tests that evaluate the Andino robot within a simulation environment. It runs in ROS 2 Humble with Gazebo 11.

Within the andino_tests package you will find a basic ROS 2 Python package with only tests that cover:

These tests are basic, do not offer anything novel, however, they can be used as part of a regression testing pipeline to verify that everything runs smoothly while developing on Andino.

Tests are orchestrated in Github Actions and there are two different ways for them to run:

:raised_hands: Contributing

Issues or PRs are always welcome!

Please refer to CONTRIBUTING doc.

entire_pipeline_ci

Github Hosted Runners

Github offers hosted runners, or those could be provided by one of your preference. Also, there are other services like Gitlab, Jenkins, etc. that offer the same service. The purpose of showing this here is to present how to organize a multi-repository environment, compile the workspace and then run the tests, get the results and flag a PR.

To that end, we are using the base ROS 2 Humble Full Desktop docker image, configuring, installing and building the workspace using ros-ci and ros-action-ci Github Actions, and finally running the tests manually. Unfortunately, it is not possible at the moment to pass in extra environment configurations to ros-action-ci which is required to properly source Gazebo before running the tests.

Results are collected and uploaded as CI artifacts that the developers can use for their own reviews.

Review

This approach has some PROs and CONs:

PROs:

CONs:

Pre-requisites for the GitHub hosted runners.

There are no prerequisites.

Github Hosted Runners and cloud infrastructure powered by AWS

Using the Github hosted runners, we integrate the execution of tests with AWS RoboMaker. The purpose of this integration is to show how to build a complete pipeline that allows scalable testing in the cloud.

The following is the highlevel workflow that the pipeline follows:

aws_pipeline_ci

Pre-requisites for the GitHub hosted runners and AWS RoboMaker workflow.

You must configure the following secrets in your repository to test this method:

Docker images

Both the robot-app and sim-app are docker images. We have defined a specific nomenclature for the tags applied to those images for easy and quick referencing of which code version is under use. It follows: PR-PR_NUM-SHORT_SHA-PR_RUN_NUM, where:

This allows a unique way to indentify they system. Furthermore, the code is built inside the docker image which also comes with vcs repos files with all the dependencies versions.

For audit purposes, developers may re-build in their local environments the image by simply calling the docker scripts. Please revisit the docker documentation to that end. Also, users may opt to download the docker image from the AWS ECR repository. This is up to them to do one or another or a company policy.

Trigger the tests powered by AWS RoboMaker

By means of a set of scripts, we process the ekumen_cloud_robotics_ci/config/test-suite.json file and generate the final batch description. An Python script is executed and the tests are monitored. Once they finish, the results are uploaded as an artifact of the Github Action pipeline.

Process the simulation job results that where powered by AWS RoboMaker

A final step requires to tag the Github Action pipeline based on the results obtained in the previous step.

Review

This approach has some PROs and CONs:

PROs:

CONs:

Workspace

You can follow the instructions to build the required ROS2 workspace in the andino_tests package: andino_tests

CI

You will find more information on how the CI pipeline work in the ekumen_cloud_robotics_ci/README