FloPy Modflow6 continuous integration #3190
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: FloPy Modflow6 continuous integration | |
on: | |
schedule: | |
- cron: '0 8 * * *' # run at 8 AM UTC (12 am PST) | |
push: | |
pull_request: | |
branches: | |
- master | |
- develop | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
jobs: | |
test_mf6: | |
name: Modflow6 FloPy tests | |
runs-on: ubuntu-latest | |
defaults: | |
run: | |
shell: bash | |
steps: | |
- name: Checkout flopy repo | |
uses: actions/checkout@v4 | |
- name: Setup uv | |
uses: astral-sh/setup-uv@v5 | |
with: | |
version: "0.5.18" | |
- name: Setup Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version-file: pyproject.toml | |
- name: Install Python dependencies | |
run: | | |
uv sync --all-extras | |
uv pip install https://github.com/modflowpy/pymake/archive/master.zip | |
uv pip install https://github.com/Deltares/xmipy/archive/develop.zip | |
uv pip install https://github.com/MODFLOW-USGS/modflowapi/archive/develop.zip | |
uv pip install meson ninja | |
- name: Setup GNU Fortran | |
uses: fortran-lang/setup-fortran@v1 | |
with: | |
compiler: gcc | |
version: 13 | |
- name: Checkout MODFLOW 6 | |
uses: actions/checkout@v4 | |
with: | |
repository: MODFLOW-USGS/modflow6 | |
path: modflow6 | |
- name: Build and install MF6 | |
working-directory: modflow6 | |
run: | | |
uv run meson setup builddir --buildtype=debugoptimized --prefix=$(pwd) --libdir=bin | |
uv run meson install -C builddir | |
uv run meson test --verbose --no-rebuild -C builddir | |
- name: Update package classes | |
working-directory: modflow6/autotest | |
run: uv run python update_flopy.py | |
- name: Install executables | |
working-directory: modflow6/autotest | |
env: | |
GITHUB_TOKEN: ${{ github.token }} | |
run: uv run pytest -v --durations=0 get_exes.py | |
- name: Run tests | |
working-directory: modflow6/autotest | |
run: uv run pytest -v --cov=flopy --cov-report=xml --cov-append --durations=0 -n auto -m "not repo and not regression" | |
- name: Print coverage report before upload | |
working-directory: ./modflow6/autotest | |
run: uv run coverage report | |
- name: Upload coverage to Codecov | |
if: | |
github.repository_owner == 'modflowpy' && (github.event_name == 'push' || github.event_name == 'pull_request') | |
uses: codecov/codecov-action@v5 | |
with: | |
files: ./modflow6/autotest/coverage.xml | |
test_mf6_examples: | |
name: MF6 examples FloPy tests | |
runs-on: ubuntu-latest | |
defaults: | |
run: | |
shell: bash | |
steps: | |
- name: Checkout flopy repo | |
uses: actions/checkout@v4 | |
- name: Checkout MODFLOW 6 | |
uses: actions/checkout@v4 | |
with: | |
repository: MODFLOW-USGS/modflow6 | |
path: modflow6 | |
- name: Checkout MF6 examples | |
uses: actions/checkout@v4 | |
with: | |
repository: MODFLOW-USGS/modflow6-examples | |
path: modflow6-examples | |
- name: Setup uv | |
uses: astral-sh/setup-uv@v5 | |
with: | |
version: "0.5.18" | |
- name: Setup Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version-file: pyproject.toml | |
- name: Install Python dependencies | |
run: | | |
uv sync --all-extras | |
uv pip install https://github.com/modflowpy/pymake/archive/master.zip | |
uv pip install https://github.com/Deltares/xmipy/archive/develop.zip | |
uv pip install https://github.com/MODFLOW-USGS/modflowapi/archive/develop.zip | |
uv pip install meson ninja | |
uv pip install -r modflow6-examples/etc/requirements.pip.txt | |
- name: Setup GNU Fortran | |
uses: fortran-lang/setup-fortran@v1 | |
with: | |
compiler: gcc | |
version: 13 | |
- name: Install executables | |
uses: modflowpy/install-modflow-action@v1 | |
- name: Build and install MF6 | |
working-directory: modflow6 | |
run: | | |
uv run meson setup builddir --buildtype=debugoptimized --prefix=$(pwd) --libdir=bin | |
uv run meson install -C builddir | |
uv run meson test --verbose --no-rebuild -C builddir | |
cp bin/* ~/.local/bin/modflow/ | |
- name: Update package classes | |
working-directory: modflow6/autotest | |
run: uv run python update_flopy.py | |
- name: Test MF6 examples | |
working-directory: modflow6-examples/autotest | |
run: uv run pytest -v -n=auto --durations=0 test_scripts.py |