2017-09-24 76 views
3

我想特拉維斯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?

回答

1

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

此前,這個項目需要單獨的車輪爲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