Files
remove-ai-watermarks/.github/workflows/publish.yml
T

44 lines
1.5 KiB
YAML

name: Publish to PyPI
on:
release:
types: [published]
permissions:
id-token: write
contents: read
jobs:
publish:
# Model-only prereleases are not Python package releases.
if: ${{ startsWith(github.event.release.tag_name, 'v') && !github.event.release.prerelease }}
runs-on: ubuntu-latest
environment: pypi
steps:
- uses: actions/checkout@v7
- uses: astral-sh/setup-uv@v7
- name: Verify release tag matches package version
run: |
tag="${{ github.event.release.tag_name }}"
version="$(grep -m1 '^version = ' pyproject.toml | sed -E 's/^version = "([^"]+)"/\1/')"
if [ "${tag#v}" != "$version" ]; then
echo "Release tag '$tag' does not match pyproject.toml version '$version'" >&2
exit 1
fi
echo "Release tag '$tag' matches package version '$version'"
- name: Build package
run: uv build
# Publish with `uv publish` (its own uploader, not the twine bundled in the
# old pypa action). Trusted publishing is automatic in GitHub Actions: the
# `id-token: write` permission + the `pypi` environment supply the OIDC token,
# and PyPI's trusted-publisher entry matches on repo + workflow filename +
# environment name (all unchanged from the pypa-action setup), so no API token
# is needed. uv's uploader also accepts Metadata-Version 2.5 -- the permanent
# fix that lets the hatchling pin be relaxed (see pyproject [build-system]).
- name: Publish to PyPI
run: uv publish