我正在使用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来版本软件?
答案 0 :(得分:0)
您仍然可以保留标签,但还可以使用Git修订版ID生成属性文件。
请参见git-commit-id/maven-git-commit-id-plugin
作为Maven插件的示例,该插件将自动执行该过程。
参见Maven central。
Maven插件,该插件将构建时git存储库信息包含到POJO /
*.properties
中)。
让您的应用程序告诉您它们确切是从哪个版本构建的!