An open API service indexing awesome lists of open source software.

https://github.com/picknikrobotics/moveit_pro_ci


https://github.com/picknikrobotics/moveit_pro_ci

Last synced: 23 days ago
JSON representation

Awesome Lists containing this project

README

          

# MoveIt Pro Reusable CI Jobs
This repo showcases an example of integrating end-to-end CI jobs for MoveIt Pro applications, including workspace objective validation and intergration tests with the MoveIt Pro Runtime.

## Usage
In your main workflow file, to test all packages in your workspace **sequentially** in a container, you can use the following job definition:
```yaml
jobs:
integration-test-in-studio-container:
uses: PickNikRobotics/moveit_pro_ci/.github/workflows/workspace_integration_test.yaml@
with:
image_tag: ${{ github.event_name == 'pull_request' && github.event.pull_request.base.ref || github.ref_name }}
colcon_test_args: "--executor sequential"
secrets: inherit
```
To test packages in your workspace **in parallel** in a container, you can utilize a matrix with the `config_package` input like in the following job definition:
```yaml
jobs:
integration-test-in-studio-container:
uses: PickNikRobotics/moveit_pro_ci/.github/workflows/workspace_integration_test.yaml@
strategy:
fail-fast: false
matrix:
config_package: [lab_sim, hangar_sim, grinding_sim, factory_sim, space_satellite_sim, mock_sim]
with:
image_tag: ${{ github.event_name == 'pull_request' && github.event.pull_request.base.ref || github.ref_name }}
colcon_test_args: "--executor sequential"
config_package: ${{ matrix.config_package }}
secrets: inherit
```

All input args:
- `image_tag`: The tag of the MoveIt Pro container image to use for the job. This can be set to the branch name or a specific tag version (example: 8.1.0). The ROS distro is automatically appended to this tag (see [Supported ROS Distributions](#supported-ros-distributions) below), so the image actually pulled is `picknikciuser/moveit-studio:-`.
- Note: we recommend creating branch names that match the MoveIt Pro container image tags, such as `8.1.0`, `8.2.0`, etc for your versioned out production robot applications.
- `config_package`: The name of the MoveIt Pro config package to test. This is only required when using a matrix to run tests in parallel. Default: `""` (build/test all packages).
- `colcon_build_args`: Additional colcon arguments to pass to the `colcon build` command. Default: `""`.
- `colcon_test_args`: Additional colcon arguments to pass to the `colcon test` command. Default: `""`.
- `runner`: A runner to be passed and run the integration tests. Default: `studio_16_core_runner`.
- `mujoco_ci_timestep`: If non-empty, set the MuJoCo `` to this value (in seconds) on every top-level `` scene file under `src/` before build. Used to keep the simulator at-or-under realtime on slower CI runners; leave empty for normal runs. Suggested: `"0.004"` (250 Hz). Default: `""`.
- `use_ccache`: If `true`, use ccache to speed up the colcon build. The ccache directory is restored from and saved to the GitHub Actions cache (keyed by image tag, ROS distro, and config package), and `CMAKE_{C,CXX}_COMPILER_LAUNCHER` is set to `ccache` for the build step. Default: `false`.
- `enable_gpu`: If `true`, pass `--gpus all` to the studio container so workloads inside it can access NVIDIA hardware (CUDA inference, GPU-accelerated simulation, etc.). The caller is responsible for routing the job to a GPU-equipped runner; setting `enable_gpu: true` on a runner with no GPU exposed will fail at container start with `could not select device driver "" with capabilities: [[gpu]]`. Default: `false`.

Required secrets:
- `moveit_license_key`: The MoveIt Pro license key. Passing `secrets: inherit` (as in the examples above) is the easiest way to forward it from the calling workflow.

## Supported ROS Distributions

The reusable workflow runs each job once per supported ROS distro via a matrix. Currently supported:

- **Humble** (`humble`)
- **Jazzy** (`jazzy`)

For each distro, the workflow pulls `picknikciuser/moveit-studio:-`. MoveIt Pro began supporting ROS Jazzy in 9.2.0. Jobs for each distro run in parallel and are reported as separate matrix entries in the GitHub Actions UI.

## Reusable Actions

### `find_release_branch`
Composite action that lists the calling repository's branches and outputs the highest `v.` branch name (e.g. `v9.5`). Used by the `batch-merge-release-branch` workflows across MoveIt Pro repos to pick the active release branch to merge into `main`.
```yaml
- name: Get current release branch
id: get_current_release_branch
uses: PickNikRobotics/moveit_pro_ci/.github/actions/find_release_branch@
- name: Use it
run: echo "Release branch is ${{ steps.get_current_release_branch.outputs.branch }}"
```
Pin by commit SHA for reproducibility.