如何使用Spring Boot,Gradle,Semantic Versioning和Jenkins生成应用程序版本

我有一个启动执行器的
Spring Boot Web应用程序.当我打开< app_url> / info时,我会在下面看到

{
    "git": {
        "commit": {
            "time": "2016-08-31T17:53:28.000+0000",
            "id": "0a52a2f"
        },
        "branch": "master"
    },
    "build": {
        "version": "unspecified",
        "artifact": "my-app",
        "name": "my-app",
        "group": "",
        "time": "2016-09-02T21:09:42.000+0000"
    }
}

我不知道如何在这里生成版本号.我想使用语义版本MAJOR.MINOR.PATCH时间戳Build_Number

存储包的构建信息的一般共识是什么?我不想将它存储在application.yml中,因为它是由Puppet管理的,并且是应用程序之战的外部.我希望它由Jenkins生成一些文件,Spring Boot可以从该文件中获取它.我应该让Jenkins写入由spring-boot-gradle-plugin buildInfo生成的build-info.properties吗?或者Gradle本身在生成文件时是否应该生成版本? Gradle如何知道MAJOR.MINOR.PATCH的详细信息?我已经没有关于如何将所有这些整合在一起的想法.

最佳答案 有点晚了,但这就是我做的事情(似乎工作).

springBoot  {
    buildInfo {
        additionalProperties = [
            "version" : System.properties["version"] != null ? System.properties["version"] : "unspecified"
        ]
    }
}

然后在我的jenkins管道中

./gradlew clean build -Dversion=${MAJOR}.${MINOR}.${PATCH}

然后输出jar将具有build-info.properties

build.version=1.0.1
点赞