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

Travis CI部署未触发:Poetry发布到TestPyPI无输出问题排查

Travis-CI + Poetry 部署TestPyPI无输出问题排查方案

1. 修复TestPyPI仓库协议问题

当前配置里的仓库地址用了HTTP,TestPyPI已强制HTTPS访问,这会导致请求被拦截无输出。修改before_deploy里的仓库配置:

poetry config repositories.testpypi https://test.pypi.org/legacy/

2. 验证环境变量是否正常加载

在before_deploy中添加token存在性验证(仅输出前缀,避免泄露):

- echo "Token prefix: ${MYPYPI_API_TOKEN:0:5}..."

如果输出为空,说明Travis项目设置里的环境变量MYPYPI_API_TOKEN未正确配置,检查变量名拼写、是否在Travis项目的"Settings"->"Environment Variables"中添加,且未勾选"Allow this variable to be used in pull requests"(推送main分支不需要此选项)。

3. 重构部署逻辑,放弃Travis Deploy Provider

原配置用script: skip跳过脚本阶段,再通过deploy provider执行发布,这种方式容易触发Travis阶段逻辑异常。直接把发布逻辑移到job的script阶段:
修改Publish阶段的job配置:

- stage: Publish
  name: deploy_Pypi
  before_script:
    - poetry config repositories.testpypi https://test.pypi.org/legacy/
    - poetry config pypi-token.testpypi $MYPYPI_API_TOKEN
    - poetry build
  script:
    - echo Deploying to TestPyPI...
    - poetry publish -vvv --repository testpypi
  after_script:
    - echo "Deploy completed"
  if: branch = main

这种方式直接在脚本阶段执行发布,输出会完整显示在Travis日志里,便于排查问题。

4. 锁定Poetry版本,避免兼容性问题

pip install poetry默认安装最新版,可能和Travis的jammy环境存在兼容问题,指定一个稳定版本:
在before_install中修改为:

pip install poetry==1.8.3

5. 确认分支触发条件

确保推送的代码确实在main分支,且Travis项目设置中未禁用main分支的构建。如果是通过标签发布,可将if条件改为tag IS present。

本地模拟Travis环境排查

用Docker模拟Travis的jammy环境,复现构建发布流程,看是否有报错:

docker run -it --rm ubuntu:jammy
# 容器内执行:
apt update && apt install -y python3.10 python3-pip
pip install poetry==1.8.3
git clone <你的项目仓库>
cd <项目目录>
poetry config repositories.testpypi https://test.pypi.org/legacy/
poetry config pypi-token.testpypi <你的TestPyPI token>
poetry install
poetry build
poetry publish -vvv --repository testpypi

如果本地模拟也有问题,说明是项目配置或Poetry的问题;如果正常,再回到Travis检查环境变量和分支配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 19:45:07