Canigó. Exposar informació dels commits de Git

Darrera actualització: 07-07-2022

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:

Actuator info amb Plugin commit Git

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: