Skip to content

Add support for ROS 2 Kilted Kaiju #108

Add support for ROS 2 Kilted Kaiju

Add support for ROS 2 Kilted Kaiju #108

Workflow file for this run

name: test
on:
workflow_dispatch:
pull_request:
branches: [main, release/*]
jobs:
ubuntu:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
ros_distribution:
- foxy
- humble
- iron
- jazzy
- kilted
include:
- ros_distribution: foxy
docker_image: ros:foxy-ros-base
- ros_distribution: humble
docker_image: ros:humble-ros-base
- ros_distribution: iron
docker_image: ros:iron-ros-base
- ros_distribution: jazzy
docker_image: ros:jazzy-ros-base
- ros_distribution: kilted
docker_image: ros:kilted-ros-base
container:
image: ${{ matrix.docker_image }}
steps:
- uses: actions/checkout@v3
with:
submodules: true
- name: Install additional ROS dependencies
run: |
. /opt/ros/${{ matrix.ros_distribution }}/setup.sh
# ros:foxy-ros-base is no longer being updated due to EOL of foxy.
# We have to pull the new GPG key for ROS package repository manually.
apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 4B63CF8FDE49746E98FA01DDAD19BAB3CBF125EA
apt update
apt install -y curl
rosdep update --include-eol-distros
rosdep install -i -y --from-paths src/Rcl.NET.Tests
- name: Setup .NET 8.0
uses: actions/setup-dotnet@v3
with:
dotnet-version: 8.0.x
- name: Setup .NET 9.0
uses: actions/setup-dotnet@v3
with:
dotnet-version: 9.0.x
- name: Setup .NET 10.0
uses: actions/setup-dotnet@v3
with:
dotnet-version: 10.0.x
- name: Build
working-directory: src/Rcl.NET.Tests
run: |
dotnet nuget locals all --clear
dotnet build -c Release
- name: Test (fastrtps)
working-directory: src/Rcl.NET.Tests
env:
RMW_IMPLEMENTATION: rmw_fastrtps_cpp
ROS_LOCALHOST_ONLY: 0
run: |
. /opt/ros/${{ matrix.ros_distribution }}/setup.sh && \
dotnet test -c Release -p:BuildInParallel=false --no-build --verbosity normal --blame-crash-dump-type mini --blame-hang-dump-type none --blame-hang-timeout 1m
- name: Test (cyclonedds)
working-directory: src/Rcl.NET.Tests
env:
RMW_IMPLEMENTATION: rmw_cyclonedds_cpp
ROS_LOCALHOST_ONLY: 0
run: |
. /opt/ros/${{ matrix.ros_distribution }}/setup.sh && \
dotnet test -c Release -p:BuildInParallel=false --no-build --verbosity normal --blame-crash-dump-type mini --blame-hang-dump-type none --blame-hang-timeout 1m
windows:
runs-on: windows-latest
strategy:
fail-fast: false
matrix:
ros_distribution:
- foxy
- humble
- iron
- jazzy
- kilted
include:
- ros_distribution: kilted
ros_archive: https://github.com/ros2/ros2/releases/download/release-kilted-20250728/ros2-kilted-20250728-windows-release-amd64.zip
is_legacy_distro: false
- ros_distribution: jazzy
ros_archive: https://github.com/ros2/ros2/releases/download/release-jazzy-20250820/ros2-jazzy-20250820-windows-release-amd64.zip
is_legacy_distro: false
- ros_distribution: iron
ros_archive: https://github.com/ros2/ros2/releases/download/release-iron-20241204/ros2-iron-20241204-windows-release-amd64.zip
is_legacy_distro: true
- ros_distribution: humble
ros_archive: https://github.com/ros2/ros2/releases/download/release-humble-20241205/ros2-humble-20241205-windows-release-amd64.zip
is_legacy_distro: true
- ros_distribution: foxy
ros_archive: https://github.com/ros2/ros2/releases/download/release-foxy-20230620/ros2-foxy-20230620-windows-release-amd64.zip
is_legacy_distro: true
steps:
- uses: actions/checkout@v3
with:
submodules: true
- name: Restore cached ROS installation
id: ros-cache
uses: actions/cache@v3
with:
path: c:/dev/${{ matrix.ros_distribution }}/
key: ${{ matrix.ros_archive }}
- name: Download and install ROS
if: ${{ steps.ros-cache.outputs.cache-hit != 'true' }}
run: |
Invoke-WebRequest -Uri ${{ matrix.ros_archive }} -OutFile ros2-release.zip
Expand-Archive -Path ros2-release.zip c:/dev/${{ matrix.ros_distribution }}
- name: Install dependencies (Legacy)
if: ${{ matrix.is_legacy_distro }}
run: |
reg add HKCU\SOFTWARE\Kitware\CMake /f
Invoke-WebRequest -Uri https://github.com/ros2/choco-packages/releases/download/2022-03-15/tinyxml2.6.0.0.nupkg -OutFile tinyxml2.6.0.0.nupkg
choco install --limit-output --no-progress -y -s . tinyxml2
choco install --limit-output --no-progress -y openssl --version 1.1.1.2100
- name: Install Pixi
if: ${{ !matrix.is_legacy_distro }}
run: |
Set-ExecutionPolicy ByPass
irm -useb https://pixi.sh/install.ps1 | iex
- name: Restore cached Pixi dependencies
if: ${{ !matrix.is_legacy_distro }}
id: pixi-cache
uses: actions/cache@v3
with:
path: c:/dev/pixi/
key: pixi-${{ matrix.ros_distribution }}
- name: Install dependencies
if: ${{ !matrix.is_legacy_distro }}
run: |
mkdir c:/dev/pixi/
cd c:/dev/pixi/
irm https://raw.githubusercontent.com/ros2/ros2/refs/heads/${{ matrix.ros_distribution }}/pixi.toml -OutFile pixi.toml
$env:Path = [System.Environment]::GetEnvironmentVariable("Path","Machine") + ";" + [System.Environment]::GetEnvironmentVariable("Path","User")
pixi install
- name: Setup .NET 8.0
uses: actions/setup-dotnet@v3
with:
dotnet-version: 8.0.x
- name: Setup .NET 9.0
uses: actions/setup-dotnet@v3
with:
dotnet-version: 9.0.x
- name: Setup .NET 10.0
uses: actions/setup-dotnet@v3
with:
dotnet-version: 10.0.x
- name: Build
working-directory: src/Rcl.NET.Tests
run: |
dotnet nuget locals all --clear
dotnet build -c Release
- name: Test (fastrtps) (Legacy)
if: ${{ matrix.is_legacy_distro }}
shell: cmd
working-directory: src/Rcl.NET.Tests
env:
RMW_IMPLEMENTATION: rmw_fastrtps_cpp
ROS_LOCALHOST_ONLY: 0
run: |
refreshenv && ^
call c:/dev/${{ matrix.ros_distribution }}/ros2-windows/setup.bat && ^
dotnet test -c Release -p:BuildInParallel=false --no-build --verbosity normal --blame-crash-dump-type mini --blame-hang-dump-type none --blame-hang-timeout 1m
- name: Test (cyclonedds) (Legacy)
if: ${{ matrix.is_legacy_distro }}
shell: cmd
working-directory: src/Rcl.NET.Tests
env:
RMW_IMPLEMENTATION: rmw_cyclonedds_cpp
ROS_LOCALHOST_ONLY: 0
run: |
refreshenv && ^
call c:/dev/${{ matrix.ros_distribution }}/ros2-windows/setup.bat && ^
dotnet test -c Release -p:BuildInParallel=false --no-build --verbosity normal --blame-crash-dump-type mini --blame-hang-dump-type none --blame-hang-timeout 1m
- name: Test (fastrtps)
if: ${{ !matrix.is_legacy_distro }}
shell: cmd
working-directory: src/Rcl.NET.Tests
env:
RMW_IMPLEMENTATION: rmw_fastrtps_cpp
ROS_LOCALHOST_ONLY: 0
run: |
refreshenv && ^
pixi run --manifest-path "c:/dev/pixi/" ^
cmd /c "call c:/dev/${{ matrix.ros_distribution }}/ros2-windows/setup.bat && dotnet test -c Release -p:BuildInParallel=false --no-build --verbosity normal --blame-crash-dump-type mini --blame-hang-dump-type none --blame-hang-timeout 1m"
- name: Test (cyclonedds)
if: ${{ !matrix.is_legacy_distro }}
shell: cmd
working-directory: src/Rcl.NET.Tests
env:
RMW_IMPLEMENTATION: rmw_cyclonedds_cpp
ROS_LOCALHOST_ONLY: 0
run: |
refreshenv && ^
pixi run --manifest-path "c:/dev/pixi/" ^
cmd /c "call c:/dev/${{ matrix.ros_distribution }}/ros2-windows/setup.bat && dotnet test -c Release -p:BuildInParallel=false --no-build --verbosity normal --blame-crash-dump-type mini --blame-hang-dump-type none --blame-hang-timeout 1m"
#test_macos:
# runs-on: macos-latest
# strategy:
# matrix:
# ros_distribution:
# - foxy
# - humble
# steps:
# - uses: actions/checkout@v2
# - name: Setup ROS environment
# uses: ros-tooling/setup-ros@v0.6
# with:
# required-ros-distributions: ${{ matrix.ros_distribution }}
# - name: Install additional ROS dependencies
# run: |
# . /opt/ros/${{ matrix.ros_distribution }}/setup.sh
# rosdep update
# rosdep install -i -y --from-paths src/Rcl.NET.Tests
# - name: Setup .NET 7.0
# uses: actions/setup-dotnet@v1
# with:
# dotnet-version: 7.0.x
# - name: Build
# working-directory: src/Rcl.NET.Tests
# run: |
# dotnet nuget locals all --clear
# dotnet build -c Release
# - name: Test (fastrtps)
# working-directory: src/Rcl.NET.Tests
# env:
# RMW_IMPLEMENTATION: rmw_fastrtps_cpp
# run: |
# . /opt/ros/${{ matrix.ros_distribution }}/setup.sh
# dotnet test -c Release --no-build --verbosity normal -p:ParallelizeTestCollections=false
# - name: Test (cyclonedds)
# working-directory: src/Rcl.NET.Tests
# env:
# RMW_IMPLEMENTATION: rmw_cyclonedds_cpp
# run: |
# . /opt/ros/${{ matrix.ros_distribution }}/setup.sh
# dotnet test -c Release --no-build --verbosity normal -p:ParallelizeTestCollections=false