libEnsemble-complete-CI #310
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: 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'] | |
pydantic-version: ['2.8.2'] | |
comms-type: [m, l] | |
include: | |
- os: macos-latest | |
python-version: '3.13' | |
mpi-version: mpich | |
pydantic-version: '2.8.2' | |
comms-type: m | |
- os: macos-latest | |
python-version: '3.13' | |
mpi-version: mpich | |
pydantic-version: '2.8.2' | |
comms-type: l | |
- os: ubuntu-latest | |
python-version: '3.12' | |
mpi-version: mpich | |
pydantic-version: '2.8.2' | |
comms-type: t | |
- os: ubuntu-latest | |
mpi-version: 'openmpi' | |
pydantic-version: '2.8.2' | |
python-version: '3.12' | |
comms-type: l | |
- os: ubuntu-latest | |
mpi-version: mpich | |
python-version: '3.12' | |
pydantic-version: '1.10.17' | |
comms-type: m | |
- os: ubuntu-latest | |
mpi-version: mpich | |
python-version: '3.12' | |
pydantic-version: '1.10.17' | |
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@v4 | |
- 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: flexible | |
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 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 | |
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 Balsam on Pydantic 1 | |
if: matrix.pydantic-version == '1.10.17' | |
run: | | |
conda install pyzmq | |
git clone https://github.com/argonne-lcf/balsam.git | |
sed -i -e "s/pyzmq>=22.1.0,<23.0.0/pyzmq>=23.0.0,<24.0.0/" ./balsam/setup.cfg | |
cd balsam; pip install -e .; cd .. | |
- 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 pydantic==${{ matrix.pydantic-version }} | |
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 on Pydantic 2 | |
if: matrix.pydantic-version == '2.8.2' | |
run: | | |
pip install redis | |
pip install proxystore==0.7.0 | |
- name: Remove proxystore test on Pydantic 1 | |
if: matrix.pydantic-version == '1.10.17' | |
run: | | |
rm ./libensemble/tests/regression_tests/test_proxystore_integration.py | |
- name: Remove Balsam/Globus-compute tests on Pydantic 2 | |
if: matrix.pydantic-version == '2.8.2' | |
run: | | |
rm ./libensemble/tests/unit_tests/test_ufunc_runners.py | |
rm ./libensemble/tests/unit_tests/test_executor_balsam.py | |
- 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@v4 | |
- uses: crate-ci/[email protected] |