/actuator/info 返回代码版本号和时间戳

为了显示区分部署代码版本,一般会在打包的时候带上 git/hg 版本号。

配置之前,调用 /actuator/info 接口:

GET http://localhost:8080/actuator/info

HTTP/1.1 200 
Content-Type: application/vnd.spring-boot.actuator.v3+json
Transfer-Encoding: chunked
Date: Fri, 09 Apr 2021 06:34:06 GMT

{}

Git 配置

若代码发布在 Git 仓库,可以使用 maven 插件 git-commit-id-plugin。该插件会产生一个 git.properties 文件,并被包含进最终的 jar 文件中。

(1)在 pom.xml 中添加 git-commit-id-plugin maven 插件。

<build>
        <plugins>
            ...
            <plugin>
                <groupId>pl.project13.maven</groupId>
                <artifactId>git-commit-id-plugin</artifactId>
                <version>3.0.1</version>
            </plugin>
        </plugins>
    </build>

(2)执行 mvn 编译命令。

meikai@mk MINGW64 /f/work/demo/codetest (master)
$ mvn clean compile -DskipTests
...
[INFO] --- git-commit-id-plugin:3.0.1:revision (default) @ codetest ---
[INFO] dotGitDirectory F:\work\demo\codetest\.git
[INFO] Collected git.build.user.name with value meikai
[INFO] Collected git.commit.id with value 4153cb8802a0e507acba9714f46737821a2de3e1
...
[INFO] Writing properties file to [F:\work\demo\codetest\target\classes\git.properties] (for module codetest)...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  10.578 s
[INFO] Finished at: 2021-04-09T14:44:25+08:00
[INFO] ------------------------------------------------------------------------

在 classpath 目录 F:\work\demo\codetest\target\classes\ 下,生成 git.properties 文件。

(3)重新启动项目,调用 /actuator/info

GET http://localhost:8080/actuator/info

HTTP/1.1 200 
Content-Type: application/vnd.spring-boot.actuator.v3+json
Transfer-Encoding: chunked
Date: Fri, 09 Apr 2021 06:49:34 GMT

{
  "git": {
    "commit": {
      "time": "2021-04-09T06:22:49Z",
      "id": "4153cb8"
    },
    "branch": "master"
  }
}

git.commit.id 和最新的 commit id 一致。

hg 配置

(1)在 pom.xml 中添加 buildnumber-maven-plugin maven 插件。

    <build>
        <plugins>
                ...
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>buildnumber-maven-plugin</artifactId>
                <version>1.4</version>
                <executions>
                    <execution>
                        <phase>validate</phase>
                        <goals>
                            <goal>hgchangeset</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

(2)执行 mvn 编译命令。

meikai@mk MINGW64 /f/work/demo/hg-demo
$ mvn clean compile
....
[INFO] --- buildnumber-maven-plugin:1.4:hgchangeset (default) @ hg-demo ---
[INFO] Setting Mercurial Changeset: b66059fecf49
[INFO] Setting Mercurial Changeset Date: 2021-04-09 15:52 +0800
....
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  3.057 s
[INFO] Finished at: 2021-04-09T15:55:23+08:00
[INFO] ------------------------------------------------------------------------

buildnumber-maven-plugin:1.4:hgchangeset 会执行 org.codehaus.mojo.build.HgChangeSetMojo 类的 execute() 方法,其会往 MavenProject 中写入 changeSetchangeSetDate 两个 properties。

(3)生成 /META-INF/build-info.properties 文件。

pom.xml 中添加 spring-boot-maven-plugin 插件的 build-info goal,完整的配置如下所示:

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <goals>
                            <goal>build-info</goal>
                        </goals>
                        <configuration>
                            <additionalProperties>
                                <changeset.id>${changeSet}</changeset.id>
                                <changeset.date>${changeSetDate}</changeset.date>
                            </additionalProperties>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>buildnumber-maven-plugin</artifactId>
                <version>1.4</version>
                <executions>
                    <execution>
                        <phase>validate</phase>
                        <goals>
                            <goal>hgchangeset</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

<goal>build-info</goal> 会执行 org.springframework.boot.maven.BuildInfoMojo 类的 execute() 方法,其会往 ${project.build.outputDirectory}/META-INF/build-info.properties 文件写入相应的配置。包含自定义的 <additionalProperties> 配置。

执行 mvn 编译命令:

meikai@mk MINGW64 /f/work/demo/hg-demo
$ mvn clean compile
...
[INFO] --- buildnumber-maven-plugin:1.4:hgchangeset (default) @ hg-demo ---
[INFO] Setting Mercurial Changeset: a6256866c372+
[INFO] Setting Mercurial Changeset Date: 2021-04-09 16:12 +0800
[INFO]
[INFO] --- spring-boot-maven-plugin:2.4.4:build-info (default) @ hg-demo ---
...
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  2.635 s
[INFO] Finished at: 2021-04-09T16:32:55+08:00
[INFO] ------------------------------------------------------------------------

spring-boot-maven-plugin:2.4.4:build-info goal 会把 buildnumber-maven-plugin:1.4:hgchangeset goal 生成的代码版本信息写入到 /META-INF/build-info.properties 文件中。

(4)重新启动项目,调用 /actuator/info

GET http://localhost:8080/actuator/info

HTTP/1.1 200 
Content-Type: application/vnd.spring-boot.actuator.v3+json
Transfer-Encoding: chunked
Date: Fri, 09 Apr 2021 08:37:21 GMT
Keep-Alive: timeout=60
Connection: keep-alive

{
  "build": {
    "changeset": {
      "date": "2021-04-09 16:12 +0800",
      "id": "a6256866c372+"
    },
    "version": "0.0.1-SNAPSHOT",
    "artifact": "hg-demo",
    "name": "hg-demo",
    "time": "2021-04-09T08:36:43.388Z",
    "group": "com.example"
  }
}

build.changeset.id 和最新的 commit id 一致。

$ hg id -i
a6256866c372+

参考

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,427评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,551评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,747评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,939评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,955评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,737评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,448评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,352评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,834评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,992评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,133评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,815评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,477评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,022评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,147评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,398评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,077评论 2 355

推荐阅读更多精彩内容