You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GitHub Actions中从Artifact Registry安装Pip包失败排查

问题分析与解决步骤

核心问题:CI环境中pip访问GCP Artifact Registry时,未完成自动身份认证,触发交互式用户名密码输入,但CI环境是非交互式的,因此抛出EOFError。本地能正常安装是因为本地gcloud已配置认证,pip自动复用了该凭证。

解决配置步骤

1. 为pip注入GCP认证令牌

pip无法直接使用GCP工作负载身份,需显式生成并传递Artifact Registry认证令牌:

# 生成有效期1小时的GCP访问令牌
ARTIFACT_TOKEN=$(gcloud auth print-access-token)
# 配置pip使用令牌访问目标仓库
pip config set global.extra-index-url "https://oauth2accesstoken:${ARTIFACT_TOKEN}@europe-west9-python.pkg.dev/path-to/simple/"
# 执行安装
pip install PACKAGE

或者直接在install命令中嵌入令牌:

pip install PACKAGE --index-url "https://oauth2accesstoken:$(gcloud auth print-access-token)@europe-west9-python.pkg.dev/path-to/simple/"

2. 确认CI中工作负载身份已完成认证

确保在pip命令前,工作负载身份已成功登录GCP:

# 根据你的工作负载身份配置,执行对应的登录命令,例如:
gcloud auth activate-service-account --key-file=${WORKLOAD_IDENTITY_CRED_FILE}
# 验证令牌生成正常
gcloud auth print-access-token

3. 验证IAM权限绑定正确性

检查工作负载身份的IAM角色绑定是否生效:

gcloud artifacts repositories get-iam-policy PACKAGE_NAME --location=europe-west9

确认输出中包含你的工作负载身份主体,且拥有roles/artifactregistry.admin角色。

4. 禁用pip交互式认证提示

在CI中添加--no-input参数,避免pip触发交互式输入:

pip install --no-input --index-url ... PACKAGE

内容的提问来源于stack exchange,提问作者Sarah

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 12:47:07