@@ -15,45 +15,57 @@ jobs:
1515 fail-fast : false
1616 matrix :
1717 include :
18- - { name: "3.8", python: "3.8", tox: py38 }
19- - { name: "lowest", python: "3.8", tox: py38-lowest }
20- - { name: "3.12-apispecdev", python: "3.12", tox: py312-apispecdev }
18+ - { name: "3.10", tox: py310 }
19+ - { name: "3.14", tox: py314 }
20+ - { name: "lowest", tox: py310-lowest }
21+ - { name: "3.14-apispecdev", tox: py314-apispecdev }
2122 steps :
22- - uses : actions/checkout@v3.1.0
23- - uses : actions /setup-python@v4.3.0
23+ - uses : actions/checkout@v6
24+ - uses : astral-sh /setup-uv@v7
2425 with :
25- python-version : ${{ matrix.python }}
26- - run : python -m pip install --upgrade pip
27- - run : python -m pip install tox
28- - run : python -m tox -e ${{ matrix.tox }}
29-
26+ enable-cache : true
27+ - run : uv run tox -e ${{ matrix.tox }}
28+ build :
29+ name : Build package
30+ runs-on : ubuntu-latest
31+ steps :
32+ - uses : actions/checkout@v6
33+ - uses : astral-sh/setup-uv@v7
34+ with :
35+ enable-cache : true
36+ - run : uv build
37+ - run : uvx twine check --strict dist/*
38+ - name : Store the distribution packages
39+ uses : actions/upload-artifact@v7
40+ with :
41+ name : python-package-distributions
42+ path : dist/
43+ # this duplicates pre-commit.ci, so only run it on tags
44+ # it guarantees that linting is passing prior to a release
3045 lint-pre-release :
31- name : lint
3246 if : startsWith(github.ref, 'refs/tags')
3347 runs-on : ubuntu-latest
3448 steps :
35- - uses : actions/checkout@v3.1.0
36- - uses : actions /setup-python@v4.3.0
49+ - uses : actions/checkout@v6
50+ - uses : astral-sh /setup-uv@v7
3751 with :
38- python-version : " 3.11"
39- - run : python -m pip install --upgrade pip
40- - run : python -m pip install tox
41- - run : python -m tox -e lint
42- release :
43- needs : [tests, lint-pre-release]
52+ enable-cache : true
53+ - run : uv run tox -e lint
54+ publish-to-pypi :
4455 name : PyPI release
45- if : startsWith(github.ref, 'refs/tags')
56+ if : startsWith(github.ref, 'refs/tags/')
57+ needs : [build, tests, lint-pre-release]
4658 runs-on : ubuntu-latest
59+ environment :
60+ name : pypi
61+ url : https://pypi.org/p/apispec-webframeworks
62+ permissions :
63+ id-token : write
4764 steps :
48- - uses : actions/checkout@v3.1.0
49- - uses : actions/setup-python@v4.3.0
65+ - name : Download all the dists
66+ uses : actions/download-artifact@v7
5067 with :
51- python-version : " 3.11"
52- - name : install requirements
53- run : python -m pip install build twine
54- - name : build dists
55- run : python -m build
56- - name : check package metadata
57- run : twine check dist/*
58- - name : publish
59- run : twine upload -u __token__ -p ${{ secrets.PYPI_API_TOKEN }} dist/*
68+ name : python-package-distributions
69+ path : dist/
70+ - name : Publish distribution to PyPI
71+ uses : pypa/gh-action-pypi-publish@release/v1
0 commit comments