
В одном из другого моего предыдущего поста, я описал , как обеспечить информацию контроля версий для Maven построенных приложений. Эта статья расскажет, как этот пост не нужен при использовании Spring Boot.
В качестве напоминания, просто добавив добавление spring-boot-starter-actuatorзависимости в POM, включите множество конечных точек, среди которых:
/metricsдля мониторинга приложения/healthчтобы проверить приложение может доставить ожидаемый сервис/beanперечисляет все бобы Spring в контексте/configpropsперечисляет все свойства, относящиеся к текущему профилю (ам)
Среди тех, один из них представляет особый интерес: /info. По умолчанию он отображает… ничего — или, точнее, строковое представление пустого объекта JSON.
Однако любое свойство, заданное в application.propertiesфайле (или один из его вариантов профиля), попадет на страницу. Например:
| Файл свойств | Вывод | |
| ключ | Стоимость | |
| info.application.name | My Demo App |
|
Настройка статической информации, безусловно, хорошая, но наша цель — получить версию моего приложения в Spring Boot. application.propertiesфайлы автоматически фильтруются Spring Boot на process-resourcesэтапе сборки. Можно использовать любое свойство в POM: его просто нужно установить между @символами. Например:
| Файл свойств | Вывод | |
| ключ | Стоимость | |
| info.application.version | @ Project.version @ |
|
Обратите внимание, что плагин Spring Boot Maven удалит сгенерированные ресурсы, и поэтому приложение будет использовать файл свойств нефильтрованного ресурса из источников. Чтобы сохранить (и использовать) сгенерированные ресурсы, настройте плагин в POM следующим образом:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<addResources>false</addResources>
</configuration>
</plugin>
</plugins>
</build>
На данный момент у нас есть аналог предыдущей статьи, но мы можем пойти еще дальше. В maven-git-commit-id-pluginсгенерированном виде git.propertiesбудет вся возможная информация, связанная с git. Следующий фрагмент кода является примером созданного файла:
#Generated by Git-Commit-Id-Plugin
#Fri Jul 10 23:36:40 CEST 2015
git.tags=
git.commit.id.abbrev=bf4afbf
git.commit.user.email=nicolas@frankel.ch
git.commit.message.full=Initial commit\n
git.commit.id=bf4afbf167d51909bd984c35ad5b85a66b9c44b9
git.commit.id.describe-short=bf4afbf
git.commit.message.short=Initial commit
git.commit.user.name=Nicolas Frankel
git.build.user.name=Nicolas Frankel
git.commit.id.describe=bf4afbf
git.build.user.email=nicolas@frankel.ch
git.branch=master
git.commit.time=2015-07-10T23\:34\:46+0200
git.build.time=2015-07-10T23\:36\:40+0200
git.remote.origin.url=Unknown
Из всех этих данных в конечной точке используются только следующие:
| ключ | Вывод |
| git.branch |
|
| git.commit.id | |
| git.commit.time |
Поскольку путь и форматирование согласованы, вы можете разработать cronjob для анализа всех ваших приложений и создания вики-страницы со всей этой информацией для каждого сервера / среды. Больше не нужно ssh сервера и копаться в файловой системе, чтобы раскрыть версию.
Таким образом, /infoконечная точка может быть очень мощным активом в вашей организации, независимо от того, являетесь ли вы DevOps самостоятельно или только готовы помочь своим Ops. Более подробную информацию можно найти в документации по Spring Boot .