疑难解答
GitHub 上的可重用工作流
可重用工作流 目前无法用作可信发布者中的工作流。这是一个实际限制,并在 warehouse#11096 中跟踪。
速率限制
PyPI 目前对可信发布者注册实施速率限制:单个用户或 IP 地址在 24 小时内最多只能注册 100 个发布者。
这对大多数用户来说应该绰绰有余(因为发布者注册应该很少见,相对于发布者使用),但拥有大量项目或通过共享 IP 地址访问 PyPI 的维护者可能会遇到速率限制错误。如果发生这种情况,请等待 24 小时,然后重试,如果问题仍然存在,请联系 PyPI 管理员。
令牌铸造
以下是对您可能从 mint-token
端点看到的一些错误的简要枚举
not-enabled
:这表明 PyPI 的后端已完全禁用 OIDC。在正常操作期间,您不应该看到此消息,**除非** PyPI 管理员决定禁用 OIDC 支持。invalid-payload
:提交到mint-token
端点的 OIDC 令牌有效负载格式不正确。有效负载**必须**是 JSON 序列化对象,具有以下布局
{
"token": "oidc-token-here"
}
不支持其他布局。
invalid-payload
以及unknown trusted publishing issuer
错误:生成令牌的 OIDC 提供程序不受支持。这可能发生在使用自托管 GitLab 实例时,因为目前仅支持托管在 https://gitlab.com 上的项目。invalid-token
:OIDC 令牌本身格式不正确、签名无效、已过期等。这涵盖了在实际与发布者匹配之前可能发生在 OIDC 令牌(只是一个 JWT)上的几乎所有故障模式。invalid-pending-publisher
和invalid-publisher
:OIDC 令牌本身格式良好(并且具有有效的签名),但与任何已知(待定)的 OIDC 发布者不匹配。这可能表明用户/项目设置中指定的 OIDC 发布者与实际 OIDC 令牌中表示的声明之间存在不匹配。检查是否有错字!如果您使用的是 GitHub Actions,请检查工作流是否使用与在 PyPI 上配置发布者时相同的环境。invalid-publisher
针对以前正常工作的项目:这通常表示存在错字或两边发生了变化。我们遇到的一个例子是,当源存储库重命名时,PyPI 上的配置继续使用旧的存储库名称。对于 GitHub,请检查两边repository_owner
、repository
和工作流文件名值是否相同。
上传错误
使用待定发布者创建新项目时,您可能会遇到这样的错误
Non-user identities cannot create new projects. This was probably caused by
successfully using a pending publisher but specifying the project name
incorrectly (either in the publisher or in your project's metadata).
Please ensure that both match.
这意味着待定发布者成功创建了项目,但上传元数据中提供的项目名称与之不匹配。如果待定发布者的项目名称或元数据的项目名称输入错误或其他错误,就会发生这种情况。
例如,一个在元数据中指定 python-example
但在待定发布者中注册为 example
的项目会导致此错误。
要解决此问题,您必须确定这两个名称中哪个是正确的。
-
如果待定发布者中使用的名称是正确的,则必须更新您的项目元数据以反映该名称。使用可信发布者的后续上传将自动完成,无需采取任何其他操作。
-
如果项目元数据中使用的名称是正确的,则必须
-
转到 您的项目 并删除错误创建的项目。这也将删除错误注册的可信发布者。
-
使用更正后的项目名称创建一个新的待定发布者。
下次上传将创建具有预期名称的项目,后续上传也将按预期工作。