Skip to content

Commit 2b5711b

Browse files
authored
Include all LTS ROS2 on develop branch (#1151)
This PR expands CI to run builds and tests across all LTS and rolling ROS2 distributions on the develop branch. - Converted Windows and Linux x64 workflows from a single-distro job to a matrix over `humble`, `jazzy`, `kilted`, and `rolling` - Removed the dynamic identify-ros-distro job in favor of the matrix, updating all distro references to use `matrix.ros_distribution` - Added a new Linux ARM64 workflow mirroring the x64 matrix Fix: #1152
1 parent c4dbb8d commit 2b5711b

File tree

4 files changed

+115
-45
lines changed

4 files changed

+115
-45
lines changed
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
name: Linux arm64
2+
3+
on:
4+
push:
5+
branches:
6+
- develop
7+
- kilted
8+
- jazzy
9+
- humble-hawksbill
10+
pull_request:
11+
branches:
12+
- develop
13+
- kilted
14+
- jazzy
15+
- humble-hawksbill
16+
workflow_dispatch:
17+
18+
defaults:
19+
run:
20+
shell: bash
21+
22+
jobs:
23+
build:
24+
runs-on: ubuntu-24.04-arm
25+
container:
26+
image: ${{ matrix.docker_image }}
27+
strategy:
28+
fail-fast: false
29+
matrix:
30+
node-version: [22.X]
31+
architecture: [arm64]
32+
ros_distribution:
33+
- jazzy
34+
- kilted
35+
include:
36+
# Jazzy Jalisco (May 2024 - May 2029)
37+
- docker_image: ubuntu:noble
38+
ros_distribution: jazzy
39+
# Kilted Kaiju (May 2025 - Dec 2026)
40+
- docker_image: ubuntu:noble
41+
ros_distribution: kilted
42+
43+
steps:
44+
- name: Setup Node.js ${{ matrix.node-version }} on ${{ matrix.architecture }}
45+
uses: actions/setup-node@v4
46+
with:
47+
node-version: ${{ matrix.node-version }}
48+
architecture: ${{ matrix.architecture }}
49+
50+
- name: Setup ROS2
51+
uses: ros-tooling/[email protected]
52+
with:
53+
required-ros-distributions: ${{ matrix.ros_distribution }}
54+
55+
- name: Install test-msgs on Linux
56+
run: |
57+
sudo apt install ros-${{ matrix.ros_distribution }}-test-msgs
58+
59+
- uses: actions/checkout@v4
60+
61+
- name: Build and test rclnodejs
62+
run: |
63+
uname -a
64+
source /opt/ros/${{ matrix.ros_distribution }}/setup.bash
65+
npm i
66+
npm run lint
67+
npm test
68+
npm run clean

.github/workflows/linux-build-and-test.yml renamed to .github/workflows/linux-x64-build-and-test.yml

Lines changed: 25 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
name: Linux x64/arm64
1+
name: Linux x64
22

33
on:
44
push:
@@ -20,35 +20,33 @@ defaults:
2020
shell: bash
2121

2222
jobs:
23-
identify-ros-distro:
24-
uses: ./.github/workflows/identify-ros-distro.yml
25-
26-
matrix-prep:
27-
runs-on: ubuntu-latest
28-
outputs:
29-
arm64-matrix: ${{ steps.set-matrix.outputs.arm64-matrix }}
30-
steps:
31-
- id: set-matrix
32-
run: |
33-
if ${{ contains(github.base_ref, 'develop') || contains(github.ref, 'develop') }}; then
34-
echo "arm64-matrix=[{\"architecture\":\"arm64\",\"node-version\":\"22.X\",\"ubuntu-version\":\"24.04-arm\"}]" >> $GITHUB_OUTPUT
35-
else
36-
echo "arm64-matrix=[]" >> $GITHUB_OUTPUT
37-
fi
38-
3923
build:
40-
needs: [identify-ros-distro, matrix-prep]
41-
runs-on: ubuntu-${{ matrix.ubuntu-version }}
24+
runs-on: ubuntu-latest
4225
container:
43-
image: ${{ needs.identify-ros-distro.outputs.linuxos }}
26+
image: ${{ matrix.docker_image }}
4427
strategy:
4528
fail-fast: false
4629
matrix:
47-
node-version: [20.X, 22.X, 24.X]
30+
node-version: [22.X, 24.X]
4831
architecture: [x64]
49-
ubuntu-version: [latest]
50-
# Include arm64 configuration from matrix-prep job
51-
include: ${{ fromJSON(needs.matrix-prep.outputs.arm64-matrix) }}
32+
ros_distribution:
33+
- humble
34+
- jazzy
35+
- kilted
36+
- rolling
37+
include:
38+
# Humble Hawksbill (May 2022 - May 2027)
39+
- docker_image: ubuntu:jammy
40+
ros_distribution: humble
41+
# Jazzy Jalisco (May 2024 - May 2029)
42+
- docker_image: ubuntu:noble
43+
ros_distribution: jazzy
44+
# Kilted Kaiju (May 2025 - Dec 2026)
45+
- docker_image: ubuntu:noble
46+
ros_distribution: kilted
47+
# Rolling Ridley (No End-Of-Life)
48+
- docker_image: ubuntu:noble
49+
ros_distribution: rolling
5250
steps:
5351
- name: Setup Node.js ${{ matrix.node-version }} on ${{ matrix.architecture }}
5452
uses: actions/setup-node@v4
@@ -59,19 +57,18 @@ jobs:
5957
- name: Setup ROS2
6058
uses: ros-tooling/[email protected]
6159
with:
62-
required-ros-distributions: ${{ needs.identify-ros-distro.outputs.distro }}
63-
use-ros2-testing: true
60+
required-ros-distributions: ${{ matrix.ros_distribution }}
6461

6562
- name: Install test-msgs on Linux
6663
run: |
67-
sudo apt install ros-${{ needs.identify-ros-distro.outputs.distro }}-test-msgs
64+
sudo apt install ros-${{ matrix.ros_distribution }}-test-msgs
6865
6966
- uses: actions/checkout@v4
7067

7168
- name: Build and test rclnodejs
7269
run: |
7370
uname -a
74-
source /opt/ros/${{ needs.identify-ros-distro.outputs.distro }}/setup.bash
71+
source /opt/ros/${{ matrix.ros_distribution }}/setup.bash
7572
npm i
7673
npm run lint
7774
npm test

.github/workflows/windows-build-and-test.yml

Lines changed: 19 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -16,16 +16,26 @@ on:
1616
workflow_dispatch:
1717

1818
jobs:
19-
identify-ros-distro:
20-
uses: ./.github/workflows/identify-ros-distro.yml
21-
2219
build:
23-
needs: identify-ros-distro
2420
runs-on: windows-2019
2521
strategy:
2622
fail-fast: false
2723
matrix:
2824
node-version: [22.X]
25+
ros_distribution:
26+
- humble
27+
- jazzy
28+
- kilted
29+
- rolling
30+
include:
31+
# Humble Hawksbill (May 2022 - May 2027)
32+
- ros_distribution: humble
33+
# Jazzy Jalisco (May 2024 - May 2029)
34+
- ros_distribution: jazzy
35+
# Kilted Kaiju (May 2025 - Dec 2026)
36+
- ros_distribution: kilted
37+
# Rolling Ridley (No End-Of-Life)
38+
- ros_distribution: rolling
2939
steps:
3040
- name: Setup Node.js ${{ matrix.node-version }}
3141
uses: actions/setup-node@v4
@@ -35,11 +45,10 @@ jobs:
3545
- name: Setup ROS2
3646
uses: ros-tooling/[email protected]
3747
with:
38-
required-ros-distributions: ${{ needs.identify-ros-distro.outputs.distro }}
39-
use-ros2-testing: true
48+
required-ros-distributions: ${{ matrix.ros_distribution }}
4049

4150
- name: Install ROS2 Rolling (Conditional)
42-
if: ${{ needs.identify-ros-distro.outputs.distro == 'rolling' }}
51+
if: ${{ matrix.ros_distribution == 'rolling' }}
4352
shell: bash
4453
run: |
4554
wget --quiet https://ci.ros2.org/view/packaging/job/packaging_windows/lastSuccessfulBuild/artifact/ws/ros2-package-windows-AMD64.zip -O rolling.zip
@@ -53,14 +62,13 @@ jobs:
5362
- name: Build rclnodejs
5463
shell: cmd
5564
run: |
56-
call "c:\dev\${{ needs.identify-ros-distro.outputs.distro }}\ros2-windows\setup.bat"
65+
call "c:\dev\${{ matrix.ros_distribution }}\ros2-windows\setup.bat"
5766
npm i
5867
5968
# On the windows/foxy combination the Eclipse CycloneDDS RMW implementation is used to workaround
6069
# an error when loading the default fastrtps ddl
6170
- name: Test rclnodejs
6271
shell: cmd
6372
run: |
64-
call "c:\dev\${{ needs.identify-ros-distro.outputs.distro }}\ros2-windows\setup.bat"
65-
cmd /c "if ${{ needs.identify-ros-distro.outputs.distro }}==foxy (set RMW_IMPLEMENTATION=rmw_cyclonedds_cpp&&npm test)"
66-
cmd /c "if NOT ${{ needs.identify-ros-distro.outputs.distro }}==foxy if NOT ${{ needs.identify-ros-distro.outputs.distro }}==rolling if NOT ${{ needs.identify-ros-distro.outputs.distro }}==kilted (npm test)"
73+
call "c:\dev\${{ matrix.ros_distribution }}\ros2-windows\setup.bat"
74+
cmd /c "if NOT ${{ matrix.ros_distribution }}==rolling if NOT ${{ matrix.ros_distribution }}==kilted (npm test)"

README.md

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,9 @@
22

33
[![npm](https://img.shields.io/npm/v/rclnodejs.svg)](https://www.npmjs.com/package/rclnodejs)[![Coverage Status](https://coveralls.io/repos/github/RobotWebTools/rclnodejs/badge.svg?branch=develop)](https://coveralls.io/github/RobotWebTools/rclnodejs?branch=develop)[![npm](https://img.shields.io/npm/dm/rclnodejs)](https://www.npmjs.com/package/rclnodejs)[![GitHub license](https://img.shields.io/github/license/RobotWebTools/rclnodejs.svg)](https://github.com/RobotWebTools/rclnodejs/blob/develop/LICENSE)[![node](https://img.shields.io/node/v/rclnodejs.svg)](https://nodejs.org/en/download/releases/)[![npm type definitions](https://img.shields.io/npm/types/rclnodejs)](https://www.npmjs.com/package/rclnodejs)[![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg?style=flat-square)](https://github.com/prettier/prettier)
44

5-
| **ROS Distro\*** | **Status** |
6-
| :--------------: | :-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: |
7-
| Rolling | [![Linux](https://github.com/RobotWebTools/rclnodejs/actions/workflows/linux-build-and-test.yml/badge.svg?branch=develop)](https://github.com/RobotWebTools/rclnodejs/actions/workflows/linux-build-and-test.yml?query=branch%3Adevelop)<br> [![Windows](https://github.com/RobotWebTools/rclnodejs/actions/workflows/windows-build-and-test.yml/badge.svg?branch=develop)](https://github.com/RobotWebTools/rclnodejs/actions/workflows/windows-build-and-test.yml?query=branch%3Adevelop) |
8-
| Kilted | [![Linux](https://github.com/RobotWebTools/rclnodejs/actions/workflows/linux-build-and-test.yml/badge.svg?branch=kilted)](https://github.com/RobotWebTools/rclnodejs/actions/workflows/linux-build-and-test.yml?query=branch%3Akilted)<br> [![Windows](https://github.com/RobotWebTools/rclnodejs/actions/workflows/windows-build-and-test.yml/badge.svg?branch=kilted)](https://github.com/RobotWebTools/rclnodejs/actions/workflows/windows-build-and-test.yml?query=branch%3Akilted) |
9-
| Jazzy | [![Linux](https://github.com/RobotWebTools/rclnodejs/actions/workflows/linux-build-and-test.yml/badge.svg?branch=jazzy)](https://github.com/RobotWebTools/rclnodejs/actions/workflows/linux-build-and-test.yml?query=branch%3Ajazzy)<br> [![Windows](https://github.com/RobotWebTools/rclnodejs/actions/workflows/windows-build-and-test.yml/badge.svg?branch=jazzy)](https://github.com/RobotWebTools/rclnodejs/actions/workflows/windows-build-and-test.yml?query=branch%3Ajazzy) |
10-
| Humble | [![Linux](https://github.com/RobotWebTools/rclnodejs/actions/workflows/linux-build-and-test.yml/badge.svg?branch=humble-hawksbill)](https://github.com/RobotWebTools/rclnodejs/actions/workflows/linux-build-and-test.yml?query=branch%3Ahumble-hawksbill)<br> [![Windows](https://github.com/RobotWebTools/rclnodejs/actions/workflows/windows-build-and-test.yml/badge.svg?branch=humble-hawksbill)](https://github.com/RobotWebTools/rclnodejs/actions/workflows/windows-build-and-test.yml?query=branch%3Ahumble-hawksbill) |
5+
| **ROS Distro\*** | **Status** |
6+
| :----------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: |
7+
| Rolling<br>Kilted<br>Jazzy<br>Humble | [![Linux](https://github.com/RobotWebTools/rclnodejs/actions/workflows/linux-x64-build-and-test.yml/badge.svg?branch=develop)](https://github.com/RobotWebTools/rclnodejs/actions/workflows/linux-x64-build-and-test.yml?query=branch%3Adevelop)<br> [![Linux](https://github.com/RobotWebTools/rclnodejs/actions/workflows/linux-arm64-build-and-test.yml/badge.svg?branch=develop)](https://github.com/RobotWebTools/rclnodejs/actions/workflows/linux-arm64-build-and-test.yml?query=branch%3Adevelop)<br> [![Windows](https://github.com/RobotWebTools/rclnodejs/actions/workflows/windows-build-and-test.yml/badge.svg?branch=develop)](https://github.com/RobotWebTools/rclnodejs/actions/workflows/windows-build-and-test.yml?query=branch%3Adevelop) |
118

129
\* rclnodejs development and maintenance is limited to the ROS 2 LTS releases and the Rolling development branch
1310

0 commit comments

Comments
 (0)