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 @@ [![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)
[![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)
[![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)
[![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)
[![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
Kilted
Jazzy
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)
[![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)
[![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