Skip to content

About

API di accesso al Giornale degli Eventi di GovPay

Resources

Stars

1 star

Watchers

8 watching

Forks

Repository files navigation

GovPay Logo

GovPay - Porta di accesso al sistema pagoPA - GDE Api

Quality Gate Status Docker Hub License: GPL v3 Spring Boot

Sommario

API di accesso al Giornale degli Eventi di GovPay

Istruzioni di compilazione

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).

Driver JDBC

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

Esecuzione

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.jar

Per 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.jar

Esecuzione con Docker

Con 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-api

Configurazione

All'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]

Configurazione porta Actuator / Prometheus

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.

Configurazione connessione al database

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=1000

Configurazione logging

La 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]

Docker

L'immagine Docker è disponibile su Docker Hub: linkitaly/govpay-gde-api

docker pull linkitaly/govpay-gde-api:latest

Per la documentazione completa sull'utilizzo dell'immagine Docker consultare il file docker/DOCKER.md.

Reperire il war per il deploy su application server

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.version

Per costruire il war in locale, senza passare dalla pipeline:

mvn clean install -P war
# prodotto in target/govpay-gde-api.war

About

API di accesso al Giornale degli Eventi di GovPay

Resources

Stars

1 star

Watchers

8 watching

Forks

Releases

Packages

Used by

Contributors

Languages