Skip to content
Merged
Show file tree
Hide file tree
Changes from 10 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
75 changes: 75 additions & 0 deletions .github/workflows/linux-arm64-build-and-test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
name: Linux arm64

on:
push:
branches:
- develop
- kilted
- jazzy
- humble-hawksbill
pull_request:
branches:
- develop
- kilted
- jazzy
- humble-hawksbill
workflow_dispatch:

defaults:
run:
shell: bash

jobs:
build:
runs-on: ubuntu-24.04-arm
container:
image: ${{ matrix.docker_image }}
strategy:
fail-fast: false
matrix:
node-version: [22.X]
architecture: [arm64]
ros_distribution:
- humble
- jazzy
- kilted
- rolling
include:
# Humble Hawksbill (May 2022 - May 2027)
- docker_image: ubuntu:jammy
ros_distribution: humble
# Jazzy Jalisco (May 2024 - May 2029)
- docker_image: ubuntu:noble
ros_distribution: jazzy
# Kilted Kaiju (May 2025 - Dec 2026)
- docker_image: ubuntu:noble
ros_distribution: kilted
# Rolling Ridley (No End-Of-Life)
- docker_image: ubuntu:noble
Copy link

Copilot AI May 26, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The Docker image tag ubuntu:noble is invalid and will break the ARM64 workflow. Replace it with a valid Ubuntu tag like ubuntu:22.04 (jammy) to match the Humble setup.

Suggested change
- docker_image: ubuntu:noble
ros_distribution: jazzy
# Kilted Kaiju (May 2025 - Dec 2026)
- docker_image: ubuntu:noble
ros_distribution: kilted
# Rolling Ridley (No End-Of-Life)
- docker_image: ubuntu:noble
- docker_image: ubuntu:22.04
ros_distribution: jazzy
# Kilted Kaiju (May 2025 - Dec 2026)
- docker_image: ubuntu:22.04
ros_distribution: kilted
# Rolling Ridley (No End-Of-Life)
- docker_image: ubuntu:22.04

