Skip to content

Pixi CI Workflow

Pixi CI Workflow #195

Workflow file for this run

name: Pixi CI Workflow
on:
# on demand
workflow_dispatch:
inputs:
delete_pixi_lock:
description: 'If true, delete pixi.lock, to test against the latest version of dependencies.'
required: true
default: 'false'
pull_request:
schedule:
# * is a special character in YAML so you have to quote this string
# Execute a "nightly" build twice a week 2 AM UTC
- cron: '0 2 * * 2,5'
jobs:
build-with-pixi:
name: '[pixi:${{ matrix.os }}@task:${{ matrix.pixi_task }}]'
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
build_type: [Release]
os: [ubuntu-22.04, macos-13, macos-14, windows-2019]
pixi_task: [build-all, build-ros2, build-ros2moveit]
exclude:
# ros is not supported on osx-arm64 (incompatibility with gz-sim8)
- os: macos-14
pixi_task: build-ros2
# We already test linux-64 and ros2 in build-all-ros2moveit
- os: ubuntu-22.04
pixi_task: build-ros2
# Windows build fail due to length of build folder
# See https://github.com/robotology/robotology-superbuild/pull/1746#issuecomment-2514352629
- os: windows-2019
pixi_task: build-ros2
# moveit is only supported on Linux for now (missing required package in robostack)
- os: macos-13
pixi_task: build-ros2moveit
- os: macos-14
pixi_task: build-ros2moveit
- os: windows-2019
pixi_task: build-ros2moveit
steps:
- uses: actions/checkout@v4
# On periodic jobs and when delete_pixi_lock option is true, delete the pixi.lock to check that the project compiles with latest version of dependencies
- name: Delete pixi.lock on scheduled jobs or if delete_pixi_lock is true
if: github.event_name == 'schedule' || (github.event_name == 'workflow_dispatch' && github.event.inputs.delete_pixi_lock == 'true')
shell: bash
run: |
rm pixi.lock
- name: Print used environment
shell: bash
run: |
env
- uses: prefix-dev/setup-pixi@v0.8.1
- name: Workaround on Windows
if: contains(matrix.os, 'windows')
shell: bash
run: |
# Avoid YCM complaining that the git user is not set
# Eventually we could consider removing that check in YCM
git config --global user.name PixiGHA User
git config --global user.email pixighauser@example.com
# On Windows the setup.bat generated by the pixi run configure
# needs to be called before calling pixi run build-all, so
# we explicitly call pixi run configure-all
pixi run configure-all
# Workaround for build-ros2 builds
pixi run configure-ros2
- name: Build
shell: bash
run: |
# Avoid YCM complaining that the git user is not set
# Eventually we could consider removing that check in YCM
git config --global user.name PixiGHA User
git config --global user.email pixighauser@example.com
pixi run ${{ matrix.pixi_task }}