1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133
|
name: CI
on:
push:
branches:
- 'master'
tags: [ 'v*' ]
pull_request:
branches:
- 'master'
schedule:
- cron: '0 6 * * *' # Daily 6AM UTC build
jobs:
docs:
name: Docs
runs-on: ubuntu-latest
steps:
- name: Checkhout
uses: actions/checkout@v4
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: 3.13
- uses: actions/cache@v4
with:
path: ~/.cache/pip
key: ${{ runner.os }}-pip-3.13-${{ hashFiles('requirements/*.txt') }}
restore-keys: |
${{ runner.os }}-pip-
- run: make setup
- run: make -C docs html SPHINXOPTS="-W -E"
lint:
name: Lint
runs-on: ubuntu-latest
timeout-minutes: 5
steps:
- name: Checkhout
uses: actions/checkout@v4
- name: Setup Python 3.13
uses: actions/setup-python@v5
with:
python-version: 3.13
- uses: actions/cache@v4
with:
path: ~/.cache/pip
key: ${{ runner.os }}-pip-3.9-${{ hashFiles('requirements/*.txt') }}
restore-keys: |
${{ runner.os }}-pip-
- run: make setup
- run: pre-commit run --all-files
test:
name: Test
runs-on: ubuntu-latest
strategy:
matrix:
pyver: ['3.9', '3.10', '3.11', '3.12', '3.13']
experimental: [false]
include:
- pyver: "3.14.0-alpha.2"
experimental: true
fail-fast: true
continue-on-error: ${{ matrix.experimental }}
steps:
- name: Checkhout
uses: actions/checkout@v4
- name: Setup Python ${{ matrix.pyver }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.pyver }}
allow-prereleases: true
cache: 'pip'
cache-dependency-path: 'requirements/*.txt'
- name: Install dependencies
uses: py-actions/py-dependency-install@v4
with:
path: requirements/ci.txt
- name: Run mypy
run: |
mypy
- name: Run tests
env:
PYTHONPATH: .
run: |
pytest tests
python -m coverage xml
- name: Upload coverage
uses: codecov/codecov-action@v5
with:
fail_ci_if_error: true
token: ${{ secrets.CODECOV_TOKEN }}
check: # This job does nothing and is only used for the branch protection
if: always()
needs: [docs, lint, test]
runs-on: ubuntu-latest
steps:
- name: Decide whether the needed jobs succeeded or failed
uses: re-actors/alls-green@release/v1
with:
jobs: ${{ toJSON(needs) }}
deploy:
name: Deploy
needs: check
environment: release
runs-on: ubuntu-latest
if: github.event_name == 'push' && contains(github.ref, 'refs/tags/')
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: 3.13
- name: Install dependencies
run:
python -m pip install -U pip wheel setuptools build twine
- name: Build dists
run: |
python -m build
- name: Make Release
uses: aio-libs/create-release@v1.6.6
with:
changes_file: CHANGES.rst
name: aiojobs
version_file: aiojobs/__init__.py
github_token: ${{ secrets.GITHUB_TOKEN }}
pypi_token: ${{ secrets.PYPI_TOKEN }}
dist_dir: dist
fix_issue_regex: "`#(\\d+) <https://github.com/aio-libs/aiojobs/issues/\\1>`"
fix_issue_repl: "(#\\1)"
|