Бонус: исправление его иногда загадочного отсутствия
Spring Boot Actuator великолепен. Среди множества функций /actuator/info
мы получаем информацию о приложении, которое мы запускаем.
Вышеупомянутое содержит 2 ключевых элемента информации: информацию о git и информацию о сборке. Информация Git сообщает нам точную версию git, из которой создано текущее запущенное приложение. Информация о сборке, с другой стороны, сообщает нам точную среду (например, время, версию, хост и т. д.) сборки.
Если вы запускаете свою сборку в среде CI/CD, например. GitLab, /actuator/info
, может сообщить нам точный номер конвейера, который создал и, возможно, развернул приложение.
С помощью нескольких простых шагов мы узнаем, как заставить его отображать всю такую информацию.
Включить информацию об приводе
Во-первых, убедитесь, что у вас включен Spring Boot Actuator. Предполагая, что вы используете maven, убедитесь, что вы либо выбрали Actuator в https://start.spring.io/, либо включили его зависимость в POM.
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> </dependencies>
/actuator/info
пока ничего не возвращает. Он даже недоступен. Чтобы включить эту конечную точку, добавьте следующее в application.properties
management.endpoints.web.exposure.include=info, health
/actuator/info
по-прежнему ничего не возвращает. Нам нужен еще один плагин для предоставления необходимой информации.
Настройте плагин «git-commit-id»
Мы будем использовать подключаемый модуль maven с именем «git-commit-id» для создания файла git.properties
, который подхватывается GitInfoContributor
Springboot Actuator для возврата git и информации о сборке приложения.
Добавьте следующее в POM
<plugin> <groupId>io.github.git-commit-id</groupId> <artifactId>git-commit-id-maven-plugin</artifactId> <version>5.0.0</version> <executions> <execution> <id>get-the-git-infos</id> <goals> <goal>revision</goal> </goals> <phase>initialize</phase> </execution> </executions> <configuration> <generateGitPropertiesFile>true</generateGitPropertiesFile> <generateGitPropertiesFilename>${project.build.outputDirectory}/git.properties</generateGitPropertiesFilename> <commitIdGenerationMode>full</commitIdGenerationMode> </configuration> </plugin>
И это тоже для application.properties
, чтобы показать полное содержание в git.properties
management.info.git.mode=full
Пока все хорошо, если вы запустите демонстрационное приложение на локальной машине, как я сделал выше.
Получение номера конвейера GitLab в информации о сборке
Как только вы создадите свое приложение в среде CI/CD, например. GitLab, GitHub, Circle, плагин maven добавляет дополнительную информацию, такую как git.build.number
и git.build.number.unique
, в git.properties
, откуда /actuator/info
будет собирать и показывать.
Предполагая, что вы установили GitLab CI/CD и создаете свое приложение по запросу или автоматически, следующее содержимое в git.properties
фиксирует точный номер конвейера, на котором было создано ваше приложение.
#Generated by Git-Commit-Id-Plugin git.branch=master git.build.host=runner-xxurkrix-project-44840724-concurrent-0 git.build.number=5 git.build.number.unique=825731749 git.build.time=2023-04-03T01\:20\:08+0000 git.build.user.email= git.build.user.name= git.build.version=0.0.1-SNAPSHOT
После развертывания /actuator/info
приложения должно показать нам информацию о сборке с правильным номером конвейера.
Бонус: исправление загадочного отсутствия git.build.number.unique
Это должно быть редко, потому что я никогда не видел, чтобы это происходило с вышеуказанной настройкой. Но это произошло, когда мой коллега попытался прочитать git.properties
и переделать конечную точку /actuator/info
.
Виновником здесь является наличие ключей git.build.number
и git.build.number.unique
. Они подходят для файла .properties
, но не являются допустимыми записями для документа JSON, который возвращает /actuator/info
.
#Generated by Git-Commit-Id-Plugin git.branch=master git.build.host=runner-xxurkrix-project-44840724-concurrent-0 git.build.number=5 git.build.number.unique=825731749 git.build.time=2023-04-03T01\:20\:08+0000 git.build.user.email= git.build.user.name= git.build.version=0.0.1-SNAPSHOT
Каким-то образом GitInfoContributor
актуатора может получить правильное значение от git.build.number.unique
. Возможно, его разработчику повезло, потому что я не смог найти какой-либо специальной обработки для двух вышеуказанных конфликтующих записей в исходном коде GitInfoContributor
Решение простое: исключите избыточное свойство git.build.number
. Нам нужно использовать регулярное выражение в приведенной ниже конфигурации <excludeProperty>
, потому что мы хотим исключить только это свойство и при этом сохранить git.build.number.unique
.
<configuration> <generateGitPropertiesFile>true</generateGitPropertiesFile> <generateGitPropertiesFilename>${project.build.outputDirectory}/git.properties</generateGitPropertiesFilename> <commitIdGenerationMode>full</commitIdGenerationMode> <excludeProperties> <excludeProperty>^git.build.number$</excludeProperty> </excludeProperties> </configuration>
Повышение уровня кодирования
Спасибо, что являетесь частью нашего сообщества! Перед тем, как ты уйдешь:
- 👏 Хлопайте за историю и подписывайтесь на автора 👉
- 📰 Смотрите больше контента в публикации Level Up Coding
- 💰 Бесплатный курс собеседования по программированию ⇒ Просмотреть курс
- 🔔 Подписывайтесь на нас: Twitter | ЛинкедИн | "Новостная рассылка"
🚀👉 Присоединяйтесь к коллективу талантов Level Up и найдите прекрасную работу