Copilot uses AI. Check for mistakes.
ros_distribution: rolling
steps:
- name: Setup Node.js ${{ matrix.node-version }} on ${{ matrix.architecture }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
architecture: ${{ matrix.architecture }}

- name: Setup ROS2
uses: ros-tooling/[email protected]
with:
required-ros-distributions: ${{ matrix.ros_distribution }}

- name: Install test-msgs on Linux
run: |
sudo apt install ros-${{ matrix.ros_distribution }}-test-msgs
- uses: actions/checkout@v4

- name: Build and test rclnodejs
run: |
uname -a
source /opt/ros/${{ matrix.ros_distribution }}/setup.bash
npm i
npm run lint
npm test
npm run clean
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: Linux x64/arm64
name: Linux x64

on:
push:
Expand All @@ -20,35 +20,33 @@ defaults:
shell: bash

jobs:
identify-ros-distro:
uses: ./.github/workflows/identify-ros-distro.yml

matrix-prep:
runs-on: ubuntu-latest
outputs:
arm64-matrix: ${{ steps.set-matrix.outputs.arm64-matrix }}
steps:
- id: set-matrix
run: |
if ${{ contains(github.base_ref, 'develop') || contains(github.ref, 'develop') }}; then
echo "arm64-matrix=[{\"architecture\":\"arm64\",\"node-version\":\"22.X\",\"ubuntu-version\":\"24.04-arm\"}]" >> $GITHUB_OUTPUT
else
echo "arm64-matrix=[]" >> $GITHUB_OUTPUT
fi

build:
needs: [identify-ros-distro, matrix-prep]
runs-on: ubuntu-${{ matrix.ubuntu-version }}
runs-on: ubuntu-latest
container:
image: ${{ needs.identify-ros-distro.outputs.linuxos }}
image: ${{ matrix.docker_image }}
strategy:
fail-fast: false
matrix:
node-version: [20.X, 22.X, 24.X]
node-version: [22.X, 24.X]
architecture: [x64]
ubuntu-version: [latest]
# Include arm64 configuration from matrix-prep job
include: ${{ fromJSON(needs.matrix-prep.outputs.arm64-matrix) }}
ros_distribution:
- humble
- jazzy
- kilted
- rolling
include:
# Humble Hawksbill (May 2022 - May 2027)
- docker_image: ubuntu:jammy
ros_distribution: humble
# Jazzy Jalisco (May 2024 - May 2029)
- docker_image: ubuntu:noble
ros_distribution: jazzy
# Kilted Kaiju (May 2025 - Dec 2026)
- docker_image: ubuntu:noble
ros_distribution: kilted
# Rolling Ridley (No End-Of-Life)
- docker_image: ubuntu:noble
Comment on lines +42 to +48
Copy link

Copilot AI May 26, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The Docker image tag ubuntu:noble is not a valid Ubuntu release; this will cause the container step to fail. Use a supported tag such as ubuntu:20.04 or ubuntu:22.04 (e.g., ubuntu:jammy).

Suggested change
- docker_image: ubuntu:noble
ros_distribution: jazzy
# Kilted Kaiju (May 2025 - Dec 2026)
- docker_image: ubuntu:noble
ros_distribution: kilted
# Rolling Ridley (No End-Of-Life)
- docker_image: ubuntu:noble
- docker_image: ubuntu:jammy
ros_distribution: jazzy
# Kilted Kaiju (May 2025 - Dec 2026)
- docker_image: ubuntu:jammy
ros_distribution: kilted
# Rolling Ridley (No End-Of-Life)
- docker_image: ubuntu:jammy

Copilot uses AI. Check for mistakes.
ros_distribution: rolling
Copy link

Copilot AI May 26, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[nitpick] The include blocks for different distributions are duplicated almost identically across both x64 and ARM64 workflows. Consider extracting this into a reusable workflow or template to reduce duplication and ease future updates.

Suggested change
include:
# Humble Hawksbill (May 2022 - May 2027)
- docker_image: ubuntu:jammy
ros_distribution: humble
# Jazzy Jalisco (May 2024 - May 2029)
- docker_image: ubuntu:noble
ros_distribution: jazzy
# Kilted Kaiju (May 2025 - Dec 2026)
- docker_image: ubuntu:noble
ros_distribution: kilted
# Rolling Ridley (No End-Of-Life)
- docker_image: ubuntu:noble
ros_distribution: rolling
include: ${{ fromJson(needs.shared-matrix.outputs.matrix) }}

Copilot uses AI. Check for mistakes.
steps:
- name: Setup Node.js ${{ matrix.node-version }} on ${{ matrix.architecture }}
uses: actions/setup-node@v4
Expand All @@ -59,19 +57,18 @@ jobs:
- name: Setup ROS2
uses: ros-tooling/[email protected]
with:
required-ros-distributions: ${{ needs.identify-ros-distro.outputs.distro }}
use-ros2-testing: true
required-ros-distributions: ${{ matrix.ros_distribution }}

- name: Install test-msgs on Linux
run: |
sudo apt install ros-${{ needs.identify-ros-distro.outputs.distro }}-test-msgs
sudo apt install ros-${{ matrix.ros_distribution }}-test-msgs

- uses: actions/checkout@v4

- name: Build and test rclnodejs
run: |
uname -a
source /opt/ros/${{ needs.identify-ros-distro.outputs.distro }}/setup.bash
source /opt/ros/${{ matrix.ros_distribution }}/setup.bash
npm i
npm run lint
npm test
Expand Down
30 changes: 19 additions & 11 deletions .github/workflows/windows-build-and-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,16 +16,26 @@ on:
workflow_dispatch:

jobs:
identify-ros-distro:
uses: ./.github/workflows/identify-ros-distro.yml

build:
needs: identify-ros-distro
runs-on: windows-2019
strategy:
fail-fast: false
matrix:
node-version: [22.X]
ros_distribution:
- humble
- jazzy
- kilted
- rolling
include:
# Humble Hawksbill (May 2022 - May 2027)
- ros_distribution: humble
# Jazzy Jalisco (May 2024 - May 2029)
- ros_distribution: jazzy
# Kilted Kaiju (May 2025 - Dec 2026)
- ros_distribution: kilted
# Rolling Ridley (No End-Of-Life)
- ros_distribution: rolling
steps:
- name: Setup Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4
Expand All @@ -35,11 +45,10 @@ jobs:
- name: Setup ROS2
uses: ros-tooling/[email protected]
with:
required-ros-distributions: ${{ needs.identify-ros-distro.outputs.distro }}
use-ros2-testing: true
required-ros-distributions: ${{ matrix.ros_distribution }}

- name: Install ROS2 Rolling (Conditional)
if: ${{ needs.identify-ros-distro.outputs.distro == 'rolling' }}
if: ${{ matrix.ros_distribution == 'rolling' }}
shell: bash
run: |
wget --quiet https://ci.ros2.org/view/packaging/job/packaging_windows/lastSuccessfulBuild/artifact/ws/ros2-package-windows-AMD64.zip -O rolling.zip
Expand All @@ -53,14 +62,13 @@ jobs:
- name: Build rclnodejs
shell: cmd
run: |
call "c:\dev\${{ needs.identify-ros-distro.outputs.distro }}\ros2-windows\setup.bat"
call "c:\dev\${{ matrix.ros_distribution }}\ros2-windows\setup.bat"
npm i

# On the windows/foxy combination the Eclipse CycloneDDS RMW implementation is used to workaround
# an error when loading the default fastrtps ddl
- name: Test rclnodejs
shell: cmd
run: |
call "c:\dev\${{ needs.identify-ros-distro.outputs.distro }}\ros2-windows\setup.bat"
cmd /c "if ${{ needs.identify-ros-distro.outputs.distro }}==foxy (set RMW_IMPLEMENTATION=rmw_cyclonedds_cpp&&npm test)"
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)"
call "c:\dev\${{ matrix.ros_distribution }}\ros2-windows\setup.bat"
cmd /c "if NOT ${{ matrix.ros_distribution }}==rolling if NOT ${{ matrix.ros_distribution }}==kilted (npm test)"
9 changes: 3 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,9 @@

[![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)

| **ROS Distro\*** | **Status** |
| :--------------: | :-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: |
| 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) |
| 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) |
| 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) |
| 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) |
| **ROS Distro\*** | **Status** |
| :----------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: |
| 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) |

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

Expand Down
Loading