Skip to content

Commit a1a8130

Browse files
authored
fix: Fix CVE, upgrade SpringBoot 4 (#342) (#343)
2 parents 7655613 + 9027a37 commit a1a8130

33 files changed

+947
-615
lines changed

Dockerfile

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,11 @@
44
# 🎯 Version Management
55
#
66
ARG IMAGE="public.ecr.aws/docker/library/eclipse-temurin"
7-
ARG IMAGE_VERSION="21-alpine-3.21"
8-
ARG IMAGE_SHA="cafcfad1d9d3b6e7dd983fa367f085ca1c846ce792da59bcb420ac4424296d56"
9-
ARG GRADLE_VERSION="8.10.2"
10-
ARG GRADLE_DOWNLOAD_SHA256="31c55713e40233a8303827ceb42ca48a47267a0ad4bab9177123121e71524c26"
11-
ARG APPINSIGHTS_VERSION="3.7.4"
7+
ARG IMAGE_VERSION="21-alpine-3.22"
8+
ARG IMAGE_SHA="c4799f335a65b1ecca8a31239b05522f2b0a184d6818f6349e83484ee6956198"
9+
ARG GRADLE_VERSION="8.14.3"
10+
ARG GRADLE_DOWNLOAD_SHA256="bd71102213493060956ec229d946beee57158dbd89d0e62b91bca0fa2c5f3531"
11+
ARG APPINSIGHTS_VERSION="3.7.6"
1212

1313
# 🌍 Timezone Configuration
1414
ARG TZ="Europe/Rome"

build.gradle.kts

Lines changed: 74 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,14 @@ import com.github.jk1.license.filter.*
44

55
plugins {
66
java
7-
id("org.springframework.boot") version "3.5.6"
7+
id("org.springframework.boot") version "4.0.0"
88
id("io.spring.dependency-management") version "1.1.7"
99
jacoco
10-
id("org.sonarqube") version "6.3.1.5724"
11-
id("com.github.ben-manes.versions") version "0.52.0"
12-
id("org.openapi.generator") version "7.15.0"
10+
id("org.sonarqube") version "7.2.1.6560"
11+
id("com.github.ben-manes.versions") version "0.53.0"
12+
id("org.openapi.generator") version "7.17.0"
1313
id("org.ajoberstar.grgit") version "5.3.2"
14-
id("com.gorylenko.gradle-git-properties") version "2.5.3"
14+
id("com.gorylenko.gradle-git-properties") version "2.5.4"
1515
id("com.github.jk1.dependency-license-report") version "3.0.1"
1616
}
1717

@@ -35,7 +35,8 @@ configurations {
3535
}
3636

3737
licenseReport {
38-
renderers = arrayOf(XmlReportRenderer("third-party-libs.xml", "Back-End Libraries"))
38+
renderers =
39+
arrayOf(XmlReportRenderer("third-party-libs.xml", "Back-End Libraries"))
3940
outputDir = "$projectDir/dependency-licenses"
4041
filters = arrayOf(SpdxLicenseBundleNormalizer())
4142
}
@@ -55,53 +56,61 @@ repositories {
5556
}
5657
}
5758

58-
dependencyManagement {
59-
imports {
60-
mavenBom("org.springframework.cloud:spring-cloud-dependencies:2024.0.1")
61-
}
62-
}
63-
64-
val springDocOpenApiVersion = "2.8.13"
65-
val openApiToolsVersion = "0.2.7"
66-
val springWolfAsyncApiVersion = "1.16.0"
67-
val micrometerVersion = "1.5.4"
68-
val otelVersion = "1.49.0"
69-
val bouncycastleVersion = "1.82"
59+
val springDocOpenApiVersion = "3.0.0"
60+
val openApiToolsVersion = "0.2.8"
61+
val springWolfAsyncApiVersion = "1.20.0"
62+
val micrometerVersion = "1.6.1"
63+
val otelVersion = "1.57.0"
64+
val bouncycastleVersion = "1.83"
7065
val mapStructVersion = "1.6.3"
71-
val temporalVersion = "1.31.0"
72-
val protobufJavaVersion = "4.32.1"
73-
val grpcBomVersion = "1.75.0"
66+
val temporalVersion = "1.32.1"
67+
val protobufJavaVersion = "4.33.2"
68+
val grpcBomVersion = "1.77.0"
7469
val guavaVersion = "33.5.0-jre"
75-
val postgresJdbcVersion = "42.7.7"
70+
val postgresJdbcVersion = "42.7.8"
7671
val podamVersion = "8.0.2.RELEASE"
77-
val caffeineVersion = "3.2.2"
78-
val commonsLang3Version = "3.19.0"
72+
val caffeineVersion = "3.2.3"
73+
val commonsLang3Version = "3.20.0"
74+
val lz4JavaVersion = "1.10.1"
75+
val springCloudDepsVersion = "2025.1.0"
76+
77+
val p4paActivitiesVersion = "1.163.2"
7978

