diff --git a/.github/workflows/linux-arm64-build-and-test.yml b/.github/workflows/linux-arm64-build-and-test.yml
new file mode 100644
index 00000000..dbca41ca
--- /dev/null
+++ b/.github/workflows/linux-arm64-build-and-test.yml
@@ -0,0 +1,68 @@
+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:
+ - jazzy
+ - kilted
+ include:
+ # 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
+
+ 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/setup-ros@v0.7
+ 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
diff --git a/.github/workflows/linux-build-and-test.yml b/.github/workflows/linux-x64-build-and-test.yml
similarity index 53%
rename from .github/workflows/linux-build-and-test.yml
rename to .github/workflows/linux-x64-build-and-test.yml
index 87d1eed9..5889459f 100644
--- a/.github/workflows/linux-build-and-test.yml
+++ b/.github/workflows/linux-x64-build-and-test.yml
@@ -1,4 +1,4 @@
-name: Linux x64/arm64
+name: Linux x64
on:
push:
@@ -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
+ ros_distribution: rolling
steps:
- name: Setup Node.js ${{ matrix.node-version }} on ${{ matrix.architecture }}
uses: actions/setup-node@v4
@@ -59,19 +57,18 @@ jobs:
- name: Setup ROS2
uses: ros-tooling/setup-ros@v0.7
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
diff --git a/.github/workflows/windows-build-and-test.yml b/.github/workflows/windows-build-and-test.yml
index 02ce319f..d8dc2d9f 100644
--- a/.github/workflows/windows-build-and-test.yml
+++ b/.github/workflows/windows-build-and-test.yml
@@ -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
@@ -35,11 +45,10 @@ jobs:
- name: Setup ROS2
uses: ros-tooling/setup-ros@v0.7
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
@@ -53,7 +62,7 @@ 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
@@ -61,6 +70,5 @@ jobs:
- 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)"
diff --git a/README.md b/README.md
index 0476fccf..ed926f3e 100644
--- a/README.md
+++ b/README.md
@@ -2,12 +2,9 @@
[](https://www.npmjs.com/package/rclnodejs)[](https://coveralls.io/github/RobotWebTools/rclnodejs?branch=develop)[](https://www.npmjs.com/package/rclnodejs)[](https://github.com/RobotWebTools/rclnodejs/blob/develop/LICENSE)[](https://nodejs.org/en/download/releases/)[](https://www.npmjs.com/package/rclnodejs)[](https://github.com/prettier/prettier)
-| **ROS Distro\*** | **Status** |
-| :--------------: | :-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: |
-| Rolling | [](https://github.com/RobotWebTools/rclnodejs/actions/workflows/linux-build-and-test.yml?query=branch%3Adevelop)
[](https://github.com/RobotWebTools/rclnodejs/actions/workflows/windows-build-and-test.yml?query=branch%3Adevelop) |
-| Kilted | [](https://github.com/RobotWebTools/rclnodejs/actions/workflows/linux-build-and-test.yml?query=branch%3Akilted)
[](https://github.com/RobotWebTools/rclnodejs/actions/workflows/windows-build-and-test.yml?query=branch%3Akilted) |
-| Jazzy | [](https://github.com/RobotWebTools/rclnodejs/actions/workflows/linux-build-and-test.yml?query=branch%3Ajazzy)
[](https://github.com/RobotWebTools/rclnodejs/actions/workflows/windows-build-and-test.yml?query=branch%3Ajazzy) |
-| Humble | [](https://github.com/RobotWebTools/rclnodejs/actions/workflows/linux-build-and-test.yml?query=branch%3Ahumble-hawksbill)
[](https://github.com/RobotWebTools/rclnodejs/actions/workflows/windows-build-and-test.yml?query=branch%3Ahumble-hawksbill) |
+| **ROS Distro\*** | **Status** |
+| :----------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: |
+| Rolling
Kilted
Jazzy
Humble | [](https://github.com/RobotWebTools/rclnodejs/actions/workflows/linux-x64-build-and-test.yml?query=branch%3Adevelop)
[](https://github.com/RobotWebTools/rclnodejs/actions/workflows/linux-arm64-build-and-test.yml?query=branch%3Adevelop)
[](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