Publish Python package to PyPI / publish (push) Waiting to run
new file: .github/workflows/python-publish.yml new file: .gitignore new file: LICENSE modified: README.md modified: certbot_dns_netbox/dns_netbox.py modified: pyproject.toml
40 lines
1.0 KiB
YAML
40 lines
1.0 KiB
YAML
name: Publish Python package to PyPI
|
|
|
|
on:
|
|
push:
|
|
tags:
|
|
- "v*"
|
|
|
|
jobs:
|
|
publish:
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- name: Check out repository
|
|
uses: https://github.com/actions/checkout@v4
|
|
|
|
- name: Verify tag matches package version
|
|
run: |
|
|
TAG="${GITHUB_REF_NAME}"
|
|
VERSION="$(python3 -c "import tomllib; print(tomllib.load(open('pyproject.toml','rb'))['project']['version'])")"
|
|
if [ "$TAG" != "v$VERSION" ]; then
|
|
echo "::error::Tag ${TAG} does not match package version v${VERSION}"
|
|
exit 1
|
|
fi
|
|
|
|
- name: Install build tools
|
|
run: python3 -m pip install --upgrade build twine
|
|
|
|
- name: Build package
|
|
run: python3 -m build
|
|
|
|
- name: Check package
|
|
run: python3 -m twine check dist/*
|
|
|
|
- name: Publish to PyPI
|
|
env:
|
|
TWINE_USERNAME: __token__
|
|
TWINE_PASSWORD: ${{ secrets.PYPI_API_TOKEN }}
|
|
TWINE_NON_INTERACTIVE: "1"
|
|
run: python3 -m twine upload dist/*
|