通过API检查应用版本/构建日期
最近,在微服務的概念下,越来越多的应用程序通过持续集成自动部署的方式进行开发。这种方式非常方便和令人高兴,但同时也带来了对于管理这些应用程序的担忧,因为应用程序的增多意味着不安全感的增加。
我曾经参与的项目中,存在着对于”正在运行的应用程序”的担忧,比如:这些自动部署的应用程序是否按照预期成功部署?现在部署了哪个版本的应用程序?
因此,今天我来介绍一种在使用Spring Boot创建的应用程序中,在不修改生产代码的情况下,如何添加一个版本确认的功能。
目标读者
-
- 以下を利用してwebアプリケーション開発している
Spring Boot
Maven
リリース後のアプリケーションの情報を外部から確認したい
环境
-
- Java 8+
-
- Spring Boot 2+
- Maven 3+
使用功能
通过结合以下功能来实现。
-
- Application Info Actuator
info actuator | spring.io
Springプロパティの拡張機能
automatic-expansion-maven | spring.io
org.springframework.boot:spring-boot-starter-parentを使用していることで利用可能
实施
必需的设置 de
在应用程序的配置文件中添加以下内容。
management:
endpoints:
web:
exposure:
include: info # 1.
info:
application: # 2.
name: @project.build.finalName@
version: @project.version@
build-timestamp: @maven.build.timestamp@
-
- 管理端点配置公开
在示例中仅指定了info,但可以同时配置多个端点(例如:info、health)
返回的信息在访问时
键名可以自由命名
我会查一下确认
我将在此次的示例项目spring-boot-automatic-expansion-maven中进行确认。
启动应用程序后,访问Spring Boot Actuator的info路径/actuator/info。
% curl http://localhost:8080/actuator/info
{
"application": {
"name":"spring-boot-automatic-expansion-maven-0.0.1-SNAPSHOT",
"version":"0.0.1-SNAPSHOT",
"build-timestamp":"2018-05-20T13:41:45Z"
}
}
我能成功获取到期待的应用程序的信息。
总结
-
- プロダクションコードに手を加えることなく実現が可能
-
- 以下のタイミングで確認ができる
リリースしたアプリケーションのversionが正しいか
テストするアプリケーションのversionが正しいか
非常易于实现,希望你能考虑加入,并消除团队的不安!