Conditionally Run Notebooks #291
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: xHydro Testing Suite | |
on: | |
push: | |
branches: | |
- main | |
paths-ignore: | |
- CHANGES.rst | |
- README.rst | |
- pyproject.toml | |
- xhydro/__init__.py | |
pull_request: | |
types: | |
- opened | |
- reopened | |
- synchronize | |
pull_request_review: | |
types: | |
- submitted | |
jobs: | |
lint: | |
name: Lint (Python${{ matrix.python-version }}) | |
runs-on: ubuntu-latest | |
if: | | |
((github.event_name == 'pull_request') && (github.event.action != 'labeled')) || | |
(github.event.review.state == 'approved') || | |
(github.event_name == 'push') | |
strategy: | |
matrix: | |
python-version: | |
- "3.x" | |
steps: | |
- name: Cancel previous runs | |
uses: styfle/cancel-workflow-action@0.11.0 | |
with: | |
access_token: ${{ secrets.GITHUB_TOKEN }} | |
- uses: actions/checkout@v4 | |
- name: Set up Python${{ matrix.python-version }} | |
uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Install tox | |
run: | | |
python -m pip install tox | |
- name: Run linting suite | |
run: | | |
python -m tox -e lint | |
test-pypi: | |
name: test-${{ matrix.tox-env }} (Python${{ matrix.python-version }}) | |
needs: lint | |
if: | | |
(github.event_name == 'pull_request') && !contains(github.event.pull_request.labels.*.name, 'approved') | |
runs-on: ubuntu-latest | |
env: | |
ESMF_VERSION: "v8.5.0" | |
strategy: | |
matrix: | |
include: | |
- tox-env: "py39" | |
python-version: "3.9" | |
steps: | |
- uses: actions/checkout@v4.1.1 | |
- name: Install NetCDF | |
run: | | |
sudo apt-get -y update | |
sudo apt install libnetcdf-dev libnetcdff-dev | |
- name: Install ESMF | |
uses: esmf-org/install-esmf-action@v1 | |
env: | |
ESMF_NETCDF: nc-config | |
with: | |
cache: true | |
version: ${{ env.ESMF_VERSION }} | |
- name: Set up Python${{ matrix.python-version }} | |
uses: actions/setup-python@v4.7.1 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Install xhydro (with esmpy) | |
run: | | |
make dev | |
env: | |
ESMF_VERSION: ${{ env.ESMF_VERSION }} | |
- name: Check versions | |
run: | | |
python -m pip list | |
echo ESMF_VERSION=$(cat $ESMFMKFILE | grep "ESMF_VERSION_STRING=" | awk -F= '{print $2}' | tr -d "'") | |
python -m pip check || true | |
- name: Test with pytest | |
run: | | |
make test | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
test-conda: | |
name: Test with Python${{ matrix.python-version }} (Anaconda) | |
needs: lint | |
if: | | |
contains(github.event.pull_request.labels.*.name, 'approved') || | |
(github.event.review.state == 'approved') || | |
(github.event_name == 'push') | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
python-version: ["3.9", "3.10", "3.11"] | |
defaults: | |
run: | |
shell: bash -l {0} | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Setup Conda (Micromamba) with Python${{ matrix.python-version }} | |
uses: mamba-org/setup-micromamba@v1 | |
with: | |
cache-downloads: true | |
environment-file: environment-dev.yml | |
create-args: >- | |
mamba | |
python=${{ matrix.python-version }} | |
- name: Conda and Mamba versions | |
run: | | |
mamba --version | |
echo "micromamba $(micromamba --version)" | |
- name: Install xHydro | |
run: | | |
python -m pip install --no-deps . | |
- name: Check versions | |
run: | | |
conda list | |
echo ESMF_VERSION=$(cat $ESMFMKFILE | grep "ESMF_VERSION_STRING=" | awk -F= '{print $2}' | tr -d "'") | |
python -m pip check || true | |
- name: Test with pytest | |
run: | | |
python -m pytest --cov xhydro | |
- name: Report coverage | |
run: | | |
python -m coveralls | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
COVERALLS_FLAG_NAME: run-Python${{ matrix.python-version }}-conda | |
COVERALLS_PARALLEL: true | |
COVERALLS_SERVICE_NAME: github | |
test-notebooks: | |
name: Test Notebooks | |
needs: lint | |
if: | | |
contains(github.event.pull_request.labels.*.name, 'approved') || | |
(github.event.review.state == 'approved') || | |
(github.event_name == 'push') | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
python-version: ["3.9", "3.11"] | |
defaults: | |
run: | |
shell: bash -l {0} | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Setup Conda (Micromamba) with Python${{ matrix.python-version }} | |
uses: mamba-org/setup-micromamba@v1 | |
with: | |
cache-downloads: true | |
environment-file: environment-dev.yml | |
create-args: >- | |
mamba | |
python=${{ matrix.python-version }} | |
- name: Conda and Mamba versions | |
run: | | |
mamba --version | |
echo "micromamba $(micromamba --version)" | |
- name: Install xHydro | |
run: | | |
python -m pip install --no-deps . | |
- name: Check versions | |
run: | | |
conda list | |
echo ESMF_VERSION=$(cat $ESMFMKFILE | grep "ESMF_VERSION_STRING=" | awk -F= '{print $2}' | tr -d "'") | |
python -m pip check || true | |
- name: Test Notebooks | |
run: | | |
make test-notebooks | |
finish: | |
needs: | |
- test-conda | |
- test-notebooks | |
runs-on: ubuntu-latest | |
container: python:3-slim | |
steps: | |
- name: Coveralls Finished | |
run: | | |
python -m pip install --upgrade coveralls | |
python -m coveralls --finish | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
COVERALLS_SERVICE_NAME: github |