invisible_playwright/.github/workflows/publish.yml

56 lines
1.4 KiB
YAML

name: publish
on:
push:
tags: ["v*"]
workflow_dispatch:
jobs:
build-and-publish:
name: build wheel + sdist and publish to PyPI
runs-on: ubuntu-latest
environment:
name: pypi
url: https://pypi.org/p/invisible-playwright
permissions:
id-token: write # required for PyPI trusted publishing
contents: read
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.12"
- name: Install build deps
run: |
python -m pip install --upgrade pip
pip install build twine
- name: Build wheel + sdist
run: python -m build
- name: Check wheel has no duplicate zip entries
run: |
python - <<'EOF'
import zipfile, sys
from collections import Counter
from pathlib import Path
wheels = list(Path("dist").glob("*.whl"))
assert len(wheels) == 1, wheels
with zipfile.ZipFile(wheels[0]) as zf:
dupes = {n: c for n, c in Counter(zf.namelist()).items() if c > 1}
if dupes:
print("DUPLICATE ENTRIES IN WHEEL:", dupes)
sys.exit(1)
print("wheel is clean:", wheels[0].name)
EOF
- name: Validate metadata with twine
run: twine check dist/*
- name: Publish to PyPI
uses: pypa/gh-action-pypi-publish@release/v1