如果在github的Travis成功,则增加版本号fu

2024-05-15 23:21:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我用Python编写了一个简单的script。在

现在我想让特拉维斯检查一下我的代码。travis成功后,版本号应该会增加。在

到目前为止,我的脚本还没有版本号。我可以将它存储在任何对自动增量工作流有意义的地方。在

如何对Python代码执行此操作?在

更新

它现在起作用了:

  1. 运行测试
  2. 颠簸
  3. 主推送标签

不幸的是,特拉维斯并不支持“毕竟”。这意味着,如果我想运行多个Python版本的测试,那么在所有Python版本的测试成功之后,我无法bumpversion。在

在我的例子中,我只检查Python2.7,直到travis解决了这个问题:https://github.com/travis-ci/travis-ci/issues/929

{这里是简单的^我的脚本}

已解决:-)

它现在起作用了:

  1. 开发者向github推货
  2. 特拉维斯CI跑步
  3. 如果所有测试都成功bumpversion会增加版本
  4. 中的新版本设置.pyget被推到github回购
  5. 新版本的python包通过工具twine上传到pypi。在

我在这里解释了使用github、travis和pypi进行CI的方法:https://github.com/guettli/github-travis-bumpversion-pypi


Tags: 代码https版本github脚本pypicomtravis
3条回答

不是Python特有的,但是this tutorial通过添加.travis.yaml项来解释自动递增的版本号,这些条目将在每次成功构建时更新git标记。这似乎是手动和自动版本控制之间的一个很好的平衡。在

虽然本教程确实使用npm的package.json进行初始版本检查,但是您可以实现一个简单的等价物(在Python或其他语言中)。在

如果您接受额外的版本控制提交,您可以在continuous_integration/increment_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更改为

^{pr2}$

我不确定如何使git push部分工作,因为它需要对回购权限进行一些测试,但我认为您可能可以设置一些东西,以允许travis推送您的回购。例如,您可以查看post。在

还请注意,我使用了python来执行git操作,但它们可以作为额外的行添加到after_success字段中:

after_success:
  - python continuous_integration/increment_version.py
  - git add -u
  - git commit -m "[ci skip] version changed"
  - git push

我只是觉得把版本号放在提交消息中比较方便。在

另外,在提交消息中添加[ci skip]以避免无限增量非常重要。也许在特定的commit msg标记上触发版本更改会更安全。在

假设如此

  • 只有成功构建Travis CI的提交才会合并到主分支中(例如,使用Pull请求)
  • 始终使用repo-pit安装来自repo-pit的包

    pip install git+https://github.com/user/package.git
    

对于自动递增的版本号,可以简单地将版本定义为主分支中提交的数量。这可以通过中的以下行来完成设置.py

^{pr2}$

相关问题 更多 >