libEnsemble-complete-CI #360
This file contains hidden or 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: libEnsemble-complete-CI | |
on: | |
workflow_dispatch: | |
jobs: | |
test-libE: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-latest] | |
mpi-version: [mpich] | |
python-version: ['3.10', '3.11', '3.12', '3.13'] | |
comms-type: [m, l] | |
include: | |
- os: macos-latest | |
python-version: '3.13' | |
mpi-version: mpich | |
comms-type: m | |
- os: macos-latest | |
python-version: '3.13' | |
mpi-version: mpich | |
comms-type: l | |
- os: ubuntu-latest | |
python-version: '3.12' | |
mpi-version: mpich | |
comms-type: t | |
- os: ubuntu-latest | |
mpi-version: 'openmpi' | |
python-version: '3.12' | |
comms-type: l | |
env: | |
HYDRA_LAUNCHER: 'fork' | |
TERM: xterm-256color | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
defaults: | |
run: | |
shell: bash -l {0} | |
steps: | |
- uses: actions/checkout@v5 | |
- name: Setup conda - Python ${{ matrix.python-version }} | |
uses: conda-incubator/setup-miniconda@v3 | |
with: | |
activate-environment: condaenv | |
miniconda-version: 'latest' | |
python-version: ${{ matrix.python-version }} | |
channels: conda-forge | |
channel-priority: strict | |
auto-update-conda: true | |
- name: Force-update certifi | |
run: | | |
python --version | |
pip install -I --upgrade certifi | |
- name: Install Ubuntu compilers | |
if: matrix.os == 'ubuntu-latest' | |
run: | | |
conda install -c conda-forge gcc_linux-64 | |
pip install nlopt==2.9.0 | |
# Roundabout solution on macos for proper linking with mpicc | |
- name: Install macOS compilers | |
if: matrix.os == 'macos-latest' | |
run: | | |
conda install clang_osx-64 | |
pip install nlopt==2.8.0 | |
- name: Install mpi4py and MPI from conda | |
run: | | |
conda install mpi4py ${{ matrix.mpi-version }} | |
- name: Install generator dependencies | |
run: | | |
conda env update --file install/gen_deps_environment.yml | |
- name: Install gpcam and octave # Neither yet support 3.13 | |
if: matrix.python-version <= '3.12' | |
run: | | |
pip install gpcam==8.1.13 | |
conda install octave | |
- name: Install surmise and Tasmanian | |
if: matrix.os == 'ubuntu-latest' | |
run: | | |
pip install --upgrade git+https://github.com/bandframework/surmise.git | |
pip install Tasmanian --user | |
- name: Install generator dependencies for Ubuntu tests | |
if: matrix.os == 'ubuntu-latest' && matrix.python-version <= '3.12' | |
run: | | |
pip install scikit-build packaging | |
- name: Install other testing dependencies | |
run: | | |
pip install -r install/testing_requirements.txt | |
pip install -r install/misc_feature_requirements.txt | |
source install/install_ibcdfo.sh | |
conda install numpy scipy | |
- name: Install libEnsemble, flake8, lock environment | |
run: | | |
pip install -e . | |
flake8 libensemble | |
- name: Remove test using octave, gpcam on Python 3.13 | |
if: matrix.python-version >= '3.13' | |
run: | | |
rm ./libensemble/tests/regression_tests/test_persistent_fd_param_finder.py # needs octave, which doesn't yet support 3.13 | |
rm ./libensemble/tests/regression_tests/test_persistent_aposmm_external_localopt.py # needs octave, which doesn't yet support 3.13 | |
rm ./libensemble/tests/regression_tests/test_gpCAM.py # needs gpcam, which doesn't build on 3.13 | |
- name: Install redis/proxystore | |
run: | | |
pip install redis | |
pip install proxystore==0.7.0 | |
- name: Start Redis | |
if: matrix.os == 'ubuntu-latest' | |
uses: supercharge/[email protected] | |
with: | |
redis-version: 7 | |
- name: Run extensive tests | |
run: | | |
./libensemble/tests/run_tests.py -e -${{ matrix.comms-type }} | |
- name: Merge coverage | |
run: | | |
mv libensemble/tests/.cov* . | |
- name: Upload coverage reports to Codecov | |
uses: codecov/codecov-action@v5 | |
env: | |
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} | |
spellcheck: | |
name: Spellcheck release branch | |
if: contains(github.base_ref, 'develop') | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v5 | |
- uses: crate-ci/[email protected] |