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.
In your main workflow file, to test all packages in your workspace sequentially in a container, you can use the following job definition:
jobs:
integration-test-in-studio-container:
uses: PickNikRobotics/moveit_pro_ci/.github/workflows/workspace_integration_test.yaml@<version-chosen>
with:
image_tag: ${{ github.event_name == 'pull_request' && github.event.pull_request.base.ref || github.ref_name }}
colcon_test_args: "--executor sequential"
secrets: inheritTo 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:
jobs:
integration-test-in-studio-container:
uses: PickNikRobotics/moveit_pro_ci/.github/workflows/workspace_integration_test.yaml@<version-chosen>
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: inheritAll 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 below), so the image actually pulled ispicknikciuser/moveit-studio:<image_tag>-<ros_distro>.- 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.
- Note: we recommend creating branch names that match the MoveIt Pro container image tags, such as
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 thecolcon buildcommand. Default:"".colcon_test_args: Additional colcon arguments to pass to thecolcon testcommand. 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<option timestep>to this value (in seconds) on every top-level<mujoco>scene file undersrc/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: Iftrue, 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), andCMAKE_{C,CXX}_COMPILER_LAUNCHERis set toccachefor the build step. Default:false.
Required secrets:
moveit_license_key: The MoveIt Pro license key. Passingsecrets: inherit(as in the examples above) is the easiest way to forward it from the calling workflow.
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:<image_tag>-<ros_distro>. 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.
Composite action that lists the calling repository's branches and outputs the highest v<major>.<minor> 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.
- name: Get current release branch
id: get_current_release_branch
uses: PickNikRobotics/moveit_pro_ci/.github/actions/find_release_branch@<commit-sha>
- name: Use it
run: echo "Release branch is ${{ steps.get_current_release_branch.outputs.branch }}"Pin by commit SHA for reproducibility.