Python Travis pypi软件包版本
我已经设置了travis.ci,以便在标记push to master时自动将包部署到pypi 问题是,在我的Python Travis pypi软件包版本,python,travis-ci,pypi,Python,Travis Ci,Pypi,我已经设置了travis.ci,以便在标记push to master时自动将包部署到pypi 问题是,在我的setup.py中,我必须指定包的版本,有时我会忘记这会导致未部署的包(或者Pypi会覆盖旧包吗?) 然而,有没有办法将pypi上的包版本与分配给提交的标记相匹配?我已经在我的一个项目中完成了这项工作 [编辑N°2]我写了一个小教程,你可以在这里找到: V1。使用PBR 你可以找到它 Travis的基本工作如下: 检查提交是否有标记 如果是,请使用正则表达式(/(\d+\)?(\d+\
setup.py
中,我必须指定包的版本,有时我会忘记这会导致未部署的包(或者Pypi会覆盖旧包吗?)
然而,有没有办法将pypi上的包版本与分配给提交的标记相匹配?我已经在我的一个项目中完成了这项工作 [编辑N°2]我写了一个小教程,你可以在这里找到: V1。使用PBR 你可以找到它 Travis的基本工作如下:
- 检查提交是否有标记
- 如果是,请使用正则表达式(
)检查格式/(\d+\)?(\d+\)?(\*\124;\ d+$/
- 如果标签类似于
,那么它会将其用于pypi版本 您仍然可以将正则表达式转换为与标签匹配,如1.0.0
。使用类似于v1.0.0
[EDIT N°3]这是完全错误的,如果标签与此处描述的内容不匹配,PBR无法定义版本。/v?(\d+\)?(\d+\)?(\*\d+$/
git descripe--abbrev=0--tags
因此,如果您的设置如下所示:
从设置工具导入设置
...
设置(
...
version='NEWVERSIONHERE',
...
)
您可以使用shell脚本将标记版本替换为NEWVERSIONHERE
我尝试了以下方法(在本地,而不是在Travis上),效果很好
#/垃圾箱/垃圾箱
set-xe
TAG=$(git descripe--abbrev=0--tags)
sed-i“s/NEWVERSIONHERE/${TAG}/g”setup.py
-i
标志用于查找并替换到位。因此,它会在您指定的文件中发生更改
只需将此代码放在shell脚本中,不要忘记chmod
它,以便能够运行它,并从Travis运行它
示例.travis.yml
文件:
dist: trusty
sudo: required
language: python
python: 3.6
cache: apt
install:
- pip install -r requirements.txt
- chmod 777 YOURSCRIPT.sh
script:
- your tests here
- ./YOURSCRIPT.sh
deploy:
skip_cleanup: true
provider: pypi
distributions: sdist bdist_wheel
on:
tags: true
branch:
- master
- /(\d+\.)?(\d+\.)?(\*|\d+)$/
user: YOUR PYPI USERNAME
password:
secure: YOUR PYPI ENCODED PASSWORD
希望这有帮助 有没有办法让travis根据标签设置版本?它构建了标签,但是我如何告诉travis将版本添加为git中的版本呢?我真的需要为这项琐碎、强制性的任务使用额外的软件包吗?我不确定是否真的正确理解了您的问题。英语不是我的母语。就我的项目而言,travis在遇到与正则表达式匹配的标记时部署到pypi。从那时起,pbr做了其他一切。它接受标记并将其指定为包版本。我不知道还有别的办法,但可能有。您可以从git获取标记,然后将其“sed”到您的安装文件或类似文件中。如果我不回答你的问题,请告诉我。这很清楚,我在问特雷维斯是否可以在不需要安装PBR的情况下为我做到这一点。好的,我现在放心了,哈哈。我不能告诉你,如果没有PBR特拉维斯可以做到,但这是我找到的唯一方法,我知道这样做很容易。可能还有其他方法。@EsseTi我用另一种方法更新了我的答案。希望这有帮助!如果是这样,请接受我的回答。祝您有个美好的一天。