Skip to content

Tests

Tests #183

Workflow file for this run

name: Tests
on:
push:
branches:
- main
pull_request:
branches:
- main
schedule:
- cron: "0 7 * * 0"
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
env:
ROBOTPKG_URL: "http://robotpkg.openrobots.org/packages/debian"
ROS: "jazzy"
UBUNTU: "noble"
jobs:
test:
name: "Test ${{ matrix.pm }} on ${{ matrix.os }}"
runs-on: "${{ matrix.os }}"
strategy:
fail-fast: false
matrix:
pm: ["pip", "conda", "nix"]
os: ["ubuntu-24.04", "ubuntu-24.04-arm", "macos-15-intel", "macos-15", "windows-latest"]
exclude:
- pm: "pip"
os: "windows-latest"
- pm: "nix"
os: "windows-latest"
include:
- pm: "robotpkg"
os: "ubuntu-24.04"
- pm: "ros"
os: "ubuntu-24.04"
- pm: "brew"
os: "macos-15"
steps:
- uses: actions/checkout@v5
# brew
- if: matrix.pm == 'brew'
uses: Homebrew/actions/setup-homebrew@master
- if: matrix.pm == 'brew'
run: brew install pinocchio
# conda
- if: matrix.pm == 'conda'
uses: conda-incubator/setup-miniconda@v3
with:
miniforge-version: latest
activate-environment: pinocchio
environment-file: .github/workflows/conda/environment.yml
auto-activate-base: false
auto-update-conda: true
conda-remove-defaults: true
# nix
- if: matrix.pm == 'nix'
uses: cachix/install-nix-action@v31
- if: matrix.pm == 'nix'
run: >
nix shell 'nixpkgs#python3Packages.pinocchio' -c
nix develop 'nixpkgs#python3Packages.pinocchio' -c
env | grep .=. >> $GITHUB_ENV
- if: matrix.pm == 'nix'
run: echo "CMAKE_PREFIX_PATH=${NIXPKGS_CMAKE_PREFIX_PATH}" >> $GITHUB_ENV
# pip
- if: matrix.pm == 'pip'
uses: actions/setup-python@v6
with:
python-version: "3.14"
- if: matrix.pm == 'pip'
run: pip install pin[build]
- if: matrix.pm == 'pip'
run: echo "CMAKE_PREFIX_PATH=$(cmeel cmake)" >> $GITHUB_ENV
# robotpkg
- if: matrix.pm == 'robotpkg'
run: sudo wget "${ROBOTPKG_URL}/robotpkg.gpg" -O /robotpkg.gpg
- if: matrix.pm == 'robotpkg'
run: >
echo "deb [arch=amd64 signed-by=/robotpkg.gpg] ${ROBOTPKG_URL}/pub ${UBUNTU} robotpkg"
| sudo tee /etc/apt/sources.list.d/robotpkg.list
- if: matrix.pm == 'robotpkg'
run: sudo apt-get update && sudo apt-get install -qy robotpkg-py3*-pinocchio
- if: matrix.pm == 'robotpkg'
run: echo "CMAKE_PREFIX_PATH=/opt/openrobots" >> $GITHUB_ENV
# ros
- if: matrix.pm == 'ros'
run: sudo wget "https://raw.githubusercontent.com/ros/rosdistro/master/ros.key" -O /ros.key
- if: matrix.pm == 'ros'
run: >
echo "deb [arch=amd64 signed-by=/ros.key] http://packages.ros.org/ros2/ubuntu ${UBUNTU} main"
| sudo tee /etc/apt/sources.list.d/ros.list
- if: matrix.pm == 'ros'
run: sudo apt-get update && sudo apt-get install -qy "ros-${ROS}-pinocchio"
- if: matrix.pm == 'ros'
run: echo "CMAKE_PREFIX_PATH=/opt/ros/${ROS}" >> $GITHUB_ENV
- name: Configure and build [MacOS/Ubuntu]
shell: bash -el {0}
if: contains(matrix.os, 'macos') || contains(matrix.os, 'ubuntu')
run: |
cmake -B build \
-DCMAKE_BUILD_TYPE=Release \
-GNinja \
-DPYTHON_EXECUTABLE=$(which python3)
cmake --build build
./build/main
- name: Configure and build [Windows]
shell: cmd /C CALL {0}
if: contains(matrix.os, 'windows')
run: |
cmake -B build -DCMAKE_BUILD_TYPE=Release -GNinja
cmake --build build
build\main
docker:
runs-on: "ubuntu-latest"
container: "ghcr.io/stack-of-tasks/pinocchio:devel" # todo: latest ?
steps:
- uses: actions/checkout@v5
- run: cmake -B build -DCMAKE_BUILD_TYPE=Release
- run: cmake --build build
- run: ./build/main
# TODO: way too long
#test-arch:
#runs-on: "ubuntu-latest"
#container: ${{ matrix.container }}
#strategy:
#fail-fast: false
#matrix:
#container: ["archlinux/archlinux:base-devel"]
#env:
#MAKEFLAGS: -j4
#steps:
#- uses: actions/checkout@v3
## install paru
#- run: pacman -Syu --noconfirm git
#- run: useradd -mG wheel user
#- run: echo "%wheel ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
#- run: git clone https://aur.archlinux.org/paru-bin.git
#- run: chown -R user paru-bin
#- run: su user -c "makepkg -D paru-bin -si --noconfirm"
## use paru to install pinocchio and its dependencies from AUR
#- run: su user -c "paru -Syu --noconfirm pinocchio"
#- run: cmake -B build -S .
#- run: cmake --build build
#- run: ./build/main