Skip to content

Add Code Compatibility Reporting #58

Add Code Compatibility Reporting

Add Code Compatibility Reporting #58

Workflow file for this run

name: MHKiT-MATLAB Unix Unit Tests
on:
push:
branches: [master, develop, ebbflood]
pull_request:
branches: [master, develop, ebbflood]
jobs:
cache_population:
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest]
python-version: ["3.10"]
matlab-version: [R2022b]
runs-on: ${{ matrix.os }}
env:
mhkit-python-dir: "MHKiT-Python"
steps:
- name: Check out MHKiT-MATLAB
uses: actions/checkout@v4
- name: Check out MHKiT-Python
uses: actions/checkout@v4
with:
repository: "MHKiT-Software/MHKiT-Python"
path: ${{env.mhkit-python-dir}}
- name: Install & Setup Miniconda
uses: conda-incubator/setup-miniconda@v2
with:
auto-update-conda: true
python-version: ${{ matrix.python-version }}
activate-environment: MHKIT_CONDA_ENV
channels: conda-forge
- name: Setup Python ${{ matrix.python-version }}
shell: bash -l {0}
run: |
conda create --name MHKIT_CONDA_ENV python=${{ matrix.python-version }} numpy cython pip pytest hdf5 libnetcdf cftime openssl --strict-channel-priority
conda activate MHKIT_CONDA_ENV
conda install -c conda-forge netcdf4
export PATH="${CONDA_PREFIX}/bin:${CONDA_PREFIX}/Library/bin:$PATH" # so setup.py finds nc-config
pip install -e . --no-deps --force-reinstall
- name: pip install mhkit module from source
shell: bash -l {0}
run: |
conda activate MHKIT_CONDA_ENV
pip install -e .
working-directory: ${{env.mhkit-python-dir}}
- name: pip install mhkit-python-utils module from source
shell: bash -l {0}
run: |
conda activate MHKIT_CONDA_ENV
pip install -e .
# Create the cache and add a dummy file
# The dummy file ensures that the artifact download
- name: Setup mhkit_webread_cache
shell: bash -l {0}
run: |
mkdir mhkit_webread_cache
touch mhkit_webread_cache/test.txt
echo "Hello World" > mhkit_webread_cache/test.txt
- name: Set up MATLAB
uses: matlab-actions/setup-matlab@v1
with:
release: ${{ matrix.matlab-version }}
# OutOfProcess is required to properly call netcdf/hdf5 and works reliably on macos and ubuntu
- name: Configure MATLAB Python Environment
shell: bash -l {0}
run: |
conda activate MHKIT_CONDA_ENV
printf 'pyenv(Version="%s", ExecutionMode="OutOfProcess")\n' $(python -c "import sys; print(sys.executable)") > run.m
- name: Add MATLAB test commands
shell: bash
run: echo "version,
addpath(genpath('mhkit')),
import matlab.unittest.TestSuite,
import matlab.unittest.TestRunner,
testFolder = ['mhkit' filesep 'tests'],
suite = TestSuite.fromFolder(testFolder),
runner = TestRunner.withTextOutput,
results = runner.run(suite),
assertSuccess(results)" >> run.m
- name: Output run.m
shell: bash
run: cat run.m
- name: Run MATLAB Unit Tests
uses: matlab-actions/run-command@v1
with:
command: run
startup-options: -noFigureWindows
- name: Save mhkit_webread_cache directory as an artifact
uses: actions/upload-artifact@v3
with:
# GitHub Action "Name" of artifact
name: mhkit_webread_cache
# Filesystem path of directory
path: mhkit_webread_cache
main:
needs: cache_population
strategy:
fail-fast: false
# Expecting 2 * 4 * 7 - (13 * 2) = 30 jobs
matrix:
os: [macos-latest, ubuntu-latest]
python-version: [3.8, 3.9, "3.10", 3.11]
# Note: It is preferred to use an actual release name as opposed to 'latest'
matlab-version: [R2021b, R2022a, R2022b, R2023a, R2023b]
exclude:
# cache_population job
- python-version: "3.10"
matlab-version: R2022b
os: ubuntu-latest
# Non compatiable MATLAB/Python Versions according to Mathworks
- matlab-version: R2023b
python-version: 3.8
- matlab-version: R2023a
python-version: 3.11
- matlab-version: R2022b
python-version: 3.11
- matlab-version: R2022a
python-version: 3.11
- matlab-version: R2022a
python-version: "3.10"
- matlab-version: R2021b
python-version: 3.11
- matlab-version: R2021b
python-version: "3.10"
- matlab-version: R2021a
python-version: 3.11
- matlab-version: R2021a
python-version: "3.10"
- matlab-version: R2021a
python-version: 3.9
- matlab-version: R2020b
python-version: 3.11
- matlab-version: R2020b
python-version: "3.10"
- matlab-version: R2020b
python-version: 3.9
# Combinations with failing tests that seem related to GitHub Actions
- matlab-version: R2023b
os: macos-latest
runs-on: ${{ matrix.os }}
env:
mhkit-python-dir: "MHKiT-Python"
steps:
- name: Check out MHKiT-MATLAB
uses: actions/checkout@v4
- name: Check out MHKiT-Python
uses: actions/checkout@v4
with:
repository: "MHKiT-Software/MHKiT-Python"
path: ${{env.mhkit-python-dir}}
# - name: Setup Conda
# uses: s-weigand/setup-conda@v1
# with:
# activate-conda: false
# conda-channels: conda-forge
- name: Install & Setup Miniconda
uses: conda-incubator/setup-miniconda@v2
with:
auto-update-conda: true
python-version: ${{ matrix.python-version }}
activate-environment: MHKIT_CONDA_ENV
channels: conda-forge
- name: Setup Python ${{ matrix.python-version }}
shell: bash -l {0}
run: |
conda create --name MHKIT_CONDA_ENV python=${{ matrix.python-version }} numpy cython pip pytest hdf5 libnetcdf cftime netcdf4 --strict-channel-priority
conda activate MHKIT_CONDA_ENV
export PATH="${CONDA_PREFIX}/bin:${CONDA_PREFIX}/Library/bin:$PATH" # so setup.py finds nc-config
pip install -e . --no-deps --force-reinstall
# - name: Setup Python
# uses: actions/setup-python@v4
# with:
# python-version: ${{ matrix.python-version }}
# - name: Setup MHKiT Dependencies on macOS
# run: brew install hdf5 netcdf
# if: ${{ matrix.os == 'macos-latest' }}
# - name: Setup MHKiT Dependencies on ubuntu
# run: sudo apt install libhdf5-serial-dev libnetcdf-dev
# if: ${{ matrix.os == 'ubuntu-latest' }}
# - name: Setup MHKiT Dependencies on ubuntu
# if: ${{ matrix.os == 'ubuntu-latest' }}
# run: |
# sudo apt update
# sudo apt upgrade
# sudo apt install build-essential
# - name: Print GCC Version
# if: ${{ matrix.os == 'ubuntu-latest' }}
# run: |
# gcc --version
# g++ --version
# - name: Setup MATLAB Path on Ubuntu
# if: ${{ matrix.os == 'ubuntu-latest' }}
# run: echo "export LD_LIBRARY_PATH=/usr/local/MATLAB/${{ matrix.matlab-version }}/sys/os/glnxa64" >> "$GITHUB_ENV"
- name: Setup MATLAB Path on Ubuntu
if: ${{ matrix.os == 'ubuntu-latest' }}
run: echo "LD_PRELOAD=/lib/x86_64-linux-gnu/libstdc++.so.6" >> "$GITHUB_ENV"
- name: Print Python executable
shell: bash -l {0}
run: |
conda activate MHKIT_CONDA_ENV
python -c "import sys; print(sys.executable)"
- name: Print Python Version
shell: bash -l {0}
run: |
conda activate MHKIT_CONDA_ENV
python --version
- name: pip install mhkit module from source
shell: bash -l {0}
run: |
conda activate MHKIT_CONDA_ENV
pip install -e .
working-directory: ${{env.mhkit-python-dir}}
- name: pip install mhkit-python-utils module from source
shell: bash -l {0}
run: |
conda activate MHKIT_CONDA_ENV
pip install -e .
- name: List installed pip modules
shell: bash -l {0}
run: |
conda activate MHKIT_CONDA_ENV
pip freeze
- name: Print MHKiT-Python Version
shell: bash -l {0}
run: |
conda activate MHKIT_CONDA_ENV
python -c "import mhkit; print(mhkit.__version__)"
- name: Verify MHKiT-Python Operation
shell: bash -l {0}
run: |
conda activate MHKIT_CONDA_ENV
python -c "import mhkit; [ED, AP] = mhkit.river.performance.circular(30); print(ED); print(AP);"
- name: Download mhkit_webread_cache artifact
uses: actions/download-artifact@v3
with:
name: mhkit_webread_cache
path: mhkit_webread_cache
- name: Display structure mhkit_webread_cache
run: ls -R
working-directory: .
- name: Set up MATLAB
uses: matlab-actions/setup-matlab@v2-beta
with:
release: ${{ matrix.matlab-version }}
# OutOfProcess is required to properly call netcdf/hdf5 and works reliably on macos and ubuntu
- name: Configure MATLAB Python Environment
shell: bash -l {0}
run: |
conda activate MHKIT_CONDA_ENV
printf 'pyenv(Version="%s", ExecutionMode="OutOfProcess")\n' $(python -c "import sys; print(sys.executable)") > run.m
- name: Add MATLAB test commands
shell: bash
run: echo "version,
addpath(genpath('mhkit')),
import matlab.unittest.TestSuite,
import matlab.unittest.TestRunner,
testFolder = ['mhkit' filesep 'tests'],
suite = TestSuite.fromFolder(testFolder),
runner = TestRunner.withTextOutput,
results = runner.run(suite),
assertSuccess(results)" >> run.m
- name: Output run.m
shell: bash
run: cat run.m
# This is a good idea but does not work because you cannot explicitly set the python execution mode
# - name: Run MHKiT-MATLAB Unit Tests
# uses: matlab-actions/run-tests@v1
# with:
# select-by-folder: mhkit/tests
- name: Run MATLAB Unit Tests
uses: matlab-actions/run-command@v1
with:
command: run
startup-options: -noFigureWindows