Introducció
Spring Boot inclou una sèrie de funcions addicionals per a ajudar a supervisar i gestionar les aplicacions.
L’objectiu d’aquest article és mostrar l’ús del servei info de l’actuator de Spring per a exposar la informació dels commits efectuats al Git.
Justificació
Un dels principals reptes d’una aplicació és identificar de forma fàcil i ràpida quin és el codi que hi ha desplegat en cada moment. En aquest sentit:
-
El plugin git-commit-id-plugin s’encarrega de generar el fitxer
git.properties
amb informació detallada de l’últim commit efectuat al Git, -
La llibreria spring-boot-starter-actuator ofereix (entre molts altres com: beans, mètriques, health, conditions, logger, etcètera) l’http endpoint info que proporciona informació que ens servirà per a identificar el servei.
A continuació s’explica com configurar i fer ús d’aquests dos components per a exposar aquesta informació i així permetre a l’usuari identificar el codi desplegat en cada moment.
Plugin git-commit-id-plugin
Configuració
Per a fer servir el git-commit-id-plugin
serà necessari afegir-lo al fitxer pom.xml
de l’aplicació.
Per defecte, el plugin cercarà informació al repositori Git remot, però si falla o no està disponible el servei, la construcció
acabarà amb error. Per a evitar això, es recomana aplicar la següent configuració:
<plugin>
<groupId>pl.project13.maven</groupId>
<artifactId>git-commit-id-plugin</artifactId>
<configuration>
<offline>true</offline>
<abbrevLength>40</abbrevLength>
<failOnNoGitDirectory>false</failOnNoGitDirectory>
<failOnUnableToExtractRepoInfo>false</failOnUnableToExtractRepoInfo>
</configuration>
</plugin>
Funcionament
En executar la comanda de construcció Maven, el plugin generarà el fitxer ./target/classes/git.properties
amb informació
detallada de l’últim commit al Git. Per exemple:
#Generated by Git-Commit-Id-Plugin
git.branch=master
git.build.host=canigo
git.build.time=2022-06-30T11\:53\:50+0200
git.build.user.email=changeme@gencat.cat
git.build.user.name=user
git.build.version=1.0.0
git.closest.tag.commit.count=
git.closest.tag.name=
git.commit.author.time=2022-06-21T20\:38\:01+0200
git.commit.committer.time=2022-06-21T20\:38\:01+0200
git.commit.id=0b8bbc460781345e25a0a276ab5e85c4a6567a37
git.commit.id.abbrev=0b8bbc460781345e25a0a276ab5e85c4a6567a37
git.commit.id.describe=0b8bbc4-dirty
git.commit.id.describe-short=0b8bbc4-dirty
git.commit.message.full=Proves
git.commit.message.short=Proves
git.commit.time=2022-06-21T20\:38\:01+0200
git.commit.user.email=changeme@gencat.cat
git.commit.user.name=user
git.dirty=true
git.local.branch.ahead=0
git.local.branch.behind=0
git.remote.origin.url=https\://git.intranet.gencat.cat/9999/canigo.git
git.tags=
git.total.commit.count=2
Actuator de Spring Boot
Configuració
Per a fer ús de l’actuator de Spring Boot
serà necessari afegir la corresponent llibreria com a dependència al fitxer pom.xml
de l’aplicació, tal com es mostra a continuació:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
L’actuator ofereix diferents endpoints amb informació diversa. En aquest cas, caldrà configurar l’endpoint info
al fitxer application.yml
:
management:
endpoints:
web:
exposure:
include: info
info:
git:
mode: full
enabled: true
Funcionament
Un cop construïda i iniciada l’aplicació, es podrà accedir via navegador web a l’endpoint info i ens mostrarà la informació detallada de l’últim commit efectuat al Git. Es pot veure al següent exemple:
Conclusió
És possible configurar un projecte Canigó per a permetre identificar de forma fàcil i ràpida el codi que està desplegat a l’entorn.
Referències
Per a més informació, podeu consultar: