Skip to content

Post-merge Tests

Post-merge Tests #134

name: Post-merge Tests
on:
workflow_dispatch: # allow manual triggering of this workflow
inputs:
outgoing_ref:
description: "The ref to be built. Can be a tag, commit hash, or branch name"
required: true
default: "main"
push:
# Run when the main branch is pushed to
branches:
- main
jobs:
prerelease-cython:
name: Pre-release Cython
runs-on: ubuntu-22.04
timeout-minutes: 60
env:
HDF5_LIBDIR: /usr/lib/x86_64-linux-gnu/hdf5/serial
HDF5_INCLUDEDIR: /usr/include/hdf5/serial
steps:
- uses: actions/checkout@v3
name: Checkout the repository
with:
submodules: recursive
- name: Setup Python
uses: actions/setup-python@v4
with:
python-version: 3.11
architecture: x64
- name: Install Apt dependencies
run: |
sudo apt update
sudo apt install libboost-dev libopenblas-dev libhdf5-dev
- name: Upgrade pip
run: python3 -m pip install -U pip setuptools wheel
- name: Install Python dependencies
run: |
python3 -m pip install ruamel.yaml scons numpy pandas pytest pint \
pytest-github-actions-annotate-failures graphviz
python3 -m pip install --pre cython
- name: Build Cantera
run: python3 `which scons` build env_vars=all
CXX=clang++-14 CC=clang-14 f90_interface=n extra_lib_dirs=/usr/lib/llvm/lib
-j2 debug=n --debug=time hdf_libdir=$HDF5_LIBDIR hdf_include=$HDF5_INCLUDEDIR
logging=debug
- name: Test Cantera
run:
python3 `which scons` test show_long_tests=yes verbose_tests=yes --debug=time
ubuntu-docker:
name: Docker 'ubuntu:${{ matrix.image }}' image
strategy:
matrix:
image: [devel, rolling]
fail-fast: false
runs-on: ubuntu-latest
timeout-minutes: 60
container:
image: ubuntu:${{ matrix.image }}
env:
HDF5_LIBDIR: /usr/lib/x86_64-linux-gnu/hdf5/serial
HDF5_INCLUDEDIR: /usr/include/hdf5/serial
steps:
- name: Install git on ubuntu:${{ matrix.image }}
run: |
apt update -y
apt install -y git
git config --global init.defaultBranch main
git config --global --add safe.directory /__w/cantera/cantera
- uses: actions/checkout@v3
name: Checkout the repository
with:
submodules: recursive
- name: Install Apt dependencies
# Use packages from ubuntu image when possible
run: |
apt install -y python3 python3-pip pipenv scons build-essential \
libboost-dev gfortran libopenmpi-dev libpython3-dev \
libblas-dev liblapack-dev libhdf5-dev libfmt-dev libyaml-cpp-dev \
libgtest-dev libgmock-dev libeigen3-dev libsundials-dev \
cython3 python3-numpy python3-pandas python3-pint python3-graphviz \
python3-ruamel.yaml python3-setuptools python3-wheel python3-pytest
gcc --version
- name: Install Python dependencies
run: |
pipenv install pytest-github-actions-annotate-failures
- name: Build Cantera
run: |
scons build env_vars=all -j2 debug=n --debug=time \
hdf_libdir=$HDF5_LIBDIR hdf_include=$HDF5_INCLUDEDIR \
system_eigen=y system_fmt=y system_sundials=y system_yamlcpp=y \
system_blas_lapack=y hdf_support=y f90_interface=y \
cc_flags=-D_GLIBCXX_ASSERTIONS
- name: Test Cantera
run:
scons test verbose_tests=yes --debug=time
fedora-docker:
name: Docker 'fedora:${{ matrix.image }}' image
strategy:
matrix:
image: [rawhide, latest]
fail-fast: false
runs-on: ubuntu-latest
timeout-minutes: 60
container:
image: fedora:${{ matrix.image }}
steps:
- name: Install git on fedora:${{ matrix.image }}
run: |
dnf install -y git
git config --global init.defaultBranch main
git config --global --add safe.directory /__w/cantera/cantera
- uses: actions/checkout@v3
name: Checkout the repository
- name: Install dependencies
# Use packages from Fedora
run: |
dnf install -y boost-devel eigen3-devel fmt-devel gcc gcc-c++ \
gcc-fortran gmock-devel gtest-devel python3 python3-cython \
python3-devel python3-numpy python3-pandas python3-pint python3-pip \
python3-pytest python3-ruamel-yaml python3-scipy python3-scons \
python3-wheel sundials-devel yaml-cpp-devel hdf5-devel highfive-devel \
python3-graphviz
- name: Build Cantera
run: |
scons build -j2 debug=n --debug=time python_package=full f90_interface=y \
extra_inc_dirs=/usr/include/eigen3 libdirname=/usr/lib64 \
system_eigen=y system_fmt=y system_blas_lapack=y system_sundials=y \
system_yamlcpp=y system_blas_lapack=y hdf_support=y
# note: 'system_highfive=y' is omitted as the current packaged version is too old;
# once newer version is available in 'latest', this should be tested as well
- name: Test Cantera
run:
scons test verbose_tests=yes --debug=time
ubuntu-python-prerelease:
name: ${{ matrix.os }} with Python ${{ matrix.python-version }}
runs-on: ${{ matrix.os }}
timeout-minutes: 60
strategy:
matrix:
python-version: ['3.12']
os: ['ubuntu-20.04', 'ubuntu-22.04']
fail-fast: false
env:
HDF5_LIBDIR: /usr/lib/x86_64-linux-gnu/hdf5/serial
HDF5_INCLUDEDIR: /usr/include/hdf5/serial
steps:
- uses: actions/checkout@v3
name: Checkout the repository
with:
submodules: recursive
- name: Setup Python
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
architecture: x64
allow-prereleases: true
- name: Install Apt dependencies
run: |
sudo apt update
sudo apt install libboost-dev gfortran libopenmpi-dev \
libblas-dev liblapack-dev libhdf5-dev libfmt-dev
gcc --version
- name: Upgrade pip
run: python3 -m pip install -U pip setuptools wheel
- name: Install Python dependencies
run: |
python3 -m pip install ruamel.yaml scons numpy cython pandas pytest \
pytest-github-actions-annotate-failures pint graphviz
- name: Build Cantera
run: |
python3 `which scons` build env_vars=all -j2 debug=n --debug=time \
system_fmt=y hdf_libdir=$HDF5_LIBDIR hdf_include=$HDF5_INCLUDEDIR \
system_blas_lapack=y hdf_support=y cc_flags=-D_GLIBCXX_ASSERTIONS
- name: Test Cantera
run:
python3 `which scons` test show_long_tests=yes verbose_tests=yes --debug=time
macos-homebrew:
runs-on: macos-14
name: Install Latest Python with Homebrew
timeout-minutes: 90
steps:
- uses: actions/checkout@v4
name: Checkout the repository
with:
submodules: recursive
- name: Install Brew dependencies
run: brew install --display-times boost libomp hdf5 python python-setuptools scons
- name: Set Include folder
run: |
echo "BOOST_INC_DIR=$(brew --prefix)/include" >> $GITHUB_ENV
# This is necessary because PEP 668 https://peps.python.org/pep-0668/
# PEP 668 prohibits installation to system Python packages via pip
- name: Create a virtualenv for dependencies
run: |
$(brew --prefix)/bin/python3.12 -m venv .venv
- name: Install Python dependencies
run: |
./.venv/bin/python -m pip install ruamel.yaml numpy cython pandas pytest pytest-github-actions-annotate-failures pint graphviz
- name: Build Cantera
run: $(brew --prefix)/bin/scons build env_vars=all python_cmd='.venv/bin/python' -j3 debug=n --debug=time boost_inc_dir=${BOOST_INC_DIR}
- name: Test Cantera
run: $(brew --prefix)/bin/scons test show_long_tests=yes verbose_tests=yes --debug=time