Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用GIT repo(MAJOR.MINOR.COMMIT_NUMBER)对软件构建进行版本化的最佳方法是什么?_Git_Jenkins_Svn_Build_Artifacts - Fatal编程技术网

使用GIT repo(MAJOR.MINOR.COMMIT_NUMBER)对软件构建进行版本化的最佳方法是什么?

使用GIT repo(MAJOR.MINOR.COMMIT_NUMBER)对软件构建进行版本化的最佳方法是什么?,git,jenkins,svn,build,artifacts,Git,Jenkins,Svn,Build,Artifacts,我使用Jenkins来运行构建和测试。我正在从SVN迁移到Git。 目前,我正在使用MAJOR.MINOR.SVN_修订格式升级软件 例如,主要和次要部分来自pom.xml For Java项目和库 ... <groupId>com.example.ci</groupId> <artifactId>test-java-project</artifactId> <version>2.1</version> <packag

我使用Jenkins来运行构建和测试。我正在从SVN迁移到Git。 目前,我正在使用MAJOR.MINOR.SVN_修订格式升级软件

例如,主要和次要部分来自pom.xml For Java项目和库

...
<groupId>com.example.ci</groupId>
<artifactId>test-java-project</artifactId>
<version>2.1</version>
<packaging>jar</packaging>
...
。。。
com.example.ci
测试java项目
2.1
罐子
...
构建Java应用程序/软件时,我将SVN修订版添加到版本中。 例如,如果版本的SVN版本为123,则完整版本将为2.1.123。这很有效

我不能对Git使用相同的逻辑,因为Git commit number是一个散列数,它不是顺序的。 例如:2.1.a126ac21090

当我需要使用版本号识别最新的库和应用程序时,这将导致问题

第一个选项是使用Jenkins版本号(MAJOR.MINOR.Jenkins_build_编号),但这也有一些缺点,比如让生产和暂存Jenkins为两个不同的工件生成相同的版本号

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


有没有其他更好的方法可以使用Git对软件进行类似于MAJOR.MINOR.SVN_版本的版本设置?

您仍然可以保留标签,但也可以生成一个带有Git版本ID的属性文件

请参见Maven插件的示例,该插件将自动执行该过程。

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


是的,只有当您需要保存并在属性文件中有修订号时,这才有效,但正如我所知,如果您将工件上载到Artifactory并希望获得最新版本,这将不起作用。我在过去两年中一直与Artifactory合作。考虑到Artifactory将使用经典的GAV,它确实工作得很好。属性文件是该ID的补充,您可以在运行时查询该ID。