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

Poetry 1.6.1在CI/CD执行install时退出码1无报错如何解决?

问题原因与修复方案

核心判断

那个黄色的Keyring警告不是导致退出码1的原因——它只是提示凭据会明文存储,属于非致命提示。真正的问题出在唯一需要更新的私有仓库依赖django-yubin.git的克隆/安装环节,Poetry 1.6.1的日志没有默认输出这个环节的详细错误,导致看起来只有警告但实际更新失败。

可能的原因

  1. Poetry 1.6.x私有仓库认证逻辑变更:新版本调整了私有仓库的凭据读取流程,CI环境无Keyring时,旧的认证配置(比如存在于poetry.lock或本地配置中的信息)无法被正确识别,导致克隆Bitbucket仓库时认证失败。
  2. 锁文件依赖格式不兼容:旧版本Poetry生成的poetry.lock中,私有仓库依赖的URL或元数据格式和1.6.x不兼容,触发隐性更新失败。
  3. CI缓存残留冲突:升级Poetry后,CI环境中遗留的旧虚拟环境、依赖缓存和新版本Poetry的操作逻辑冲突,导致更新依赖时出现权限或文件读写错误。

修复步骤

1. 直接配置私有仓库认证(优先尝试)

在CI构建流程中,提前注入Bitbucket的认证信息,不需要依赖Keyring:

  • 方式一:通过命令行配置
    # 配置私有仓库地址
    poetry config repositories.org1-bitbucket https://bitbucket.org/org1/django-yubin.git
    # 注入账号和应用密码(Bitbucket推荐用应用密码而非账号密码)
    poetry config http-basic.org1-bitbucket YOUR_BITBUCKET_USERNAME YOUR_APP_PASSWORD
    
  • 方式二:通过环境变量(更适合CI)
    在CI的环境变量中设置:
    POETRY_HTTP_BASIC_ORG1_BITBUCKET_USERNAME=YOUR_BITBUCKET_USERNAME
    POETRY_HTTP_BASIC_ORG1_BITBUCKET_PASSWORD=YOUR_APP_PASSWORD
    
    Poetry会自动识别这些变量并完成认证。

2. 重新生成兼容的锁文件

在本地已配置好Bitbucket认证的环境中,更新Poetry到1.6.1后重新生成锁文件:

poetry self update 1.6.1
# 不更新依赖版本,仅重新生成锁文件格式
poetry lock --no-update

把新的poetry.lock提交到代码仓库后再触发CI构建。

3. 清理CI环境缓存

在CI构建的第一步添加清理操作,避免旧缓存干扰:

# 清理Poetry全局缓存
poetry cache clear --all .
# 删除旧虚拟环境
rm -rf $(poetry env info --path)

然后再执行poetry install -vvv --no-interaction。

4. 开启Debug日志排查具体错误

如果以上方法无效,开启Debug级日志捕获详细错误:

POETRY_LOG_LEVEL=debug poetry install --no-interaction

Debug日志会显示克隆私有仓库时的具体错误(比如认证失败、网络超时、仓库权限问题等),根据错误信息针对性解决。

5. 临时回退验证版本兼容性

如果确定是版本问题,可临时回退到之前正常的Poetry版本:

poetry self update <你之前使用的版本号>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 19:32:37