summaryrefslogtreecommitdiff
path: root/.github/workflows/check-and-publish.yml
diff options
context:
space:
mode:
Diffstat (limited to '.github/workflows/check-and-publish.yml')
-rw-r--r--.github/workflows/check-and-publish.yml87
1 files changed, 87 insertions, 0 deletions
diff --git a/.github/workflows/check-and-publish.yml b/.github/workflows/check-and-publish.yml
new file mode 100644
index 0000000..10831bf
--- /dev/null
+++ b/.github/workflows/check-and-publish.yml
@@ -0,0 +1,87 @@
+name: Check and publish
+
+on:
+ push:
+ branches: [ master ]
+
+ pull_request:
+ branches: [ master ]
+
+ release:
+ types: [created]
+
+
+jobs:
+ checks:
+ strategy:
+ fail-fast: false
+ matrix:
+ platform: [windows-latest, ubuntu-latest, macos-latest]
+ python-version: ["2.7", "3.6", "3.7", "3.8", "3.9"]
+
+ name: Python ${{ matrix.python-version }} on ${{ matrix.platform }}
+ runs-on: ${{ matrix.platform }}
+
+ timeout-minutes: 20
+
+ steps:
+ - uses: actions/checkout@v2
+
+ - uses: actions/setup-python@v2
+ with:
+ python-version: ${{ matrix.python-version }}
+
+ - name: Tokens
+ shell: python
+ env:
+ CDSAPIRC: ${{ secrets.CDSAPIRC }}
+
+ run: |
+ from __future__ import print_function
+ import os
+ for n in ('CDSAPIRC',):
+ m = os.path.expanduser("~/." + n.lower())
+ if os.environ[n]:
+ with open(m, "w") as f:
+ print(os.environ[n], file=f)
+
+ - name: Tests
+ run: |
+ python setup.py develop
+ pip install pytest
+ pytest
+
+ deploy:
+
+ if: ${{ github.event_name == 'release' }}
+
+ name: Upload to Pypi
+ needs: checks
+
+ runs-on: ubuntu-latest
+
+ steps:
+ - uses: actions/checkout@v2
+ - name: Set up Python
+ uses: actions/setup-python@v2
+ with:
+ python-version: '3.8'
+ - name: Install dependencies
+ run: |
+ python -m pip install --upgrade pip
+ pip install setuptools wheel twine
+ - name: Build and publish
+ env:
+ TWINE_USERNAME: ${{ secrets.PYPI_USERNAME }}
+ TWINE_PASSWORD: ${{ secrets.PYPI_PASSWORD }}
+ run: |
+ python setup.py sdist
+ twine upload dist/*
+
+ - name: Notify climetlab
+ uses: mvasigh/dispatch-action@main
+ with:
+ token: ${{ secrets.NOTIFY_ECMWFLIBS }}
+ repo: climetlab
+ owner: ecmwf
+ event_type: cdsapi-updated