80-
val p4paActivitiesVersion = "1.163.0"
79+
dependencyManagement {
80+
imports {
81+
mavenBom("org.springframework.cloud:spring-cloud-dependencies:$springCloudDepsVersion")
82+
}
83+
}
8184

8285
dependencies {
83-
implementation("org.springframework.boot:spring-boot-starter")
84-
implementation("org.springframework.boot:spring-boot-starter-web")
86+
implementation("org.springframework.boot:spring-boot-starter-webmvc")
87+
implementation("org.springframework.boot:spring-boot-starter-opentelemetry")
88+
implementation("org.springframework.boot:spring-boot-starter-restclient")
8589
implementation("org.springframework.boot:spring-boot-starter-validation")
86-
implementation("org.springframework.boot:spring-boot-starter-oauth2-resource-server")
90+
implementation("org.springframework.boot:spring-boot-starter-security-oauth2-resource-server")
8791
implementation("org.springframework.boot:spring-boot-starter-data-jpa") {
8892
exclude(group = "org.glassfish.jaxb", module = "jaxb-core")
8993
}
9094
implementation("org.springframework.boot:spring-boot-starter-cache")
9195
implementation("com.github.ben-manes.caffeine:caffeine:$caffeineVersion")
96+
implementation("org.springframework.boot:spring-boot-starter-hateoas")
9297
implementation("org.springframework.boot:spring-boot-starter-data-rest")
93-
implementation("org.springframework.cloud:spring-cloud-starter-stream-kafka")
98+
implementation("org.springframework.cloud:spring-cloud-starter-stream-kafka") {
99+
exclude(group = "org.lz4", module = "lz4-java")
100+
}
101+
implementation("at.yawk.lz4:lz4-java:$lz4JavaVersion")
94102
implementation("org.springframework.boot:spring-boot-starter-actuator")
95103
implementation("io.micrometer:micrometer-tracing-bridge-otel:$micrometerVersion")
96104
implementation("io.micrometer:micrometer-registry-prometheus")
97105
implementation("org.springdoc:springdoc-openapi-starter-webmvc-ui:$springDocOpenApiVersion") {
98106
exclude(group = "org.apache.commons", module = "commons-lang3")
99107
}
100-
implementation ("org.apache.commons:commons-lang3:${commonsLang3Version}")
101-
implementation("io.github.springwolf:springwolf-kafka:$springWolfAsyncApiVersion")
108+
implementation("org.apache.commons:commons-lang3:${commonsLang3Version}")
109+
implementation("io.github.springwolf:springwolf-kafka:$springWolfAsyncApiVersion") {
110+
exclude(group = "org.lz4", module = "lz4-java")
111+
}
102112
implementation("io.github.springwolf:springwolf-ui:$springWolfAsyncApiVersion")
103113
implementation("io.github.springwolf:springwolf-cloud-stream:$springWolfAsyncApiVersion")
104-
implementation("com.fasterxml.jackson.datatype:jackson-datatype-jsr310")
105114
implementation("org.openapitools:jackson-databind-nullable:$openApiToolsVersion")
106115
implementation("org.mapstruct:mapstruct:$mapStructVersion")
107116
implementation("org.bouncycastle:bcprov-jdk18on:$bouncycastleVersion")
@@ -139,7 +148,8 @@ dependencies {
139148
testAnnotationProcessor("org.mapstruct:mapstruct-processor:$mapStructVersion")
140149

141150
// Testing
142-
testImplementation("org.springframework.boot:spring-boot-starter-test")
151+
testImplementation("org.springframework.boot:spring-boot-starter-webmvc-test")
152+
testImplementation("org.springframework.boot:spring-boot-starter-security-test")
143153
testImplementation("org.mockito:mockito-core")
144154
testImplementation("org.projectlombok:lombok")
145155
testImplementation("io.temporal:temporal-testing")
@@ -212,30 +222,37 @@ openApiGenerate {
212222
outputDir.set("$projectDir/build/generated")
213223
apiPackage.set("it.gov.pagopa.pu.workflow.controller.generated")
214224
modelPackage.set("it.gov.pagopa.pu.workflow.dto.generated")
215-
typeMappings.set(mapOf(
216-
"DebtPositionDTO" to "it.gov.pagopa.pu.debtposition.dto.generated.DebtPositionDTO",
217-
"IngestionFlowFileType" to "it.gov.pagopa.pu.processexecutions.dto.generated.IngestionFlowFile.IngestionFlowFileTypeEnum",
218-
"ExportFileType" to "it.gov.pagopa.pu.processexecutions.dto.generated.ExportFile.ExportFileTypeEnum",
219-
"WfExecutionConfig" to "it.gov.pagopa.payhub.activities.dto.debtposition.syncwfconfig.WfExecutionConfig",
220-
"FineWfExecutionConfig" to "it.gov.pagopa.payhub.activities.dto.debtposition.syncwfconfig.FineWfExecutionConfig",
221-
"WorkflowTypeOrg" to "it.gov.pagopa.pu.workflow.model.WorkflowTypeOrg",
222-
"ScheduleEnum" to "it.gov.pagopa.pu.workflow.enums.ScheduleEnum",
223-
"WorkflowExecutionStatus" to "io.temporal.api.enums.v1.WorkflowExecutionStatus"
224-
))
225-
configOptions.set(mapOf(
226-
"dateLibrary" to "java8",
227-
"requestMappingMode" to "api_interface",
228-
"useSpringBoot3" to "true",
229-
"interfaceOnly" to "true",
230-
"useTags" to "true",
231-
"useBeanValidation" to "true",
232-
"generateConstructorWithAllArgs" to "true",
233-
"generatedConstructorWithRequiredArgs" to "true",
234-
"additionalModelTypeAnnotations" to "@lombok.Builder"
235-
))
236-
}
237-
238-
var targetEnv = when (Objects.requireNonNullElse(System.getProperty("targetBranch"), grgit.branch.current().name)) {
225+
typeMappings.set(
226+
mapOf(
227+
"DebtPositionDTO" to "it.gov.pagopa.pu.debtposition.dto.generated.DebtPositionDTO",
228+
"IngestionFlowFileType" to "it.gov.pagopa.pu.processexecutions.dto.generated.IngestionFlowFile.IngestionFlowFileTypeEnum",
229+
"ExportFileType" to "it.gov.pagopa.pu.processexecutions.dto.generated.ExportFile.ExportFileTypeEnum",
230+
"WfExecutionConfig" to "it.gov.pagopa.payhub.activities.dto.debtposition.syncwfconfig.WfExecutionConfig",
231+
"FineWfExecutionConfig" to "it.gov.pagopa.payhub.activities.dto.debtposition.syncwfconfig.FineWfExecutionConfig",
232+
"WorkflowTypeOrg" to "it.gov.pagopa.pu.workflow.model.WorkflowTypeOrg",
233+
"ScheduleEnum" to "it.gov.pagopa.pu.workflow.enums.ScheduleEnum",
234+
"WorkflowExecutionStatus" to "io.temporal.api.enums.v1.WorkflowExecutionStatus"
235+
)
236+
)
237+
configOptions.set(
238+
mapOf(
239+
"dateLibrary" to "java8",
240+
"requestMappingMode" to "api_interface",
241+
"useSpringBoot3" to "true",
242+
"interfaceOnly" to "true",
243+
"useTags" to "true",
244+
"useBeanValidation" to "true",
245+
"generateConstructorWithAllArgs" to "true",
246+
"generatedConstructorWithRequiredArgs" to "true",
247+
"additionalModelTypeAnnotations" to "@lombok.Builder"
248+
)
249+
)
250+
}
251+
252+
var targetEnv = when (Objects.requireNonNullElse(
253+
System.getProperty("targetBranch"),
254+
grgit.branch.current().name
255+
)) {
239256
"uat" -> "uat"
240257
"main" -> "main"
241258
else -> "develop"

0 commit comments

Comments
 (0)