ci: modern twine, classic auth via group vars, v0.1.6

After protecting the * tag pattern on the python/ group, the group-
scoped Protected TWINE_USERNAME/TWINE_PASSWORD vars inject into tag
pipelines. Twine 6+ sees them set and uses classic auth directly,
skipping Trusted Publishing (which can't work for self-hosted
git.unturf.com — see docs/PYPI-TRUSTED-PUBLISHING.md).

What this commit changes:
  - .gitlab-ci.yml drops the --trusted-publishing flag (unrecognized
    by the runner's twine anyway) — twine sees env vars and is happy
  - pyproject.toml stays on the latest setuptools (no <77 cap needed
    since we're not pinning twine<6 anymore)
  - Diagnostic for TWINE_USERNAME/TWINE_PASSWORD presence stays so
    future failures surface fast
This commit is contained in:
russell@unturf.com 2026-06-16 15:18:54 -04:00
parent f595015582
commit 16b33c6a37
No known key found for this signature in database
3 changed files with 7 additions and 6 deletions

View file

@ -51,7 +51,8 @@ pypi-twine:
- pip install build twine
- python -m build
- twine check dist/*
# --trusted-publishing never: twine 6 defaults to attempting OIDC
# when it detects GitLab CI, even if TWINE_USERNAME/TWINE_PASSWORD
# are set. Explicitly disable OIDC so it uses the env vars directly.
- twine upload --non-interactive --trusted-publishing never dist/*
# Twine 6 prefers Trusted Publishing IF TWINE_USERNAME/TWINE_PASSWORD
# are unset. With both set, classic auth is used directly. If the
# diagnostic above shows MISSING, fix the group var Protected flag
# or mark tags as Protected refs on the python/ group.
- twine upload --non-interactive dist/*

View file

@ -1,6 +1,6 @@
"""erldistpy — native Python client for our Erlang distribution protocol."""
__version__ = "0.1.5"
__version__ = "0.1.6"
from erldistpy.channel import Channel, ChannelError, IncomingMessage
from erldistpy.epmd import EpmdError, EpmdInfo, lookup

View file

@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
[project]
name = "erldistpy"
version = "0.1.5"
version = "0.1.6"
description = "Native Python client for Erlang distribution protocol — EPMD + v6 handshake + gen_server call(), no asyncio."
readme = { file = "README.md", content-type = "text/markdown" }
requires-python = ">=3.10"