我有一个 Gitlab CI 管道,可将包发布到 PyPI。我使用了用户名+密码身份验证,该身份验证不再受支持,因此管道现在失败并显示 403 Unauthorized。
以下是管道定义(
PYPI_USERNAME
和PYPI_PASSWORD
是CI环境变量)和输出:
publish:package:
stage: publish
image: python:3.10.9-slim
script:
- apt-get update -y && apt-get install -y curl
- curl -sSL https://install.python-poetry.org | python3 - --version 1.5.1
- export PATH="/root/.local/bin:$PATH"
- poetry build
- poetry publish --username ${PYPI_USERNAME} --password ${PYPI_PASSWORD}
only:
- tags
按照管道输出中的 link,我在帐户设置中创建了一个新的 API 令牌(范围仅限于项目),然后我相应地将
PYPI_USERNAME
的值更新为 __token__
和 PYPI_PASSWORD
到令牌值(带有 pypi-
前缀)。
但是管道不断失败并出现相同的错误。知道为什么吗?
我认为不是
--username
/--password
,而是配置或pypi-token.pypi
环境变量中的POETRY_PYPI_TOKEN_PYPI
;请参阅文档。
poetry config repositories.pypi https://pypi.org/legacy/
poetry config pypi-token.pypi <your-token>
或
export POETRY_PYPI_TOKEN_PYPI=<token>