CI #558
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 | |
env: | |
micromamba_version: 2 | |
on: | |
push: | |
branches: [ main ] | |
pull_request: | |
branches: [ main ] | |
release: | |
types: | |
- created | |
schedule: | |
- cron: "0 0 * * *" # Daily “At 00:00” UTC | |
workflow_dispatch: | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
jobs: | |
lint: | |
name: lint and style checks | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Set up Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: "3.13" | |
- name: Install dependencies | |
run: | | |
python -m pip install --upgrade pip | |
pip install black black[jupyter] ruff | |
- name: Black style check | |
run: | | |
black --check . | |
- name: Lint with ruff | |
run: | | |
ruff check . | |
build_0: | |
name: wradlib unit tests - linux | |
runs-on: ubuntu-latest | |
needs: [lint] | |
defaults: | |
run: | |
shell: bash -l {0} | |
env: | |
WRADLIB_DATA: ./wradlib-data | |
CONDA_ENV_FILE: ci/requirements/unittests.yml | |
strategy: | |
fail-fast: false | |
matrix: | |
python-version: ["3.10", "3.13"] | |
numpy-version: ["1", "2"] | |
exclude: | |
- python-version: "3.13" | |
numpy-version: "1" | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Install micromamba environment | |
uses: mamba-org/setup-micromamba@v2 | |
with: | |
environment-name: wradlib-tests | |
environment-file: ${{env.CONDA_ENV_FILE}} | |
cache-environment: true | |
cache-environment-key: "${{runner.os}}-${{runner.arch}}-py${{env.PYTHON_VERSION}}-np${{matrix.numpy_version}}-${{env.TODAY}}-${{hashFiles(env.CONDA_ENV_FILE)}}" | |
create-args: >- | |
python=${{matrix.python-version}} | |
numpy=${{matrix.numpy-version}} | |
- name: Install wradlib | |
run: | | |
python -m pip install . --no-deps | |
- name: Install wradlib-data | |
run: | | |
python -m pip install git https://github.com/wradlib/wradlib-data@pooch | |
mkdir ./wradlib-data | |
- name: Version Info | |
run: | | |
python -c "import wradlib; print(wradlib.version.version)" | |
python -c "import wradlib; print(wradlib.show_versions())" | |
- name: Test with pytest | |
env: | |
WRADLIB_EARTHDATA_BEARER_TOKEN: ${{ secrets.WRADLIB_EARTHDATA_BEARER_TOKEN }} | |
run: | | |
echo $WRADLIB_DATA | |
export WRADLIB_DATA=`realpath $WRADLIB_DATA` | |
pytest -n auto --dist loadfile --verbose --doctest-modules --doctest-plus --durations=15 --cov-report xml:coverage.xml --cov=wradlib --pyargs wradlib | |
- name: Upload coverage to Codecov | |
uses: codecov/codecov-action@v5 | |
with: | |
files: ./coverage.xml | |
flags: unittests | |
env_vars: RUNNER_OS,PYTHON_VERSION | |
name: codecov-gha | |
token: ${{ secrets.CODECOV_TOKEN }} | |
fail_ci_if_error: false | |
build_0a: | |
name: wradlib unit tests - linux - no GDAL | |
runs-on: ubuntu-latest | |
needs: [ lint ] | |
defaults: | |
run: | |
shell: bash -l {0} | |
env: | |
WRADLIB_DATA: ./wradlib-data | |
CONDA_ENV_FILE: ci/requirements/unittests.yml | |
strategy: | |
fail-fast: false | |
matrix: | |
python-version: [ "3.13" ] | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Install micromamba environment | |
uses: mamba-org/setup-micromamba@v2 | |
with: | |
environment-name: wradlib-tests | |
environment-file: ${{env.CONDA_ENV_FILE}} | |
cache-environment: true | |
cache-environment-key: "${{runner.os}}-${{runner.arch}}-py${{env.PYTHON_VERSION}}-${{env.TODAY}}-${{hashFiles(env.CONDA_ENV_FILE)}}" | |
create-args: >- | |
python=${{matrix.python-version}} | |
- name: Remove GDAL | |
run: | | |
micromamba remove --force --offline gdal | |
- name: Install wradlib | |
run: | | |
python -m pip install . --no-deps | |
- name: Install wradlib-data | |
run: | | |
python -m pip install git https://github.com/wradlib/wradlib-data@pooch | |
mkdir ./wradlib-data | |
- name: Version Info | |
run: | | |
python -c "import wradlib; print(wradlib.version.version)" | |
python -c "import wradlib; print(wradlib.show_versions())" | |
- name: Test with pytest | |
env: | |
WRADLIB_EARTHDATA_BEARER_TOKEN: ${{ secrets.WRADLIB_EARTHDATA_BEARER_TOKEN }} | |
run: | | |
echo $WRADLIB_DATA | |
export WRADLIB_DATA=`realpath $WRADLIB_DATA` | |
pytest -n auto --dist loadfile --verbose --doctest-modules --doctest-plus --durations=15 --cov-report xml:coverage.xml --cov=wradlib --pyargs wradlib | |
- name: Upload coverage to Codecov | |
uses: codecov/codecov-action@v5 | |
with: | |
files: ./coverage.xml | |
flags: unittests | |
env_vars: RUNNER_OS,PYTHON_VERSION | |
name: codecov-gha | |
token: ${{ secrets.CODECOV_TOKEN }} | |
fail_ci_if_error: false | |
build_1: | |
name: wradlib unit tests - macosx | |
runs-on: macos-latest | |
needs: [lint] | |
defaults: | |
run: | |
shell: bash -l {0} | |
env: | |
WRADLIB_DATA: ./wradlib-data | |
CONDA_ENV_FILE: ci/requirements/unittests.yml | |
strategy: | |
fail-fast: false | |
matrix: | |
python-version: ["3.13"] | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Install micromamba environment | |
uses: mamba-org/setup-micromamba@v2 | |
with: | |
environment-name: wradlib-tests | |
environment-file: ${{env.CONDA_ENV_FILE}} | |
cache-environment: true | |
cache-environment-key: "${{runner.os}}-${{runner.arch}}-py${{env.PYTHON_VERSION}}-${{env.TODAY}}-${{hashFiles(env.CONDA_ENV_FILE)}}" | |
create-args: >- | |
python=${{matrix.python-version}} | |
- name: Install wradlib | |
run: | | |
cat "$HOME/.bash_profile" | |
python -m pip install . --no-deps | |
- name: Install wradlib-data | |
run: | | |
python -m pip install git https://github.com/wradlib/wradlib-data@pooch | |
mkdir ./wradlib-data | |
- name: Version Info | |
run: | | |
python -c "import wradlib; print(wradlib.version.version)" | |
python -c "import wradlib; print(wradlib.show_versions())" | |
- name: Test with pytest | |
env: | |
WRADLIB_EARTHDATA_BEARER_TOKEN: ${{ secrets.WRADLIB_EARTHDATA_BEARER_TOKEN }} | |
run: | | |
echo $WRADLIB_DATA | |
export WRADLIB_DATA=`python -c "import os, sys; print(os.path.realpath(sys.argv[1]))" $WRADLIB_DATA` | |
pytest -n auto --verbose --doctest-modules --doctest-plus --durations=15 --cov-report xml:coverage.xml --cov=wradlib --pyargs wradlib | |
- name: Upload coverage to Codecov | |
uses: codecov/codecov-action@v5 | |
with: | |
files: ./coverage.xml | |
flags: unittests | |
env_vars: RUNNER_OS,PYTHON_VERSION | |
name: codecov-gha | |
token: ${{ secrets.CODECOV_TOKEN }} | |
fail_ci_if_error: false | |
build_2: | |
name: wradlib unit tests - windows | |
runs-on: windows-latest | |
needs: [lint] | |
defaults: | |
run: | |
shell: powershell | |
env: | |
WRADLIB_DATA: ./wradlib-data | |
CONDA_ENV_FILE: ci/requirements/unittests.yml | |
strategy: | |
fail-fast: false | |
matrix: | |
python-version: ["3.13"] | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Install micromamba environment | |
uses: mamba-org/setup-micromamba@v2 | |
with: | |
init-shell: powershell | |
environment-name: wradlib-tests | |
environment-file: ${{env.CONDA_ENV_FILE}} | |
cache-environment: true | |
cache-environment-key: "${{runner.os}}-${{runner.arch}}-py${{env.PYTHON_VERSION}}-${{env.TODAY}}-${{hashFiles(env.CONDA_ENV_FILE)}}" | |
create-args: >- | |
python=${{matrix.python-version}} | |
- name: Install wradlib | |
run: | | |
python -m pip install . --no-deps | |
- name: Install wradlib-data | |
run: | | |
python -m pip install git https://github.com/wradlib/wradlib-data@pooch | |
mkdir ./wradlib-data | |
- name: Version Info | |
run: | | |
python -c "import wradlib; print(wradlib.version.version)" | |
python -c "import wradlib; print(wradlib.show_versions())" | |
- name: Test with pytest | |
env: | |
WRADLIB_EARTHDATA_BEARER_TOKEN: ${{ secrets.WRADLIB_EARTHDATA_BEARER_TOKEN }} | |
run: | | |
pytest --verbose --doctest-modules --doctest-plus --durations=15 --cov-report xml:coverage.xml --cov=wradlib --pyargs wradlib | |
- name: Upload coverage to Codecov | |
uses: codecov/codecov-action@v5 | |
with: | |
files: ./coverage.xml | |
flags: unittests | |
env_vars: RUNNER_OS,PYTHON_VERSION | |
name: codecov-gha | |
token: ${{ secrets.CODECOV_TOKEN }} | |
fail_ci_if_error: false | |
build_3: | |
name: wradlib notebook tests | |
runs-on: ubuntu-20.04 | |
needs: [lint] | |
continue-on-error: true | |
defaults: | |
run: | |
shell: bash -l {0} | |
env: | |
WRADLIB_DATA: ./wradlib-data | |
CONDA_ENV_FILE: ci/requirements/notebooktests.yml | |
strategy: | |
fail-fast: false | |
matrix: | |
python-version: ["3.12"] | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Install micromamba environment | |
uses: mamba-org/setup-micromamba@v2 | |
with: | |
environment-name: wradlib-tests | |
environment-file: ${{env.CONDA_ENV_FILE}} | |
cache-environment: true | |
cache-environment-key: "${{runner.os}}-${{runner.arch}}-py${{env.PYTHON_VERSION}}-${{env.TODAY}}-${{hashFiles(env.CONDA_ENV_FILE)}}" | |
create-args: >- | |
python=${{matrix.python-version}} | |
- name: Install wradlib | |
run: | | |
echo "WRADLIB_TAG=`git name-rev --name-only --tags HEAD`" >> $GITHUB_ENV | |
python -m pip install . --no-deps | |
- name: Install wradlib-data | |
run: | | |
python -m pip install git https://github.com/wradlib/wradlib-data@pooch | |
mkdir ./wradlib-data | |
- name: Clone wradlib-notebooks | |
run: | | |
git clone --depth 1 https://github.com/wradlib/wradlib-notebooks.git notebooks | |
cd notebooks | |
echo "NOTEBOOKS_COMMIT=`git rev-parse HEAD`" >> $GITHUB_ENV | |
- name: Version Info | |
run: | | |
echo "WRADLIB_TAG=`git name-rev --name-only --tags HEAD`" >> $GITHUB_ENV | |
echo "WRADLIB_VERSION=`python -c "import wradlib; print(wradlib.version.version)"`" | |
python -c "import wradlib; print(wradlib.version.version)" | |
python -c "import wradlib; print(wradlib.show_versions())" | |
- name: Test with pytest | |
env: | |
WRADLIB_EARTHDATA_BEARER_TOKEN: ${{ secrets.WRADLIB_EARTHDATA_BEARER_TOKEN }} | |
run: | | |
echo $WRADLIB_DATA | |
export WRADLIB_DATA=`realpath $WRADLIB_DATA` | |
pytest -n auto --verbose --durations=15 --cov-report xml:coverage.xml --cov=wradlib --pyargs notebooks | |
- name: Commit files | |
if: github.event_name == 'push' || github.event_name == 'release' | |
run: | | |
cd notebooks | |
git config --global user.email "[email protected]" | |
git config --global user.name "wradlib-docs-bot" | |
git checkout --orphan render | |
git add --all . | |
git commit -m "Rendering at wradlib-notebooks commit $NOTEBOOKS_COMMIT for wradlib version $WRADLIB_VERSION" | |
- name: Push changes | |
if: github.event_name == 'push' || github.event_name == 'release' | |
run: | | |
if [ $WRADLIB_TAG == 'undefined' ]; then | |
BRANCH=devel | |
else | |
BRANCH=$WRADLIB_TAG | |
fi | |
cd notebooks | |
git push https://${{ secrets.WRADLIB_DOCS_BOT_API_TOKEN }}@github.com/wradlib/wradlib-notebooks.git render:$BRANCH -fq | |
- name: Upload coverage to Codecov | |
uses: codecov/codecov-action@v5 | |
with: | |
files: ./coverage.xml | |
flags: notebooktests | |
env_vars: RUNNER_OS,PYTHON_VERSION | |
name: codecov-gha | |
token: ${{ secrets.CODECOV_TOKEN }} | |
fail_ci_if_error: false | |
trigger_rtd: | |
if: github.event_name == 'push' || github.event_name == 'release' | |
needs: [lint, build_0, build_3] | |
name: trigger readthedocs | |
runs-on: ubuntu-latest | |
defaults: | |
run: | |
shell: bash -l {0} | |
env: | |
RTD_TOKEN: ${{ secrets.RTD_TOKEN_NEW }} | |
RTD_URL: ${{ secrets.RTD_URL_NEW }} | |
steps: | |
- name: trigger readthedocs | |
run: | | |
echo "triggering" | |
curl -X POST -H "Authorization: Token $RTD_TOKEN" "$RTD_URL" | |
upload_testpypi: | |
if: github.event_name == 'push' | |
needs: [lint, build_0, build_1] | |
name: deploy to testpypi | |
runs-on: ubuntu-latest | |
defaults: | |
run: | |
shell: bash -l {0} | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Set up Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: "3.13" | |
- name: Install dependencies | |
run: | | |
python -m pip install --upgrade pip | |
pip install build setuptools wheel twine toml-cli | |
- name: Package and Upload | |
env: | |
TWINE_USERNAME: __token__ | |
TWINE_PASSWORD: ${{ secrets.TEST_PYPI_API_TOKEN }} | |
run: | | |
toml set --toml-path pyproject.toml tool.hatch.version.raw-options.local_scheme "no-local-version" | |
git update-index --assume-unchanged pyproject.toml | |
python -m build | |
twine upload --verbose --repository testpypi dist/* | |
upload_pypi: | |
if: github.event_name == 'release' | |
needs: [lint, build_0, build_1] | |
name: deploy to pypi | |
runs-on: ubuntu-latest | |
defaults: | |
run: | |
shell: bash -l {0} | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Set up Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: "3.13" | |
- name: Install dependencies | |
run: | | |
python -m pip install --upgrade pip | |
pip install build setuptools wheel twine | |
- name: Package and Upload | |
env: | |
TWINE_USERNAME: __token__ | |
TWINE_PASSWORD: ${{ secrets.PYPI_API_TOKEN }} | |
run: | | |
python -m build | |
twine upload dist/* |