Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
44 commits
Select commit Hold shift + click to select a range
ed4895a
chore: update Java version in Dockerfile and sdkmanrc to liberica
csikb Aug 26, 2025
e5883ee
chore: update Java version in Dockerfile and sdkmanrc to liberica
csikb Aug 26, 2025
420ee01
chore: update upload-artifact action to v4.6.2 in gradle.yml
csikb Aug 26, 2025
27e6762
chore: update upload-artifact action to v4.6.2 in gradle.yml
csikb Aug 26, 2025
96dc8c5
chore: update upload-artifact action to v4.6.2 in gradle.yml
csikb Aug 26, 2025
1806ace
Merge branch 'refs/heads/main' into gh-actions
csikb Aug 29, 2025
3542708
feat: add SonarQube plugin and configuration for code quality analysis
csikb Aug 29, 2025
7bf6e7e
fix: update gradle.yml to set fetch-depth for Git blame information
csikb Aug 29, 2025
58e244c
Merge branch 'main' into gh-actions
csikb Sep 16, 2025
eca713d
Update gradle.yml
csikb Sep 16, 2025
790cdb3
chore: update scorecard.yml for improved GitHub Actions integration
csikb Sep 16, 2025
c3aab6b
feat: add application configuration and initial test setup
csikb Sep 19, 2025
50095f5
Merge branch 'main' into gh-actions
csikb Sep 20, 2025
7a15f24
feat: upgrade to Java 25 and update Gradle wrapper to 9.1.0
csikb Sep 23, 2025
9875214
feat: update Kotlin dependencies to version 2.3.0
csikb Sep 23, 2025
373be78
Merge branch 'main' into jdk-25
csikb Sep 23, 2025
3ecfdd3
Merge branch 'main' into jdk-25
csikb Sep 29, 2025
4e60d29
Update .sdkmanrc
csikb Sep 29, 2025
0bd6b28
feat: update Kotlin dependencies to 2.3.0-dev-9673 and add bootstrap …
csikb Oct 4, 2025
a5acf33
Merge branch 'main' into jdk-25
csikb Oct 4, 2025
1d57787
chore: update Dockerfile to use specific image digest for build
csikb Oct 4, 2025
697da06
refactor: remove unnecessary whitespace in BssWebApplicationTest
csikb Oct 4, 2025
c0558a5
chore: update OpenJDK image version to 25.0 in config.yml
csikb Oct 4, 2025
b61e4ad
chore: update OpenJDK image version to 25.0 in config.yml
csikb Oct 4, 2025
05cb963
chore: reorganize Dockerfile and settings.gradle.kts for improved bui…
csikb Oct 4, 2025
d4031cc
Merge branch 'main' into gh-actions
csikb Oct 4, 2025
7b42750
chore: optimize Dockerfile with cache mounts for gradle builds
csikb Oct 4, 2025
3b7049d
Merge branch 'main' into gh-actions
csikb Oct 4, 2025
330e4e2
Merge branch 'main' into gh-actions
csikb Oct 4, 2025
817f6b7
Merge branch 'gh-actions' into jdk-25
csikb Oct 4, 2025
62bda84
chore: update Java version to 25 in gradle.yml and modify docker.yml …
csikb Oct 4, 2025
13df06e
chore: remove conditional platform setting from docker.yml
csikb Oct 4, 2025
858fbb5
Merge branch 'main' into jdk-25
csikb Nov 13, 2025
3e6b020
Update build.gradle.kts
csikb Nov 13, 2025
073755c
chore(deps): update Kotlin dependencies and Detekt version
csikb Nov 13, 2025
c792695
chore(deps): update Kotlin dependencies and Detekt version
csikb Nov 13, 2025
01743b5
chore(deps): update Kotlin dependencies and Detekt version
csikb Nov 13, 2025
ebfea61
chore(deps): update Kotlin dependencies and Detekt version
csikb Nov 13, 2025
7da06dd
Update libs.versions.toml
csikb Nov 21, 2025
49516b8
Update build.gradle.kts
csikb Nov 21, 2025
412a015
perf(deps): update bellsoft/liberica-runtime-container docker tag
renovate[bot] Nov 21, 2025
c2b941c
Merge remote-tracking branch 'origin/renovate/bellsoft-liberica-runti…
csikb Nov 21, 2025
3244b4a
chore(deps): update Kotlin dependencies and Detekt version
csikb Nov 21, 2025
29d3a03
chore(build): remove deprecated Detekt snapshot repository
csikb Nov 21, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/gradle.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ jobs:
- uses: actions/setup-java@dded0888837ed1f317902acf8a20df0ad188d165 # v5.0.0
with:
distribution: "liberica"
java-version: 21
java-version: 25
- uses: gradle/actions/setup-gradle@4d9f0ba0025fe599b4ebab900eb7f3a1d93ef4c2 # v5.0.0
with:
cache-encryption-key: ${{ secrets.GRADLE_ENCRYPTION_KEY }}
Expand Down
2 changes: 1 addition & 1 deletion .sdkmanrc
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
# Enable auto-env through the sdkman_auto_env config
# Add key=value pairs of SDKs to use below
java=21.0.8-librca
java=25-librca
4 changes: 2 additions & 2 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM bellsoft/liberica-runtime-container:jdk-21.0.9_11-cds-musl@sha256:5496387564e4d750e81e9f0ecb01efa372a8e83caa39fbac793d29ecf9881e5d AS build
FROM bellsoft/liberica-runtime-container:jdk-25.0.1_11-cds-musl@sha256:b0c86d868c5ef7a5828fbf8b511910f0019491f0b04b739cf25bb340a63a6601 AS build
WORKDIR /usr/src/app
# cache dependencies
COPY ./buildSrc/*.gradle.kts ./buildSrc/
Expand Down Expand Up @@ -26,7 +26,7 @@ ARG BUILD_ARG="bootJar"
RUN --mount=type=cache,target=/root/.gradle \
./gradlew ${BUILD_ARG}

FROM bellsoft/liberica-runtime-container:jre-25-cds-musl@sha256:67bd5da45bfceacc89d642ad38771fbfbe44c00ea73e90ec646e417df8d940e5 AS app
FROM bellsoft/liberica-runtime-container:jre-25.0.1_11-cds-musl@sha256:67bd5da45bfceacc89d642ad38771fbfbe44c00ea73e90ec646e417df8d940e5 AS app
# use non-root user
RUN addgroup -S spring && adduser -S spring -G spring
USER spring:spring
Expand Down
65 changes: 21 additions & 44 deletions buildSrc/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -11,54 +11,31 @@ dependencies {
implementation(libs.plugin.springBoot)
implementation(libs.plugin.spotless)
implementation(libs.plugin.detekt)
implementation(kotlin("allopen", "2.2.21"))
implementation(kotlin("gradle-plugin", "2.2.21"))
implementation(libs.kotlin.allopen)
implementation(libs.kotlin.gradle.plugin)
// required for kotlin plugin jpa
implementation(kotlin("reflect", "2.2.21"))
implementation(kotlin("stdlib-jdk8", "2.2.21"))
implementation(kotlin("noarg", "2.2.21"))
implementation(libs.kotlin.reflect)
implementation(libs.kotlin.stdlib.jdk8)
implementation(libs.kotlin.noarg)
Comment on lines +14 to +19
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

CRITICAL: Verify version catalog definitions for Kotlin dependencies.

The code now references version catalog entries (libs.kotlin.*), but a previous review flagged that gradle/libs.versions.toml does not exist. If this file is still missing, the build will fail at dependency resolution time.

Verify that all five Kotlin library entries are properly defined in gradle/libs.versions.toml:

  • kotlin.allopen
  • kotlin.gradle-plugin
  • kotlin.reflect
  • kotlin.stdlib-jdk8
  • kotlin.noarg

🏁 Script executed:

#!/bin/bash
# Description: Verify that gradle/libs.versions.toml exists and defines all required Kotlin libraries

# Check if gradle/libs.versions.toml exists
if [ ! -f gradle/libs.versions.toml ]; then
  echo "ERROR: gradle/libs.versions.toml does not exist"
  exit 1
fi

# Search for required Kotlin library definitions
echo "Checking for required Kotlin library definitions:"
rg -c 'kotlin\.(allopen|gradle-plugin|reflect|stdlib-jdk8|noarg)' gradle/libs.versions.toml

Length of output: 47


🏁 Script executed:

#!/bin/bash
# Search for any version catalog files in the repository
echo "Looking for version catalog files (*.versions.toml or libs.versions.toml):"
fd -e "versions.toml" . 2>/dev/null || echo "No *.versions.toml files found"

# Also check for gradle directory structure
echo ""
echo "Gradle directory contents:"
ls -la gradle/ 2>/dev/null || echo "gradle/ directory not found"

# Check if gradle/libs.versions.toml is referenced anywhere else in build files
echo ""
echo "Searching for references to libs.versions.toml or version catalog:"
rg -i "libs\.versions|version.catalog" --type gradle --type kotlin 2>/dev/null | head -20 || echo "No references found"

Length of output: 420


}

gradlePlugin {
plugins.create("dependency-management") {
id = "hu.bsstudio.gradle.dependency-management"
implementationClass = "hu.bsstudio.gradle.DependencyManagementPlugin"
}
plugins.create("detekt-convention") {
id = "hu.bsstudio.gradle.detekt-convention"
implementationClass = "hu.bsstudio.gradle.DetektConventionPlugin"
}
plugins.create("integration-test-convention") {
id = "hu.bsstudio.gradle.integration-test-convention"
implementationClass = "hu.bsstudio.gradle.IntegrationTestConventionPlugin"
}
plugins.create("jacoco-convention") {
id = "hu.bsstudio.gradle.jacoco-convention"
implementationClass = "hu.bsstudio.gradle.JacocoConventionPlugin"
}
plugins.create("java-convention") {
id = "hu.bsstudio.gradle.java-convention"
implementationClass = "hu.bsstudio.gradle.JavaConventionPlugin"
}
plugins.create("java-library-convention") {
id = "hu.bsstudio.gradle.java-library-convention"
implementationClass = "hu.bsstudio.gradle.JavaLibraryConventionPlugin"
}
plugins.create("kotlin-convention") {
id = "hu.bsstudio.gradle.kotlin-convention"
implementationClass = "hu.bsstudio.gradle.KotlinConventionPlugin"
}
plugins.create("spotless-convention") {
id = "hu.bsstudio.gradle.spotless-convention"
implementationClass = "hu.bsstudio.gradle.SpotlessConventionPlugin"
}
plugins.create("spring-app-convention") {
id = "hu.bsstudio.gradle.spring-app-convention"
implementationClass = "hu.bsstudio.gradle.SpringAppConventionPlugin"
}
plugins.create("testing-convention") {
id = "hu.bsstudio.gradle.test-convention"
implementationClass = "hu.bsstudio.gradle.TestConventionPlugin"
mapOf(
"dependency-management" to "hu.bsstudio.gradle.DependencyManagementPlugin",
"detekt-convention" to "hu.bsstudio.gradle.DetektConventionPlugin",
"integration-test-convention" to "hu.bsstudio.gradle.IntegrationTestConventionPlugin",
"jacoco-convention" to "hu.bsstudio.gradle.JacocoConventionPlugin",
"java-convention" to "hu.bsstudio.gradle.JavaConventionPlugin",
"java-library-convention" to "hu.bsstudio.gradle.JavaLibraryConventionPlugin",
"kotlin-convention" to "hu.bsstudio.gradle.KotlinConventionPlugin",
"spotless-convention" to "hu.bsstudio.gradle.SpotlessConventionPlugin",
"spring-app-convention" to "hu.bsstudio.gradle.SpringAppConventionPlugin",
"testing-convention" to "hu.bsstudio.gradle.TestConventionPlugin",
).forEach { (id, implementationClass) ->
plugins.create(id) {
this.id = "hu.bsstudio.gradle.$id"
this.implementationClass = implementationClass
}
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,9 @@ class DependencyManagementPlugin : Plugin<Project> {
override fun apply(project: Project) {
project.repositories {
mavenCentral()
maven {
url = project.uri("https://redirector.kotlinlang.org/maven/bootstrap")
}
}

project.dependencies {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package hu.bsstudio.gradle

import io.gitlab.arturbosch.detekt.DetektPlugin
import io.gitlab.arturbosch.detekt.extensions.DetektExtension
import dev.detekt.gradle.extensions.DetektExtension
import dev.detekt.gradle.plugin.DetektPlugin
import org.gradle.api.Plugin
import org.gradle.api.Project
import org.gradle.kotlin.dsl.apply
Expand All @@ -12,7 +12,6 @@ class DetektConventionPlugin : Plugin<Project> {
project.pluginManager.apply(DetektPlugin::class)

project.extensions.configure<DetektExtension> {
buildUponDefaultConfig = true
config.setFrom(project.layout.settingsDirectory.file("detekt.yml"))
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ class JavaConventionPlugin : Plugin<Project> {

project.extensions.configure(JavaPluginExtension::class) {
toolchain {
languageVersion.set(JavaLanguageVersion.of(21))
languageVersion.set(JavaLanguageVersion.of(25))
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ class JavaLibraryConventionPlugin : Plugin<Project> {

project.extensions.configure(JavaPluginExtension::class) {
toolchain {
languageVersion.set(JavaLanguageVersion.of(21))
languageVersion.set(JavaLanguageVersion.of(25))
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ class KotlinConventionPlugin : Plugin<Project> {
freeCompilerArgs = listOf("-Xjsr305=strict")
extraWarnings = true
allWarningsAsErrors = true
jvmTarget = org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_21
jvmTarget = org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_25
}
}
}
Expand Down
10 changes: 8 additions & 2 deletions gradle/libs.versions.toml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@ springdoc = "2.8.14"
springBoot = "3.5.8"
kotest = "6.0.5"
spotless = "8.1.0"
detekt = "1.23.8"
detekt = "2.0.0-alpha.1"
kotlin = "2.3.0-Beta2"

[plugins]
spotless = { id = "com.diffplug.spotless", version.ref = "spotless" }
Expand All @@ -14,4 +15,9 @@ kotestAssertionsJson = { module = "io.kotest:kotest-assertions-json", version.re

plugin-springBoot = { module = "org.springframework.boot:spring-boot-gradle-plugin", version.ref = "springBoot" }
plugin-spotless = { module = "com.diffplug.spotless:spotless-plugin-gradle", version.ref = "spotless" }
plugin-detekt = { module = "io.gitlab.arturbosch.detekt:detekt-gradle-plugin", version.ref = "detekt" }
plugin-detekt = { module = "dev.detekt:detekt-gradle-plugin", version.ref = "detekt" }
kotlin-allopen = { module = "org.jetbrains.kotlin:kotlin-allopen", version.ref = "kotlin" }
kotlin-gradle-plugin = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin", version.ref = "kotlin" }
kotlin-reflect = { module = "org.jetbrains.kotlin:kotlin-reflect", version.ref = "kotlin" }
kotlin-stdlib-jdk8 = { module = "org.jetbrains.kotlin:kotlin-stdlib-jdk8", version.ref = "kotlin" }
kotlin-noarg = { module = "org.jetbrains.kotlin:kotlin-noarg", version.ref = "kotlin" }
5 changes: 5 additions & 0 deletions server/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ plugins {
id("hu.bsstudio.gradle.spotless-convention")
id("hu.bsstudio.gradle.kotlin-convention")
id("hu.bsstudio.gradle.spring-app-convention")
id("hu.bsstudio.gradle.test-convention")
`jacoco-report-aggregation`
`test-report-aggregation`
}
Expand All @@ -14,6 +15,10 @@ dependencies {
// todo these scopes were only supported by the spring gradle dependency management plugin
// annotationProcessor("org.springframework.boot:spring-boot-configuration-processor")
// developmentOnly("org.springframework.boot:spring-boot-devtools")
testImplementation("org.springframework.boot:spring-boot-testcontainers")
testImplementation("org.testcontainers:testcontainers")
testImplementation("org.testcontainers:postgresql")
testImplementation("org.testcontainers:junit-jupiter")
}

tasks.test {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package hu.bsstudio.bssweb

import org.junit.jupiter.api.Test
import org.springframework.boot.test.context.SpringBootTest

@SpringBootTest
class BssWebApplicationTest {
@Test
fun contextLoads() {
}

Check failure on line 10 in server/src/test/kotlin/hu/bsstudio/bssweb/BssWebApplicationTest.kt

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Add a nested comment explaining why this function is empty or complete the implementation.

See more on https://sonarcloud.io/project/issues?id=BSStudio_bss-web-admin-backend&issues=AZp8nme_tXPDghl_hPcF&open=AZp8nme_tXPDghl_hPcF&pullRequest=466
}
13 changes: 13 additions & 0 deletions server/src/test/resources/application.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
bss:
file-api:
url: http://localhost:8888
spring:
datasource:
url: jdbc:tc:postgresql:16.3-alpine3.18:///db?currentSchema=private
security:
oauth2:
resourceserver:
opaquetoken:
introspection-uri: http://localhost:8888
client-id: client-id
client-secret: client-secret
1 change: 1 addition & 0 deletions settings.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
rootProject.name = "bss-web-admin-backend"

include(
"client",
"integration",
Expand Down
Loading