Bump all CI actions and update Python versions #187
This file contains hidden or 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/CD | |
on: | |
push: | |
branches: | |
- "master" | |
tags: | |
- "*" | |
pull_request: | |
branches: | |
- "*" | |
schedule: | |
# Run weekly on Saturday | |
- cron: "37 3 * * SAT" | |
jobs: | |
lint: | |
name: Run the linters | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
python-version: ["3.12"] | |
steps: | |
- uses: actions/[email protected] | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/[email protected] | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Get pip cache dir | |
id: pip-cache | |
run: | | |
echo "::set-output name=dir::$(pip cache dir)" | |
- name: Cache | |
uses: actions/[email protected] | |
with: | |
path: ${{ steps.pip-cache.outputs.dir }} | |
key: ${{ matrix.python-version }}-v1-${{ hashFiles('**/setup.cfg') }}-${{ hashFiles('**/tox.ini') }} | |
restore-keys: | | |
${{ matrix.python-version }}-v1- | |
- name: Install dependencies | |
run: | | |
python -m pip install --upgrade pip | |
python -m pip install --upgrade tox | |
- name: Test with tox | |
run: | | |
tox -e lint | |
tox -e manifest | |
tox -e changelog -- --draft | |
tox -e docs | |
tox -e pypi-description | |
test: | |
name: Run the test suite | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
max-parallel: 5 | |
matrix: | |
python-version: ["3.11", "3.12", "3.13"] | |
steps: | |
- uses: actions/[email protected] | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/[email protected] | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Get pip cache dir | |
id: pip-cache | |
run: | | |
echo "::set-output name=dir::$(pip cache dir)" | |
- name: Cache | |
uses: actions/[email protected] | |
with: | |
path: ${{ steps.pip-cache.outputs.dir }} | |
key: ${{ matrix.python-version }}-v1-${{ hashFiles('**/setup.cfg') }}-${{ hashFiles('**/tox.ini') }} | |
restore-keys: | | |
${{ matrix.python-version }}-v1- | |
- name: Install dependencies | |
run: | | |
python -m pip install --upgrade pip | |
python -m pip install -e .[test] | |
- name: Install GDAL | |
run: | | |
sudo add-apt-repository ppa:ubuntugis/ppa | |
sudo apt-get update | |
sudo apt-get install gdal-bin libgdal-dev | |
read GDAL_VERSION <<< $(gdal-config --version) | |
echo $GDAL_VERSION | |
python -m pip install GDAL==$GDAL_VERSION | |
- name: Test | |
run: coverage run -m pytest | |
- name: Upload coverage data | |
uses: actions/[email protected] | |
with: | |
name: coverage-data-${{ matrix.python-version }} | |
path: .coverage.* | |
include-hidden-files: true | |
if-no-files-found: ignore | |
coverage: | |
name: Collect and report coverage | |
runs-on: "ubuntu-latest" | |
needs: [test] | |
steps: | |
- uses: actions/[email protected] | |
- uses: actions/[email protected] | |
with: | |
# Use latest, so it understands all syntax. | |
python-version: "3.10" | |
- run: python -m pip install --upgrade coverage | |
- name: Download coverage data. | |
uses: actions/[email protected] | |
with: | |
pattern: coverage-data-* | |
merge-multiple: true | |
- name: Combine coverage & check percentage | |
run: | | |
python -m coverage combine | |
python -m coverage html | |
python -m coverage report | |
python -m coverage xml | |
- name: Upload HTML report if check failed. | |
uses: actions/[email protected] | |
with: | |
name: html-report | |
path: htmlcov | |
if: ${{ failure() }} | |
- name: Upload XML report | |
uses: actions/[email protected] | |
with: | |
name: coverage.xml | |
path: coverage.xml | |
codecov: | |
name: Upload coverage status to codecov.io | |
runs-on: ubuntu-latest | |
needs: [coverage] | |
steps: | |
- name: Checkout | |
uses: actions/[email protected] | |
- name: Set up Python 3.10 | |
uses: actions/[email protected] | |
with: | |
python-version: "3.10" | |
- name: Download coverage data. | |
uses: actions/[email protected] | |
with: | |
name: coverage.xml | |
- name: Upload coverage to Codecov | |
uses: codecov/[email protected] | |
with: | |
files: coverage.xml | |
verbose: true | |
build: | |
name: Build Python π distributions π¦ | |
needs: [coverage] | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/[email protected] | |
- name: Set up Python 3.10 | |
uses: actions/[email protected] | |
with: | |
python-version: "3.10" | |
- name: Get pip cache dir | |
id: pip-cache | |
run: echo "dir::$(pip cache dir)" >> $GITHUB_OUTPUT | |
- name: Cache | |
uses: actions/[email protected] | |
with: | |
path: ${{ steps.pip-cache.outputs.dir }} | |
key: ${{ matrix.python-version }}-v1-${{ hashFiles('**/setup.cfg') }}-${{ hashFiles('**/tox.ini') }} | |
restore-keys: | | |
${{ matrix.python-version }}-v1- | |
- name: Install dependencies | |
run: | | |
python -m pip install --upgrade pip | |
python -m pip install --upgrade tox | |
- name: Build a binary wheel and a source tarball | |
run: tox -e build | |
- name: Upload distributions | |
uses: actions/[email protected] | |
with: | |
name: dist | |
path: "dist/*" | |
publish: | |
name: Publish Python π distributions π¦ to PyPI and TestPyPI | |
if: startsWith(github.ref, 'refs/tags') | |
needs: [build] | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/[email protected] | |
- name: Download distributions | |
uses: actions/[email protected] | |
with: | |
name: dist | |
path: dist/ | |
- name: Publish distribution π¦ to Test PyPI | |
uses: pypa/[email protected] | |
with: | |
password: ${{ secrets.TEST_PYPI_API_TOKEN }} | |
repository_url: https://test.pypi.org/legacy/ | |
verify_metadata: false | |
skip_existing: true | |
verbose: true | |
print_hash: true | |
- name: Publish distribution π¦ to PyPI | |
if: startsWith(github.ref, 'refs/tags') | |
uses: pypa/[email protected] | |
with: | |
password: ${{ secrets.PYPI_API_TOKEN }} | |
verify_metadata: false | |
verbose: true | |
print_hash: true |