Skip to content

Issue565

Issue565 #1046

Workflow file for this run

---
name: Ubuntu
on:
push:
branches: [main, issue*, release-*]
pull_request:
branches: [main, issue*, release-*]
# Some notes on file paths: the working directory is $GITHUB_WORKSPACE,
# which equals /home/runner/work/my-repo-name/my-repo-name. The code is
# checked out to $GITHUB_WORKSPACE as well. We put all libraries under
# /home/runner/lib.
jobs:
compile:
name: Compile planner
timeout-minutes: 60
runs-on: ${{ matrix.version.ubuntu }}
strategy:
matrix:
version:
- {ubuntu: 'ubuntu-20.04', python: '3.8', cc: gcc-10, cxx: g++-10, run_tox_tests: true}
- {ubuntu: 'ubuntu-20.04', python: '3.8', cc: clang-12, cxx: clang++-12, run_tox_tests: false}
- {ubuntu: 'ubuntu-22.04', python: '3.10', cc: gcc-11, cxx: g++-11, run_tox_tests: false}
- {ubuntu: 'ubuntu-22.04', python: '3.10', cc: gcc-12, cxx: g++-12, run_tox_tests: true}
- {ubuntu: 'ubuntu-22.04', python: '3.10', cc: clang-14, cxx: clang++-14, run_tox_tests: false}
env:
CC: ${{ matrix.version.cc }}
CXX: ${{ matrix.version.cxx }}
CPLEX_URL: ${{ secrets.CPLEX2211_LINUX_URL }}
DOWNWARD_CPLEX_ROOT: /home/runner/lib/ibm/ILOG/CPLEX_Studio2211/cplex
CPLEX_LIB: /home/runner/lib/ibm/ILOG/CPLEX_Studio2211/cplex/bin/x86-64_linux/libcplex2211.so
DOWNWARD_SOPLEX_ROOT: /home/runner/lib/soplex-6.0.3x
SOPLEX_LIB: /home/runner/lib/soplex-6.0.3x/lib/
SOPLEX_INCLUDE: /home/runner/lib/soplex-6.0.3x/include/
steps:
- name: Clone repository
uses: actions/checkout@v3
- name: Install Python
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.version.python }}
- name: Install dependencies
run: |
sudo apt-get -y install zlib1g-dev libgmp3-dev ${{ matrix.version.cc }}
mkdir /home/runner/lib
# In 22.04 g++-12 is not automatically installed when gcc-12 gets
# installed, so we do it separately. We do not use an unconditional
# install for any value of cxx because there is no separate package for
# clang++.
- name: Install CXX
if: startsWith(matrix.version.cxx, 'g++-')
run: |
sudo apt-get -y install ${{ matrix.version.cxx }}
# Only install CPLEX if its URL/secret is set.
- name: Install CPLEX
if: ${{ env.CPLEX_URL != 0 }}
run: |
# We redirect output of wget to hide the secret URLs.
wget -O cplex_installer $CPLEX_URL &> /dev/null
chmod +x cplex_installer
./cplex_installer -DLICENSE_ACCEPTED=TRUE -DUSER_INSTALL_DIR="$(dirname "${DOWNWARD_CPLEX_ROOT}")" -i silent
rm cplex_installer
# Always install SoPlex
- name: Install SoPlex
run: |
git clone https://github.com/scipopt/soplex.git
cd soplex
git checkout a5df0814d67812c13a00f06eec507b4d071fb862
cd ..
cmake -S soplex -B build
cmake --build build
cmake --install build --prefix "${DOWNWARD_SOPLEX_ROOT}"
rm -rf soplex build
- name: Compile planner
run: |
export CXXFLAGS="-Werror" # Treat compilation warnings as errors.
./build.py --debug
./build.py
- name: Archive required files
# We only run tests on one compiler version per Ubuntu version, so we
# only need to archive that one.
if: ${{ matrix.version.run_tox_tests }}
# We determined the dynamically-linked libraries using ldd. We
# archive the entire lib directory of Osi because we need all
# 4 large library files and several file links to these.
run: |
libs="${SOPLEX_LIB} ${SOPLEX_INCLUDE}"
if [[ ! -z "${CPLEX_URL}" ]]; then
libs="${libs} ${CPLEX_LIB}"
fi
# Handle libs first because tar complains when no files follow the last --directory option.
tar cfz archive.tar.gz ${libs} --directory ${GITHUB_WORKSPACE} fast-downward.py driver misc builds/debug/bin/ builds/release/bin/
- name: Upload archive
if: ${{ matrix.version.run_tox_tests }}
uses: actions/upload-artifact@master
with:
name: compiled-planner-${{ matrix.version.ubuntu }}
path: archive.tar.gz
retention-days: 1
run_tox_tests:
name: Test planner
runs-on: ${{ matrix.version.ubuntu }}
needs: compile # TODO: this only depends on the compile step with the gcc version we test
strategy:
matrix:
version:
- {ubuntu: ubuntu-20.04, python: '3.8'}
- {ubuntu: ubuntu-22.04, python: '3.10'}
env:
CPLEX_URL: ${{ secrets.CPLEX2211_LINUX_URL }}
steps:
- name: Download archive
uses: actions/download-artifact@master
with:
name: compiled-planner-${{ matrix.version.ubuntu }}
- name: Delete artifact
uses: geekyeggo/delete-artifact@v2
with:
name: compiled-planner-${{ matrix.version.ubuntu }}
- name: Install Python
uses: actions/setup-python@master
with:
python-version: ${{ matrix.version.python }}
- name: Install dependencies
run: |
pip3 install tox
sudo apt-get -y install zlib1g-dev libgmp3-dev gcc flex bison
# NOTE: VAL does not compile with clang-12.
- name: Install VAL
run: |
git clone https://github.com/KCL-Planning/VAL.git
cd VAL
git checkout a5565396007eee73ac36527fbf904142b3077c74
make clean # Remove old build artifacts and binaries.
sed -i 's/-Werror //g' Makefile # Ignore warnings.
make -j2
mv validate ../
cd ../
rm -rf VAL
echo `pwd` >> $GITHUB_PATH # Add VAL to path of subsequent steps.
- name: Extract archive
# We need to make sure that library paths are the same as
# during compilation.
run: |
tar xfz archive.tar.gz
- name: Run driver, translator and search tests
run: |
cd misc/
tox -e driver,translator,search
- name: Run CPLEX tests
if: ${{ env.CPLEX_URL != 0 }}
run: |
cd misc/
tox -e cplex
- name: Run SoPlex tests
run: |
cd misc/
tox -e soplex
...