Я думаю, что Spring Boot привносит что-то новое в таблицу, особенно в отношении DevOps — и я уже написал пост об этом . Однако есть нечто большее, чем метрики и проверки здоровья.
В одном из другого моего предыдущего поста, я описал , как обеспечить информацию контроля версий для 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
[email protected]
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
[email protected]
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 .