使用GIT回购(MAJOR.MINOR.COMMIT_NUMBER)建立软件版本的最佳方法是什么?

时间:2018-12-12 20:29:36

标签: git jenkins svn build artifacts

我正在使用Jenkins来运行构建和运行测试。我正在从SVN迁移到Git。 目前,我使用MAJOR.MINOR.SVN_REVISION格式对软件进行版本控制。

例如,MAJOR和MINOR来自用于Java项目和库的pom.xml

...
<groupId>com.example.ci</groupId>
<artifactId>test-java-project</artifactId>
<version>2.1</version>
<packaging>jar</packaging>
...

构建Java应用程序/软件后,我将SVN修订版添加到该版本中。 例如,如果内部版本的SVN版本是123,则完整版本将是2.1.123。效果很好。

我不能对Git使用相同的逻辑,因为Git提交号是一个哈希数,并且不是连续的。 例如:2.1.a126ac21090

当我需要使用版本号标识最新的库和应用程序时,这将引起问题。

第一个选项是使用Jenkins内部版本号(MAJOR.MINOR.JENKINS_BUILD_NUMBER),但这也有一些缺点,例如,有一个生产版本,并让Jenkins为两个不同的工件生产相同的版本号。

第二个选项是使用“ git rev-list --count”,但这可以为两个不同的功能分支返回相同的数字,而我最终可能会得到两个具有相同版本的工件数字。

是否有另一种更好的方式使用Git来类似于MAJOR.MINOR.SVN_REVISION来版本软件?

1 个答案:

答案 0 :(得分:0)

您仍然可以保留标签,但还可以使用Git修订版ID生成属性文件。

请参见git-commit-id/maven-git-commit-id-plugin作为Maven插件的示例,该插件将自动执行该过程。
参见Maven central

  

Maven插件,该插件将构建时git存储库信息包含到POJO / *.properties中)。
  让您的应用程序告诉您它们确切是从哪个版本构建的!