Implemented automatic uploading to PyPI

Closes #388
pull/409/merge
Ashley Whetter 7 months ago
parent 006142dbad
commit 61c52e0664

@ -0,0 +1,85 @@
name: Publish Python 🐍 distribution 📦 to PyPI
on: push
jobs:
build:
name: Build distribution 📦
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: "3.x"
- name: Install pypa/build
run: >-
python3 -m
pip install
build
--user
- name: Build a binary wheel and a source tarball
run: python3 -m build
- name: Store the distribution packages
uses: actions/upload-artifact@v3
with:
name: python-package-distributions
path: dist/
publish-to-pypi:
name: >-
Publish Python 🐍 distribution 📦 to PyPI
if: startsWith(github.ref, 'refs/tags/') # only publish to PyPI on tag pushes
needs:
- build
runs-on: ubuntu-latest
environment:
name: pypi
url: https://pypi.org/p/sphinx-autoapi
permissions:
id-token: write # IMPORTANT: mandatory for trusted publishing
steps:
- name: Download all the dists
uses: actions/download-artifact@v3
with:
name: python-package-distributions
path: dist/
- name: Publish distribution 📦 to PyPI
uses: pypa/gh-action-pypi-publish@release/v1
github-release:
name: >-
Sign the Python 🐍 distribution 📦 with Sigstore
and upload them to GitHub Release
needs:
- publish-to-pypi
runs-on: ubuntu-latest
permissions:
contents: write # IMPORTANT: mandatory for making GitHub Releases
id-token: write # IMPORTANT: mandatory for sigstore
steps:
- name: Download all the dists
uses: actions/download-artifact@v3
with:
name: python-package-distributions
path: dist/
- name: Sign the dists with Sigstore
uses: sigstore/gh-action-sigstore-python@v1.2.3
with:
inputs: >-
./dist/*.tar.gz
./dist/*.whl
- name: Upload artifact signatures to GitHub Release
env:
GITHUB_TOKEN: ${{ github.token }}
# Upload to GitHub Release using the `gh` CLI.
# `dist/` contains the built packages, and the
# sigstore-produced signatures and certificates.
run: >-
gh release upload
'${{ github.ref_name }}' dist/**
--repo '${{ github.repository }}'

@ -0,0 +1 @@
Implemented automatic uploading to PyPI

@ -22,9 +22,7 @@ Preparation
Release
-------
.. code-block:: bash
git clean -idx
tox -e release
git tag vX.X.X
git push --tags
Create a new release in github that tags the commit
and uses the built release notes as the description.
The tag created by the release will trigger the github actions to
build and upload the package to PyPI.

@ -60,14 +60,4 @@ deps =
towncrier
importlib-resources<6 # pinned due to https://github.com/twisted/towncrier/issues/528
commands =
towncrier {posargs:check}
[testenv:release]
skip_install = true
deps =
build
twine
commands =
python -c "import shutil, os; os.path.isdir('dist') and shutil.rmtree('dist')"
python -m build
twine upload dist/*
towncrier {posargs:check}
Loading…
Cancel
Save