Modflow6 continuous integration #1031
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: 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 Python | |
uses: astral-sh/setup-uv@v5 | |
with: | |
cache-dependency-glob: "**/pyproject.toml" | |
- name: Install FloPy | |
run: uv sync --all-extras | |
- name: Install other dependencies from GitHub | |
run: uv pip install -r etc/requirements.mf6.txt | |
- 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 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 Python | |
uses: astral-sh/setup-uv@v5 | |
with: | |
cache-dependency-glob: "**/pyproject.toml" | |
- name: Install FloPy | |
run: uv sync --all-extras | |
- name: Install other dependencies from modflow6-examples and GitHub | |
run: uv pip install -r etc/requirements.mf6.txt -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 update_flopy.py | |
- name: Test MF6 examples | |
working-directory: modflow6-examples/autotest | |
run: uv run pytest -v -n=auto --durations=0 test_scripts.py |