Je voudrais Travis CI construire et déployer les objets suivants à PyPI chaque fois qu'un nouveau commit la branche coups master
:La prévention des conflits lors du déploiement de plusieurs distros à l'aide PyPI Travis-CI
- Python 2 roues
- Python 3 roues
- Source
pour ce faire, je l'ai ajouté ce qui suit à .travis.yml
:
language: python
python:
- '2.7'
- '3.5'
- '3.6'
deploy:
on:
branch: master
provider: pypi
distribution: bdist_wheel sdist
Pour un build/test normal, la configuration fonctionne très bien. Cependant, il introduit une condition de course 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/
Quels changements dois-je faire à .travis.yml
pour obtenir Travis CI à déployer les objets corrects à PyPI?
Ceci est une bonne réponse. Ce n'est pas ce à quoi je m'attendais, mais d'après mes recherches, c'est la bonne réponse. Je cherchais un moyen de séparer la construction et les tests du déploiement, et cela se réalise, mais pas de la façon dont je m'attendais. Merci d'avoir aidé! Comme vous, je construisais déjà des roues universelles, mais cela vaut-il la peine de mettre à jour votre réponse pour inclure comment vous avez fait cela dans setup.py avec 'options = {'bdist_wheel': {'universal': True}}'? – JGC
Ah, intéressant; Je ne savais pas que c'était une option. Je l'ai mis dans 'setup.cfg'. – user5568265