基于Master Branch的语义版本控制自动修补程序版本

时间:2017-08-08 21:05:06

标签: python git automation continuous-integration continuous-deployment

我有一个Python脚本,它位于我的CI管道中,负责发布分支和标签,将AAR发布到我们的Maven Artifactory,上传Javadoc等。

我们曾经遵循Git Flow的修改版本,我们将发布“支持/”分支(对于次要产品版本的长期支持,例如'support / 5.10')或“发布/” “分支(用于发布回归测试。

我的脚本在很大程度上依赖于Git Branch名称来确定Major / Minor / Patch版本的颠簸。

现在,我们正在放弃支持分支并转向更加普通的Git Flow工作流程,我们将完全不使用Master(很好,我们仍将拥有发布分支,但问题已解决......)

然而,我无法找到一种方法来安全地确定Master分支的补丁版本,因为它显然没有我们可以擦洗的名称中的识别特征(我总是对我们的方法感到有些不安)正在使用,但......它有效。)

我可以访问标签并始终碰到最高标签,但这是粗略的。

我可以输入目标版本,但这会妨碍CI,并会强制我们手动运行此脚本。

关于如何处理这个的任何其他想法?有人已经解决了这个问题吗?

1 个答案:

答案 0 :(得分:1)

就个人而言,我倾向于遵循pypi标准来表示版本。将setup.py文件放在您的仓库的根目录中,其中包含版本信息,以及使其与pypi一起使用的说明。

For example:

import os
from setuptools import setup

# Utility function to read the README file.
# Used for the long_description.  It's nice, because now 1) we have a top level
# README file and 2) it's easier to type in the README file than to put a raw
# string in below ...
def read(fname):
    return open(os.path.join(os.path.dirname(__file__), fname)).read()

setup(
    name = "an_example_pypi_project",
    version = "0.0.4",
    author = "Andrew Carter",
    author_email = "andrewjcarter@gmail.com",
    description = ("An demonstration of how to create, document, and publish "
                                   "to the cheese shop a5 pypi.org."),
    license = "BSD",
    keywords = "example documentation tutorial",
    url = "http://packages.python.org/an_example_pypi_project",
    packages=['an_example_pypi_project', 'tests'],
    long_description=read('README'),
    classifiers=[
        "Development Status :: 3 - Alpha",
        "Topic :: Utilities",
        "License :: OSI Approved :: BSD License",
    ],
)

当然,如果您不使用pypi,则无需严格遵守此规定。需要注意的是,您应该在文件中表示可以轻松阅读和处理的版本。