预防冲突使用特拉维斯-CI

问题描述:

我想特拉维斯CI构建并部署以下人工制品的PyPI每当一个新的提交命中master分支部署多发行版到PyPI中时:预防冲突使用特拉维斯-CI

  • 的Python 2轮
  • 的Python 3轮
  • 来源

要做到这一点,我已经添加了以下到.travis.yml

language: python 
python: 
    - '2.7' 
    - '3.5' 
    - '3.6' 
deploy: 
    on: 
    branch: master 
    provider: pypi 
    distribution: bdist_wheel sdist 

对于普通的构建/测试,配置的伟大工程。然而,它引入了竞争条件when deploying to PyPI

Uploading distributions to https://upload.pypi.org/legacy/ 
Uploading PyOTA-2.0.0b1.tar.gz 
HTTPError: 400 Client Error: File already exists. for url: https://upload.pypi.org/legacy/ 

我应该对.travis.yml什么样的变化让特拉维斯CI部署正确的人工制品的PyPI?

有些日子,我的条条框框;其他日子,它只是一个非常大的盒子。

此前,这个项目需要单独的车轮为Python 2和Python 3,所以我需要特拉维斯CI建立使用不同版本的Python的车轮。

但最近我得到了项目,建立正确万向轮,所以现在特拉维斯可订做使用Python中的任何一个版本的部署文物。

我修改.travis.yml因此,和everything is working great

deploy: 
    on: 
    branch: master 
    python: '3.6' 
+0

这是一个很好的答案。这不是我的期望,而是基于我的研究,这是正确的答案。我一直在寻找一种方式来构建和测试调配分开,由此实现了,但不是在路上我所期待的。感谢您的帮助!和你一样,我已经建立万向轮,但它是值得更新您的响应,包括你是怎么做的与'选项= {“bdist_wheel”:{“普遍”:真}} setup.py'? – JGC

+0

啊,有趣;我不知道这是一个选择。我把它放在'setup.cfg'中。 – user5568265