API di accesso al Giornale degli Eventi di GovPay
Il progetto utilizza librerie Spring Boot versione 3.5.7 e JDK 21.
Per la compilazione eseguire il seguente comando, verranno eseguiti anche i test.
mvn clean install -P [jar|war]Il profilo permette di selezionare il packaging dei progetti (jar o war).
I driver JDBC non sono inclusi nel fat jar e devono essere forniti esternamente a runtime.
Creare una directory (es. jdbc-drivers/) e copiarvi il driver del database utilizzato:
| Database | Driver |
|---|---|
| PostgreSQL | postgresql-42.7.9.jar |
| MySQL | mysql-connector-j-9.6.0.jar |
| Oracle | ojdbc11-23.26.1.0.0.jar |
| SQL Server | mssql-jdbc-12.8.2.jre11.jar |
| H2 | h2-2.4.240.jar |
Il jar utilizza PropertiesLauncher (layout ZIP) e richiede la proprietà loader.path per indicare
la directory contenente i driver JDBC:
# Avvio applicazione
java -Dloader.path=./jdbc-drivers -jar target/govpay-gde-api.jarPer sovrascrivere le proprietà definite nel file application.properties utilizzare il seguente sistema:
java -Dloader.path=./jdbc-drivers -Dspring.datasource.url=[NUOVO_VALORE] -jar target/govpay-gde-api.jarCon Docker la variabile d'ambiente LOADER_PATH viene impostata automaticamente dall'entrypoint
alla directory /opt/jdbc-drivers. I driver devono essere montati come volume o copiati nell'immagine:
# Montaggio volume con il driver JDBC
docker run -v ./jdbc-drivers:/opt/jdbc-drivers linkitaly/govpay-gde-apiAll'interno del file application.properties sono definite le seguenti proprietà:
# ----------- SPRING SERVLET ------------
server.port=[Porta su cui esporre il servizio in caso di avvio come applicazione standalone]
spring.mvc.servlet.path=[Basepath servizi]
# Abilitazione Endpoint /actuator/health/liveness
management.endpoints.web.base-path=[Basepath dove esporre i servizi di stato applicazione]
# -------------- BUSINESS LOGIC PROPERTIES ----------------
gde.time-zone=[TimeZone dell'applicazione]Gli endpoint /actuator/health e /actuator/prometheus rispondono di default sulla stessa porta
dell'applicazione (server.port). Per esporli su una porta dedicata impostare:
management.server.port=[Porta dedicata per gli endpoint actuator]oppure, in ambiente Docker, la variabile d'ambiente equivalente:
MANAGEMENT_SERVER_PORT=[Porta dedicata per gli endpoint actuator]Se non valorizzata, gli endpoint restano sulla porta applicativa.
Per la configurazione della connessione al database utilizzare le seguenti proprietà:
# Configurazione DB
spring.datasource.jndiName=[JNDI NAME del datasource]
spring.datasource.url=[URL CONNESSIONE DB]
spring.datasource.driverClassName=[CLASSE DRIVER JDBC]
spring.datasource.username=[USERNAME DB]
spring.datasource.password=[PASSWORD DB]
spring.jpa.database-platform=[DIALECT JPA]
spring.jpa.properties.hibernate.dialect=[DIALECT JPA]
spring.jpa.mapping-resources=META-INF/orm-[h2|hsql|mysql|oracle|postgres|sqlserver].xml
spring.jpa.hibernate.ddl-auto=[Configura il comportamento di Hibernate nella generazione dello schema del database.]
spring.datasource.hikari.connection-timeout=20000
spring.datasource.hikari.minimum-idle=2
spring.datasource.hikari.maximum-pool-size=5
spring.datasource.hikari.idle-timeout=10000
spring.datasource.hikari.max-lifetime=1000La configurazione del logging è gestita tramite le proprietà definite in application.properties:
logging.file.name=[Path completo del file di log]
logging.level.it.govpay=[Livello di log: DEBUG, INFO, WARN, ERROR]L'immagine Docker è disponibile su Docker Hub: linkitaly/govpay-gde-api
docker pull linkitaly/govpay-gde-api:latestPer la documentazione completa sull'utilizzo dell'immagine Docker consultare il file docker/DOCKER.md.
Il war è prodotto da ogni build della pipeline, insieme al jar. Dove recuperarlo dipende da cosa è stato costruito:
| Origine | Dove si trova |
|---|---|
| Release (tag) | Allegato alla release GitHub come govpay-gde-api-<tag>.war |
Sviluppo (push su main, versione SNAPSHOT) |
Nell'immagine linkitaly/govpay-gde-api-dev:<versione>, in /opt/govpay-gde/dist/govpay-gde-api.war |
| Qualsiasi build | Artifact govpay-gde-api della run di GitHub Actions (retention 90 giorni) |
Sulle versioni SNAPSHOT non esiste una release a cui il war sia allegato: viene quindi
incluso nell'immagine Docker di sviluppo, pubblicata a ogni push su main. Il war non è
usato a runtime dal container, che avvia il jar, ed è presente solo per essere estratto:
# Creare un container senza avviarlo, copiare il war e rimuovere il container
id=$(docker create linkitaly/govpay-gde-api-dev:2.0.1-SNAPSHOT)
docker cp "${id}:/opt/govpay-gde/dist/govpay-gde-api.war" ./govpay-gde-api.war
docker rm "${id}"La versione da usare come tag dell'immagine è quella del pom.xml sul branch main:
mvn -q -DforceStdout help:evaluate -Dexpression=project.versionPer costruire il war in locale, senza passare dalla pipeline:
mvn clean install -P war
# prodotto in target/govpay-gde-api.war