D3D (#271) #23
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: Py 3.8, 3.9, 3.10, 3.11 | Windows Mac Linux | |
on: | |
push: | |
branches: | |
- master | |
- develop | |
pull_request: | |
branches: | |
- master | |
- develop | |
jobs: | |
set-os: | |
runs-on: ubuntu-latest | |
outputs: | |
matrix_os: ${{ steps.set-matrix.outputs.matrix_os }} | |
steps: | |
- id: set-matrix | |
run: | | |
if [[ "${{ github.base_ref }}" == "develop" ]]; then | |
echo "matrix_os=[\"ubuntu-latest\"]" >> $GITHUB_OUTPUT | |
else | |
echo "matrix_os=[\"windows-latest\", \"ubuntu-latest\", \"macos-latest\"]" >> $GITHUB_OUTPUT | |
fi | |
check-changes: | |
runs-on: ubuntu-latest | |
outputs: | |
wave_io_hindcast_changed: ${{ steps.changes.outputs.wave_io_hindcast }} | |
should-run-hindcast: ${{ steps.hindcast-logic.outputs.should-run-hindcast }} | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v3 | |
- name: Check for changes in wave/io/hindcast | |
id: changes | |
uses: dorny/paths-filter@v2 | |
with: | |
filters: | | |
wave_io_hindcast: | |
- 'mhkit/tests/wave/io/hindcast/**' | |
- id: hindcast-logic | |
run: | | |
if [[ "${{ github.event.pull_request.base.ref }}" == "master" || "${{ steps.changes.outputs.wave_io_hindcast }}" == "true" ]]; then | |
echo "should-run-hindcast=true" >> "$GITHUB_OUTPUT" | |
else | |
echo "should-run-hindcast=false" >> "$GITHUB_OUTPUT" | |
fi | |
prepare-cache: | |
needs: [check-changes] | |
runs-on: ubuntu-latest | |
env: | |
PYTHON_VER: 3.9 | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v3 | |
- name: Setup Conda | |
uses: s-weigand/setup-conda@v1 | |
with: | |
activate-conda: false | |
conda-channels: conda-forge | |
- name: Python setup | |
shell: bash -l {0} | |
run: | | |
conda create --name TEST python=${{ env.PYTHON_VER }} numpy cython pip hdf5 libnetcdf cftime netcdf4 --strict-channel-priority | |
source activate TEST | |
export PATH="${CONDA_PREFIX}/bin:${CONDA_PREFIX}/Library/bin:$PATH" # so setup.py finds nc-config | |
pip install -e . --no-deps --force-reinstall | |
- name: Install dependencies | |
shell: bash -l {0} | |
run: | | |
source activate TEST | |
python -m pip install --upgrade pip wheel | |
pip install coverage pytest coveralls . | |
- name: Prepare data | |
run: | | |
source activate TEST | |
pytest mhkit/tests/river/test_io.py | |
pytest mhkit/tests/tidal/test_io.py | |
pytest mhkit/tests/wave/io/test_cdip.py | |
- name: Prepare Hindcast data | |
if: (needs.check-changes.outputs.should-run-hindcast == 'true') | |
run: | | |
# pytest tests/test_specific_file.py::TestClass::test_function | |
source activate TEST | |
pytest mhkit/tests/wave/io/hindcast/test_hindcast.py | |
pytest mhkit/tests/wave/io/hindcast/test_wind_toolkit.py | |
- name: Upload data as artifact | |
uses: actions/upload-artifact@v3 | |
with: | |
name: data | |
path: ~/.cache/mhkit | |
conda-build: | |
name: conda-${{ matrix.os }}/${{ matrix.python-version }} | |
needs: [set-os, prepare-cache] | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: ${{fromJson(needs.set-os.outputs.matrix_os)}} | |
python-version: ["3.8", "3.9", "3.10", "3.11"] | |
env: | |
PYTHON_VER: ${{ matrix.python-version }} | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Setup Conda | |
uses: s-weigand/setup-conda@v1 | |
with: | |
activate-conda: false | |
conda-channels: conda-forge | |
- name: Python ${{ matrix.python-version }} | |
shell: bash -l {0} | |
run: | | |
conda create --name TEST python=${PYTHON_VER} numpy cython pip hdf5 libnetcdf cftime netcdf4 --strict-channel-priority | |
source activate TEST | |
export PATH="${CONDA_PREFIX}/bin:${CONDA_PREFIX}/Library/bin:$PATH" # so setup.py finds nc-config | |
pip install -e . --no-deps --force-reinstall | |
- name: Install dependencies | |
shell: bash -l {0} | |
run: | | |
source activate TEST | |
python -m pip install --upgrade pip wheel | |
pip install coverage pytest coveralls . | |
- name: Download data from artifact | |
uses: actions/download-artifact@v3 | |
with: | |
name: data | |
path: ~/.cache/mhkit | |
- name: Run pytest | |
shell: bash -l {0} | |
run: | | |
source activate TEST | |
coverage run --rcfile=.github/workflows/.coveragerc --source=./mhkit/ -m pytest -c .github/workflows/pytest.ini | |
- name: Upload coverage data to coveralls.io | |
shell: bash -l {0} | |
run: | | |
source activate TEST | |
coveralls --service=github | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
COVERALLS_FLAG_NAME: ${{ matrix.python-version }} | |
COVERALLS_PARALLEL: true | |
pip-build: | |
name: pip-${{ matrix.os }}/${{ matrix.python-version }} | |
needs: [set-os, prepare-cache] | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: ${{fromJson(needs.set-os.outputs.matrix_os)}} | |
python-version: ["3.8", "3.9", "3.10", "3.11"] | |
steps: | |
- uses: conda-incubator/setup-miniconda@v2 | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v3 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Set up Git repository | |
uses: actions/checkout@v3 | |
- name: Download data from artifact | |
uses: actions/download-artifact@v3 | |
with: | |
name: data | |
path: ~/.cache/mhkit | |
- name: Update and install packages | |
run: | | |
python -m pip install --upgrade pip wheel | |
pip install coverage pytest coveralls . | |
- name: Run pytest | |
run: | | |
coverage run --rcfile=.github/workflows/.coveragerc --source=./mhkit/ -m pytest -c .github/workflows/pytest.ini | |
- name: Upload coverage data to coveralls.io | |
run: coveralls --service=github | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
COVERALLS_FLAG_NAME: ${{ matrix.python-version }} | |
COVERALLS_PARALLEL: true | |
hindcast-calls: | |
name: hindcast-${{ matrix.os }}/${{ matrix.python-version }} | |
needs: [check-changes, prepare-cache, set-os] | |
if: (needs.check-changes.outputs.should-run-hindcast == 'true') | |
runs-on: ${{ matrix.os }} | |
strategy: | |
max-parallel: 1 | |
fail-fast: false | |
matrix: | |
os: ${{fromJson(needs.set-os.outputs.matrix_os)}} | |
python-version: [3.8, 3.9, 3.10, 3.11] | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Setup Conda | |
uses: s-weigand/setup-conda@v1 | |
with: | |
activate-conda: false | |
conda-channels: conda-forge | |
- name: Python ${{ matrix.python-version }} | |
shell: bash -l {0} | |
run: | | |
conda create --name TEST python=${{ matrix.python-version }} numpy cython pip pytest hdf5 libnetcdf cftime netcdf4 coverage --strict-channel-priority | |
source activate TEST | |
export PATH="${CONDA_PREFIX}/bin:${CONDA_PREFIX}/Library/bin:$PATH" # so setup.py finds nc-config | |
pip install -e . --no-deps --force-reinstall | |
- name: Download data from artifact | |
uses: actions/download-artifact@v3 | |
with: | |
name: data | |
path: ~/.cache/mhkit | |
- name: Install MHKiT and run pytest | |
shell: bash -l {0} | |
run: | | |
source activate TEST | |
python -m pip install --upgrade pip wheel | |
pip install coveralls . | |
coverage run --rcfile=.github/workflows/.coveragehindcastrc -m pytest -c .github/workflows/pytest-hindcast.ini | |
- name: Upload coverage data to coveralls.io | |
shell: bash -l {0} | |
run: | | |
source activate TEST | |
coveralls --service=github | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
COVERALLS_FLAG_NAME: ${{ matrix.python-version }} | |
COVERALLS_PARALLEL: true | |
coveralls: | |
name: Indicate completion to coveralls.io | |
needs: [conda-build, pip-build, hindcast-calls] | |
if: | | |
always() && | |
needs.conda-build.result == 'success' && | |
needs.pip-build.result == 'success' && | |
(needs.hindcast-calls.result == 'success' || needs.hindcast-calls.result == 'skipped') | |
runs-on: ubuntu-latest | |
container: python:3-slim | |
steps: | |
- name: Finished | |
run: | | |
pip3 install --upgrade coveralls | |
coveralls --finish | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |