Python 如果github上的Travis成功,则增加版本号
我用Python写了一篇简单的文章 现在我想让特拉维斯检查我的密码。travis成功后,版本号应该增加 到目前为止,我的脚本还没有版本号。我可以将其存储在对自动增量工作流有意义的任何地方 如何对Python代码执行此操作 更新 它现在可以工作了:Python 如果github上的Travis成功,则增加版本号,python,github,versioning,travis-ci,Python,Github,Versioning,Travis Ci,我用Python写了一篇简单的文章 现在我想让特拉维斯检查我的密码。travis成功后,版本号应该增加 到目前为止,我的脚本还没有版本号。我可以将其存储在对自动增量工作流有意义的任何地方 如何对Python代码执行此操作 更新 它现在可以工作了: 运行测试 颠簸 把标签推到主机上 不幸的是,特拉维斯不支持“毕竟”。这意味着,如果我想运行多个Python版本的测试,那么在所有Python版本的测试都成功之后,我就没有办法升级这个版本 在我的情况下,我将检查Python2.7,直到travis解决此
twine
上传到pypi.travis.yaml
条目来解释自动递增的版本号,这些条目在每次成功构建时都会更新git标记。这似乎是手动版本控制和自动版本控制之间的良好平衡
虽然本教程使用npm的package.json
进行初始版本检查,但您可以实现一个简单的等价物(用Python或其他语言)
- 只有Travis CI构建成功的提交才能合并到主分支中(例如,使用拉请求)
- 该软件包始终与来自git repo的pip一起安装,例如
pip install git+https://github.com/user/package.git
minor_version = check_output(['git', 'rev-list',
'--count', 'master']).decode('latin-1').strip()
setup(version='0.{}'.format(minor_version), ...)
如果您接受对版本控制进行额外提交,则可以在
continuous\u integration/increment\u version.py
import os
import pkg_resources
if __name__ == "__main__":
version = pkg_resources.get_distribution("compare_with_remote").version
split_version = version.split('.')
try:
split_version[-1] = str(int(split_version[-1]) + 1)
except ValueError:
# do something about the letters in the last field of version
pass
new_version = '.'.join(split_version)
os.system("sed -i \"s/version='[0-9.]\+'/version='{}'/\" setup.py"
.format(new_version))
os.system("git add -u")
os.system("git commit -m '[ci skip] Increase version to {}'"
.format(new_version))
os.system("git push")
并将.travis.yml
更改为
after_success:
- python continuous_integration/increment_version.py
我不确定如何让git push部分工作,因为它需要一些回购权利测试,但我假设您可能可以设置一些东西,允许travis推进您的回购。例如,你可以调查一下
还请注意,我使用了python
来执行git
操作,但它们可以作为额外的行添加到成功后
字段中:
after_success:
- python continuous_integration/increment_version.py
- git add -u
- git commit -m "[ci skip] version changed"
- git push
我只是觉得把版本号放在commit消息中比较方便
此外,添加提交消息以避免无限增量也是非常重要的。也许在特定的commit msg标记上触发版本更改会更安全。在我的情况下,主分支用于开发。它可能包含bug。谢谢你的提示“无限增量”。travis是否查看提交消息并检测到“ci跳过”?是的,travis默认检测到[skip ci]标记。