CI #2106
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: CI # based on https://github.com/pydata/xarray/blob/master/.github/workflows/ci.yaml | |
on: | |
pull_request: | |
schedule: | |
- cron: "0 23 * * 0" # Sun 23:00 UTC | |
workflow_dispatch: # allows you to trigger the workflow run manually | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
jobs: | |
detect-ci-trigger: | |
name: detect ci trigger | |
runs-on: ubuntu-latest | |
if: github.event_name == 'push' || github.event_name == 'pull_request' | |
outputs: | |
triggered: ${{ steps.detect-trigger.outputs.trigger-found }} | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
fetch-depth: 2 | |
- uses: xarray-contrib/[email protected] | |
id: detect-trigger | |
with: | |
keyword: "[skip-ci]" | |
minimum-test: # Runs testing suite with minimal dependencies | |
name: Test minimum dependencies, python 3.9 | |
runs-on: ubuntu-latest | |
needs: detect-ci-trigger | |
if: needs.detect-ci-trigger.outputs.triggered == 'false' | |
defaults: | |
run: | |
shell: bash -l {0} | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 # Fetch all history for all branches and tags. | |
- name: Set up conda | |
uses: conda-incubator/setup-miniconda@v2 | |
with: | |
auto-update-conda: false | |
channels: conda-forge | |
miniforge-variant: Mambaforge | |
activate-environment: climpred-minimum-tests | |
python-version: 3.9 | |
- name: Set up conda environment | |
run: | | |
mamba env update -f ci/requirements/minimum-tests.yml | |
- name: Conda info | |
run: conda info | |
- name: Conda list | |
run: conda list | |
- name: Cache datasets # pytest-xdist fails otherwise | |
run: | | |
python -c "import climpred; climpred.tutorial._cache_all()" | |
- name: Run tests | |
run: pytest -n 4 --durations=20 | |
maximum-test: # Runs testing suite with all optional dependencies | |
name: Test optional dependencies, python ${{ matrix.python-version }} | |
runs-on: ubuntu-latest | |
needs: detect-ci-trigger | |
if: needs.detect-ci-trigger.outputs.triggered == 'false' | |
defaults: | |
run: | |
shell: bash -l {0} | |
strategy: | |
fail-fast: false | |
matrix: | |
# python-version: [ "3.9", "3.10"] | |
env: [""] | |
include: | |
- env: "climpred-maximum-tests" | |
python-version: "3.9" | |
os: ubuntu-latest | |
- env: "climpred-maximum-tests" | |
python-version: "3.10" | |
os: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 # Fetch all history for all branches and tags. | |
- name: Setup micromamba | |
uses: mamba-org/setup-micromamba@v1 | |
with: | |
environment-file: ci/requirements/maximum-tests.yml | |
environment-name: climpred-maximum-tests | |
cache-environment: true | |
cache-environment-key: "${{runner.os}}-${{runner.arch}}-py${{matrix.python-version}}-${{env.TODAY}}-${{hashFiles(env.CONDA_ENV_FILE)}}" | |
create-args: >- | |
python=${{matrix.python-version}} | |
conda | |
- name: Conda info | |
run: conda info | |
- name: Conda list | |
run: conda list | |
- name: install | |
run: | | |
python -m pip install -e .[complete] | |
conda list xclim | |
- name: Cache datasets # pytest-xdist fails otherwise | |
run: python -c "import climpred; climpred.tutorial._cache_all()" | |
- name: Run tests | |
run: pytest -n 4 --durations=20 --cov=climpred --cov-report=xml | |
- name: Upload coverage to codecov | |
uses: codecov/codecov-action@v3 | |
with: | |
token: ${{ secrets.CODECOV_TOKEN }} | |
file: ./coverage.xml | |
fail_ci_if_error: false | |
doctest: # tests all docstrings | |
name: Doctests | |
runs-on: "ubuntu-latest" | |
defaults: | |
run: | |
shell: bash -l {0} | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: conda-incubator/setup-miniconda@v2 | |
with: | |
channels: conda-forge | |
miniforge-variant: Mambaforge | |
activate-environment: climpred-maximum-tests | |
auto-update-conda: false | |
python-version: 3.9 | |
- name: Install conda dependencies | |
run: | | |
mamba env update -f ci/requirements/maximum-tests.yml | |
- name: Install climpred | |
run: | | |
python -m pip install -e .[complete] | |
- name: Conda info | |
run: conda info | |
- name: Conda list | |
run: conda list | |
- name: Run doctests | |
run: | | |
python -m pytest --doctest-modules climpred --ignore climpred/tests | |
notebooks: # Checks that pre-compiled notebooks in docs still work. | |
runs-on: ubuntu-latest | |
defaults: | |
run: | |
shell: bash -l {0} | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Set up Conda | |
uses: conda-incubator/setup-miniconda@v2 | |
with: | |
auto-update-conda: false | |
channels: conda-forge | |
miniforge-variant: Mambaforge | |
activate-environment: climpred-docs | |
python-version: 3.9 | |
- name: Set up conda environment | |
run: | | |
mamba env update -f ci/requirements/docs.yml | |
- name: Conda info | |
run: conda info | |
- name: Conda list | |
run: conda list | |
- name: Test notebooks in docs | |
run: | | |
pushd docs | |
nbstripout source/*.ipynb source/examples/decadal/*.ipynb source/examples/monseas/*.ipynb examples/subseasonal/*ly-subx-example.html | |
make -j4 html | |
popd |