PyPI可信发布:密钥交换获取API Token遇503错误求助
解决PyPI可信发布获取API Token时的503错误问题
问题分析
你遇到的503错误大概率是请求中的两个关键问题导致的:
- POST请求变量未正确解析:单引号包裹的JSON里
${oidc_token}不会被Shell解析,传递给PyPI的是字面量字符串而非实际OIDC Token。 - OIDC Token请求URL拼接不规范:直接在
$ACTIONS_ID_TOKEN_REQUEST_URL后追加&audience=pypi可能导致URL格式错误,尤其是原URL已包含查询参数时。
修正后的代码
# 获取OIDC Token,用-G参数规范添加audience参数,避免URL拼接错误 resp=$(curl -G -H "Authorization: bearer $ACTIONS_ID_TOKEN_REQUEST_TOKEN" \ "$ACTIONS_ID_TOKEN_REQUEST_URL" --data-urlencode "audience=pypi") echo "RESP ${resp}" oidc_token=$(jq -r '.value' <<< "${resp}") # 用-r移除字符串的引号 echo "OIDC ${oidc_token}" # 交换OIDC Token为API Token,用双引号包裹JSON确保变量被解析,同时指定Content-Type resp=$(curl -X POST https://pypi.org/_/oidc/github/mint-token \ -H "Content-Type: application/json" \ -d "{\"token\":\"${oidc_token}\"}") echo "RESP ${resp}" api_token=$(jq -r '.token' <<< "${resp}") # 用-r移除字符串的引号 echo "api_token ${api_token}"
额外注意事项
- 确认GitHub Runner环境已安装
jq工具,未安装需提前添加安装步骤。 - 检查PyPI上的可信发布配置是否正确关联了目标GitHub仓库的分支、标签等条件。
- 若仍出现503错误,可稍作等待后重试,可能是PyPI服务临时波动导致。
内容的提问来源于stack exchange,提问作者tschm
相关产品推荐
相关产品推荐

