using docker container #3
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: Build and Test RAPTOR | |
on: | |
push: | |
branches: | |
- unit_test_dev | |
paths-ignore: | |
# Compiled Object files and Libraries | |
- '*.d' | |
- '*.slo' | |
- '*.lo' | |
- '*.o' | |
- '*.obj' | |
- '*.gch' | |
- '*.pch' | |
- '*.so' | |
- '*.dylib' | |
- '*.dll' | |
- '*.mod' | |
- '*.smod' | |
- '*.lai' | |
- '*.la' | |
- '*.a' | |
- '*.lib' | |
# Executables | |
- '*.exe' | |
- '*.out' | |
- '*.app' | |
# Matlab related | |
- '*.asv' | |
- '*.mat' | |
- '.vscode/**' | |
- 'build/**' | |
- 'data/**' | |
- 'data_safecopy/**' | |
- 'Examples/Kinova/SystemIdentification/ExcitingTrajectories/data/**' | |
- 'test_oracle.py' | |
- 'docker/HSL.zip' | |
- 'docker/pardiso/**' | |
- 'HSL/**' | |
- 'Examples/Digit/singlestep_optimization_settings.yaml' | |
- 'Examples/Digit-modified/singlestep_optimization_settings.yaml' | |
- 'test_nanobind_planner.py' | |
pull_request: | |
branches: | |
- unit_test_dev | |
paths-ignore: | |
# Same patterns as for push events | |
- '*.d' | |
- '*.slo' | |
- '*.lo' | |
- '*.o' | |
- '*.obj' | |
- '*.gch' | |
- '*.pch' | |
- '*.so' | |
- '*.dylib' | |
- '*.dll' | |
- '*.mod' | |
- '*.smod' | |
- '*.lai' | |
- '*.la' | |
- '*.a' | |
- '*.lib' | |
# Executables | |
- '*.exe' | |
- '*.out' | |
- '*.app' | |
# Matlab related | |
- '*.asv' | |
- '*.mat' | |
- '.vscode/**' | |
- 'build/**' | |
- 'data/**' | |
- 'data_safecopy/**' | |
- 'Examples/Kinova/SystemIdentification/ExcitingTrajectories/data/**' | |
- 'test_oracle.py' | |
- 'docker/HSL.zip' | |
- 'docker/pardiso/**' | |
- 'HSL/**' | |
- 'Examples/Digit/singlestep_optimization_settings.yaml' | |
- 'Examples/Digit-modified/singlestep_optimization_settings.yaml' | |
- 'test_nanobind_planner.py' | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
jobs: | |
build: | |
runs-on: ubuntu-latest | |
container: | |
image: zichang1234/raptor:latest | |
# not sure | |
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 | |
- name: Checkout Repository | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
submodules: recursive | |
- name: Setup ccache | |
uses: actions/cache@v4 | |
with: | |
path: .ccache | |
save-state: true | |
key: ccache-linux-${{ matrix.container }}-${{ github.sha }} | |
restore-keys: | | |
ccache-linux-${{ matrix.container }}- | |
- name: Get branch name (merge) | |
if: github.event_name != 'pull_request' | |
shell: bash | |
run: echo "BRANCH_NAME=$(echo ${GITHUB_REF#refs/heads/})" >> $GITHUB_ENV | |
- name: Get branch name (push) | |
if: github.event_name != 'pull_request' | |
shell: bash | |
run: echo "BRANCH_NAME=$(echo ${GITHUB_REF#refs/heads/})" >> $GITHUB_ENV | |
- name: Get branch name (pull request) | |
if: github.event_name == 'pull_request' | |
shell: bash | |
run: echo "BRANCH_NAME=$(echo ${GITHUB_HEAD_REF})" >> $GITHUB_ENV | |
- name: Debug Branch Name | |
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_DEPENDENCIES" | |
# apt-get update -qq | |
# DEBIAN_FRONTEND="noninteractive" apt-get install -qq ${APT_DEPENDENCIES} | |
# - name: Install Python Packages | |
# run: | | |
# pip3 install --upgrade pip | |
# pip3 install scipy matplotlib pyyaml torch pybullet==3.2.5 mujoco==2.3.7 glfw==2.6.2 pyopengl==3.1.7 numpy==1.25.2 nanobind pygccxml pyplusplus | |
# - name: Install Pinocchio Dependencies | |
# run: | | |
# bash docker/scripts/install-pinocchio.sh | |
# - name: Install HSL Solver | |
# run: | | |
# bash docker/scripts/install-hsl.sh | |
# - name: Install Ipopt Solver | |
# run: | | |
# bash docker/scripts/install-ipopt.sh | |
# - name: Install OMPL | |
# run: | | |
# bash docker/scripts/install-ompl.sh | |
- name: Free disk space | |
run: | | |
apt clean | |
df -h | |
- name: Configure 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=Release \ | |
-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 | |
- name: Build Project | |
run: | | |
cd build | |
make -j$(nproc) | |
# may overlap | |
# - name: Build Tests | |
# run: | | |
# cd build | |
# make -j$(nproc) build_tests | |
- name: Run Tests | |
env: | |
CTEST_OUTPUT_ON_FAILURE: 1 | |
run: | | |
cd build | |
ctest --output-on-failure | |
- name: Upload Build Artifacts | |
if: always() | |
uses: actions/upload-artifact@v3 | |
with: | |
name: build-artifacts | |
path: build/ | |
- name: Run Tests | |
env: | |
CTEST_OUTPUT_ON_FAILURE: 1 | |
run: | | |
cd build | |
mkdir -p TestResults | |
ctest --output-on-failure --output-junit TestResults/test-results.xml | |
- name: Upload Test Results | |
if: always() | |
uses: actions/upload-artifact@v3 | |
with: | |
name: test-results | |
path: build/TestResults/test-results.xml | |
- name: Upload Test Results to Test Reporter | |
if: always() | |
uses: dorny/test-reporter@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
name: CTest Results | |
path: build/TestResults/test-results.xml | |
reporter: junit | |
- 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 | |
# Test CMake module packaging | |
cd ./unittest/packaging/cmake | |
mkdir build && cd build | |
export CMAKE_PREFIX_PATH=/usr/local | |
cmake .. \ | |
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \ | |
-DPYTHON_EXECUTABLE=$(which python3) | |
make -j$(nproc) | |
./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 -j$(nproc) | |
./run_rnea | |
./load_urdf | |
# Test FetchContent packaging | |
cd ../../external | |
export PINOCCHIO_GIT_REPOSITORY="file://$GITHUB_WORKSPACE" | |
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 -j$(nproc) | |
./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 -j$(nproc) | |
./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) }} |