Skip to content

update CI

update CI #54

Workflow file for this run

name: Tests
on:
push:
branches:
- main
pull_request:
branches:
- main
schedule:
- cron: "0 7 * * 0"
env:
ROBOTPKG_URL: "http://robotpkg.openrobots.org/packages/debian"
ROS: "humble"
UBUNTU: "jammy"
jobs:
test:
name: "Test ${{ matrix.pm }} on ${{ matrix.os }} ${{ matrix.arch }}"
runs-on: "${{ matrix.os }}-latest"
strategy:
fail-fast: false
matrix:
pm: ["pip", "conda", "nix"]
os: ["ubuntu", "macos", "windows"]
arch: ["main"]
exclude:
- pm: "pip"
os: "windows"
- pm: "nix"
os: "windows"
include:
- pm: "robotpkg"
os: "ubuntu"
- pm: "ros"
os: "ubuntu"
- pm: "brew"
os: "macos"
- arch: "aarch64"
os: "ubuntu"
pm: "pip"
- arch: "aarch64"
os: "ubuntu"
pm: "nix"
steps:
- uses: actions/checkout@v3
# aarch64
- name: Set up QEMU
if: matrix.arch == 'aarch64'
uses: docker/setup-qemu-action@v3
with:
platforms: all
# brew
- if: matrix.pm == 'brew'
uses: Homebrew/actions/setup-homebrew@master
- if: matrix.pm == 'brew'
run: brew install pinocchio
- if: matrix.pm == 'brew'
run: echo "PATH=/opt/homebrew/opt/python@3/libexec/bin:$PATH" >> $GITHUB_ENV
# conda
- if: matrix.pm == 'conda'
uses: conda-incubator/setup-miniconda@v3
- if: matrix.pm == 'conda'
run: conda install -n test -c conda-forge cmake cxx-compiler eigen eigenpy libboost-devel libboost-python-devel pinocchio
- if: matrix.pm == 'conda'
run: echo "CMAKE_PREFIX_PATH=$CONDA/envs/test" >> $GITHUB_ENV
# nix
- if: matrix.pm == 'nix'
uses: cachix/install-nix-action@v30
- if: matrix.pm == 'nix'
uses: cachix/cachix-action@v15
with:
name: gepetto
authToken: '${{ secrets.CACHIX_AUTH_TOKEN }}'
- if: matrix.pm == 'nix'
run: >
nix shell 'nixpkgs#python3Packages.pinocchio' -c
nix develop 'nixpkgs#python3Packages.pinocchio' -c
env | grep .=. >> $GITHUB_ENV
# pip
- if: matrix.pm == 'pip'
uses: actions/setup-python@v4 # required only because macos-latest still has python 2 by default…
with:
python-version: "3.13"
- 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
# windows
# thx https://gist.github.com/justinian/81a2e55c89e8301a8a96 & https://stackoverflow.com/a/74547513/1368502
- if: matrix.os == 'windows'
run: >
cmd /c '"%programfiles%\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" amd64 && set'
| Select-String -Pattern "^(.*?)=(.*)$"
| Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
- run: cmake -B build -S .
- run: cmake --build build
- if: matrix.os != 'windows'
run: ./build/main
- if: matrix.os == 'windows'
run: .\build\Debug\main.exe
# 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