使用 Travis-CI 将多个发行版部署到 PyPI 时防止冲突
Preventing conflicts when deploying multiple distros to PyPI using Travis-CI
我希望 Travis CI 在新提交到达 master
分支时构建以下工件并将其部署到 PyPI:
- 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
对于正常 build/test,配置效果很好。但是,它引入了竞争条件 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
进行哪些更改才能让 Travis CI 将正确的工件部署到 PyPI?
有时候我会跳出框框思考;其他时候它只是一个很大的盒子。
以前,这个项目需要 Python 2 和 Python 3 的单独轮子,所以我需要 Travis CI 使用不同版本的 Python 来构建轮子。
但最近我得到了正确构建万向轮的项目,所以现在 Travis 可以使用 Python 的任何一个版本构建所有部署工件。
我相应地修改了.travis.yml
,everything is working great:
deploy:
on:
branch: master
python: '3.6'
我今天 运行 解决了这个问题,最终发现这个问题的文档不足 gem:
deploy:
provider: pypi
skip_existing: true
...
我在一个项目上使用 skip_existing: true
来获得一次发布的源代码和轮子,尽管我测试了几个不同的配置和 python 版本。便利。更多详细信息,请参见 resolved github issue. I also submitted a documentation diff。
我希望 Travis CI 在新提交到达 master
分支时构建以下工件并将其部署到 PyPI:
- 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
对于正常 build/test,配置效果很好。但是,它引入了竞争条件 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
进行哪些更改才能让 Travis CI 将正确的工件部署到 PyPI?
有时候我会跳出框框思考;其他时候它只是一个很大的盒子。
以前,这个项目需要 Python 2 和 Python 3 的单独轮子,所以我需要 Travis CI 使用不同版本的 Python 来构建轮子。
但最近我得到了正确构建万向轮的项目,所以现在 Travis 可以使用 Python 的任何一个版本构建所有部署工件。
我相应地修改了.travis.yml
,everything is working great:
deploy:
on:
branch: master
python: '3.6'
我今天 运行 解决了这个问题,最终发现这个问题的文档不足 gem:
deploy:
provider: pypi
skip_existing: true
...
我在一个项目上使用 skip_existing: true
来获得一次发布的源代码和轮子,尽管我测试了几个不同的配置和 python 版本。便利。更多详细信息,请参见 resolved github issue. I also submitted a documentation diff。