Add pixi support #2432
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CI - Linux via APT | |
on: | |
push: | |
paths-ignore: | |
- doc/** | |
- .gitlab-ci.yml | |
- .gitignore | |
- '*.md' | |
- CITATION.* | |
- COPYING.LESSER | |
- colcon.pkg | |
- .pre-commit-config.yaml | |
- CHANGELOG.md | |
pull_request: | |
paths-ignore: | |
- doc/** | |
- .gitlab-ci.yml | |
- .gitignore | |
- '*.md' | |
- CITATION.* | |
- COPYING.LESSER | |
- colcon.pkg | |
- .pre-commit-config.yaml | |
- CHANGELOG.md | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
jobs: | |
build: | |
runs-on: ubuntu-latest | |
container: ${{ matrix.container }} | |
strategy: | |
matrix: | |
container: ['ubuntu:20.04', 'ubuntu:22.04', 'ubuntu:24.04'] | |
env: | |
CCACHE_BASEDIR: ${GITHUB_WORKSPACE} | |
CCACHE_DIR: ${GITHUB_WORKSPACE}/.ccache | |
CCACHE_COMPRESS: true | |
CCACHE_COMPRESSLEVEL: 5 | |
steps: | |
- name: Setup Container | |
run: | | |
apt update && DEBIAN_FRONTEND="noninteractive" apt install -y sudo lsb-release gnupg2 cmake git python3 | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
submodules: recursive | |
- name: Setup ccache | |
uses: actions/cache@v4 | |
with: | |
path: .ccache | |
save-always: true | |
key: ccache-linux-${{ matrix.container }}-${{ github.sha }} | |
restore-keys: ccache-linux-${{ matrix.container }}- | |
# extract branch name | |
- name: Get branch name (merge) | |
if: github.event_name != 'pull_request' | |
shell: bash | |
run: echo "BRANCH_NAME=$(echo ${GITHUB_REF#refs/heads/})" >> $GITHUB_ENV | |
# extract branch name on pull request | |
- name: Get branch name (pull request) | |
if: github.event_name == 'pull_request' | |
shell: bash | |
run: echo "BRANCH_NAME=$(echo ${GITHUB_HEAD_REF})" >> $GITHUB_ENV | |
# print branch name | |
- name: Debug | |
run: echo ${{ env.BRANCH_NAME }} | |
- name: Register robotpkg | |
run: | | |
sh -c "echo \"deb [arch=amd64] http://robotpkg.openrobots.org/packages/debian/pub $(lsb_release -cs) robotpkg\" >> /etc/apt/sources.list " | |
apt-key adv --fetch-keys http://robotpkg.openrobots.org/packages/debian/robotpkg.key | |
- name: Set and install dependencies | |
run: | | |
rm -rf /usr/local/share/boost/1.69.0 | |
export PYTHON3_VERSION=$(python3 -c "import sys; print(str(sys.version_info.major)+str(sys.version_info.minor))") | |
export APT_DEPENDENCIES="doxygen \ | |
ccache \ | |
curl \ | |
cppcheck \ | |
libomp-dev \ | |
libomp5 \ | |
libboost-system-dev \ | |
libboost-test-dev \ | |
libboost-filesystem-dev \ | |
libboost-program-options-dev \ | |
libeigen3-dev \ | |
liburdfdom-dev \ | |
texlive-font-utils \ | |
libboost-python-dev \ | |
python3-numpy \ | |
python3-matplotlib \ | |
robotpkg-py${PYTHON3_VERSION}-eigenpy \ | |
robotpkg-py${PYTHON3_VERSION}-hpp-fcl \ | |
robotpkg-py${PYTHON3_VERSION}-casadi" | |
echo $APT_DEPENDENCIES | |
apt-get update -qq | |
DEBIAN_FRONTEND="noninteractive" apt-get install -qq ${APT_DEPENDENCIES} | |
- name: Free disk space | |
run: | | |
apt clean | |
df -h | |
- name: Run cmake | |
run: | | |
# Add cloned repo to safe.directory, since it was not cloned by the container | |
git config --global --add safe.directory "$GITHUB_WORKSPACE" | |
git submodule update --init | |
export PATH=$PATH:/opt/openrobots/bin | |
export PYTHON3_DOT_VERSION=$(python3 -c "import sys; print(str(sys.version_info.major)+'.'+str(sys.version_info.minor))") | |
export PYTHONPATH=${PYTHONPATH}:/opt/openrobots/lib/python$PYTHON3_DOT_VERSION/site-packages | |
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/openrobots/lib:/usr/local/lib:/usr/lib:/usr/lib/x86_64-linux-gnu | |
mkdir build | |
cd build | |
cmake .. \ | |
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \ | |
-DCMAKE_BUILD_TYPE=Debug \ | |
-DBUILD_WITH_COLLISION_SUPPORT=ON \ | |
-DBUILD_ADVANCED_TESTING=OFF \ | |
-DBUILD_WITH_CASADI_SUPPORT=ON \ | |
-DPYTHON_EXECUTABLE=$(which python3) \ | |
-DBUILD_WITH_OPENMP_SUPPORT=ON \ | |
-DINSTALL_DOCUMENTATION=ON \ | |
-DCMAKE_TOOLCHAIN_FILE=${GITHUB_WORKSPACE}/.github/workflows/cmake/linux-debug-toolchain.cmake | |
make -j2 | |
make -j2 build_tests | |
export CTEST_OUTPUT_ON_FAILURE=1 | |
make test | |
sudo make install | |
- name: Test packaging | |
run: | | |
export PATH=$PATH:/opt/openrobots/bin | |
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/opt/openrobots/lib/pkgconfig | |
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/openrobots/lib:/usr/local/lib:/usr/lib:/usr/lib/x86_64-linux-gnu | |
cd ./unittest/packaging/cmake | |
mkdir build | |
cd build | |
export CMAKE_PREFIX_PATH=/usr/local | |
# Test CMake module packaging | |
cmake .. \ | |
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \ | |
-DPYTHON_EXECUTABLE=$(which python3) | |
make -j2 | |
./run_rnea | |
./load_urdf | |
# Test pkg-config packaging | |
cd ../../pkgconfig | |
mkdir build | |
cd build | |
cmake .. \ | |
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \ | |
-DPYTHON_EXECUTABLE=$(which python3) | |
make -j2 | |
./run_rnea | |
./load_urdf | |
# Test FetchContent packaging | |
cd ../../external | |
export PINOCCHIO_GIT_REPOSITORY="file://"$GITHUB_WORKSPACE | |
#export PINOCCHIO_GIT_REPOSITORY=$(git remote get-url origin) | |
export PINOCCHIO_GIT_TAG="test-external-"$(git rev-parse --short HEAD) | |
git tag $PINOCCHIO_GIT_TAG | |
mkdir build | |
cd build | |
cmake .. \ | |
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \ | |
-DPYTHON_EXECUTABLE=$(which python3) | |
make -j2 | |
./run_rnea | |
./load_urdf | |
# Test CMake module packaging and pinocchio_header target | |
cd ../../pinocchio_header | |
mkdir build | |
cd build | |
cmake .. \ | |
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \ | |
-DPYTHON_EXECUTABLE=$(which python3) | |
make -j2 | |
./run_fk | |
- name: Uninstall project | |
run: | | |
cd build | |
sudo make uninstall | |
check: | |
if: always() | |
name: check-linux-apt | |
needs: | |
- build | |
runs-on: Ubuntu-latest | |
steps: | |
- name: Decide whether the needed jobs succeeded or failed | |
uses: re-actors/alls-green@release/v1 | |
with: | |
jobs: ${{ toJSON(needs) }} |