mirror of
https://github.com/BrenBroZAYT/gameyfin.git
synced 2026-06-13 16:40:01 +00:00
3a932d953f
* chore: bump version to v2.4.0-preview * Bump actions/cache from 4 to 5 (#865) Bumps [actions/cache](https://github.com/actions/cache) from 4 to 5. - [Release notes](https://github.com/actions/cache/releases) - [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md) - [Commits](https://github.com/actions/cache/compare/v4...v5) --- updated-dependencies: - dependency-name: actions/cache dependency-version: '5' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Increase maximum DB connection pool size (#876) Increase DB connection timeout * Disable length limit for DB field PLUGIN_CONFIG.value (#875) * Bump actions/cache from 4 to 5 (#871) Bumps [actions/cache](https://github.com/actions/cache) from 4 to 5. - [Release notes](https://github.com/actions/cache/releases) - [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md) - [Commits](https://github.com/actions/cache/compare/v4...v5) --- updated-dependencies: - dependency-name: actions/cache dependency-version: '5' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Bump actions/download-artifact from 7 to 8 (#882) Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 7 to 8. - [Release notes](https://github.com/actions/download-artifact/releases) - [Commits](https://github.com/actions/download-artifact/compare/v7...v8) --- updated-dependencies: - dependency-name: actions/download-artifact dependency-version: '8' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Bump actions/upload-artifact from 6 to 7 (#881) Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 6 to 7. - [Release notes](https://github.com/actions/upload-artifact/releases) - [Commits](https://github.com/actions/upload-artifact/compare/v6...v7) --- updated-dependencies: - dependency-name: actions/upload-artifact dependency-version: '7' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Bump actions/cache from 4 to 5 (#878) Bumps [actions/cache](https://github.com/actions/cache) from 4 to 5. - [Release notes](https://github.com/actions/cache/releases) - [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md) - [Commits](https://github.com/actions/cache/compare/v4...v5) --- updated-dependencies: - dependency-name: actions/cache dependency-version: '5' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Dont perform scans if no metadata plugins are enabled (#877) * Dont perform scans if no metadata plugins are enabled * Fix tests * Add PluginServiceTest.kt * Fix Sonar finding * Fix malformed external links (#886) * Fix external links being treated as internal * chore: bump version to v856-malformed-external-links-preview * Update JVM in Dockerfile to Java 25 * Revert incorrect version update * Allow loading .jar plugins in development mode (#885) * Allow loading .jar plugins in development mode * Remove unnecessary mock * Fix unit test * Add unit tests * Fix/879 add info and reset to config options (#887) * Fix gog.sh script * Add "description" property to ConfigProperties.kt Add InfoPopup.tsx and ResetToDefaultButton.tsx in UI * Bump actions/download-artifact from 7 to 8 (#891) Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 7 to 8. - [Release notes](https://github.com/actions/download-artifact/releases) - [Commits](https://github.com/actions/download-artifact/compare/v7...v8) --- updated-dependencies: - dependency-name: actions/download-artifact dependency-version: '8' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Bump actions/cache from 4 to 5 (#890) Bumps [actions/cache](https://github.com/actions/cache) from 4 to 5. - [Release notes](https://github.com/actions/cache/releases) - [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md) - [Commits](https://github.com/actions/cache/compare/v4...v5) --- updated-dependencies: - dependency-name: actions/cache dependency-version: '5' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Bump actions/upload-artifact from 6 to 7 (#889) Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 6 to 7. - [Release notes](https://github.com/actions/upload-artifact/releases) - [Commits](https://github.com/actions/upload-artifact/compare/v6...v7) --- updated-dependencies: - dependency-name: actions/upload-artifact dependency-version: '7' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Improve memory usage and performance (#888) mprove memory usage and performance by: * Using AOT cache * Using tuned JAVA_OPTIONS * Session timeout * Jetty threadpool * DB batch size * DB pool size * Library scanning * Make scan-concurrency configurable * Log retention * Off-load image processing to disk instead of RAM * Fix bug in PluginState * Update dependency version for ksp * Fix race condition preventing plugins from starting * Show remaining time (estimation) for library scans * Add unit test for plugin loading bugfix * Add unit tests for ImageService calculateBlurHash * Make username claim configurable (#895) Add fallbacks to resolve username * Fix sonar issues (#894) * Add custom "/sonar" command to GH copilot * Add Sonar plugin integration * Fix issues reported by Sonar * Ignore Sonar warning about AES/ECB * Add unit tests for GameyfinPluginManager * Add unit tests for GameService * Add more unit tests for GameService * Improve library card layout (#896) * Fix title not being centered * Add buttons to scan all libraries * Disable AVX for AOT cache training * Improve AOT cache training * Fix tests * Change output type of Docker Build CI action * Increase MAX_WAIT of aot-training to 5min * Optimize Docker CI pipeline * Add Sonar badges to README.md * Add custom metrics (downloads & scans) * Optimize DB connection & add cache for images * Adjusted logging on startup * * Show message on start page when no libraries/games are available * Disable "Scan" buttons when no metadata plugin is enabled * Fix thread pinning causing deadlocks * Pre-populate image cache at startup * Show "Loading" spinner while loading * Optimize static file serving (images) * Switch back to Tomcat (from Jetty) --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
151 lines
5.1 KiB
Kotlin
151 lines
5.1 KiB
Kotlin
import org.apache.tools.ant.filters.ReplaceTokens
|
|
|
|
group = "org.gameyfin"
|
|
version = rootProject.version
|
|
val appMainClass = "org.gameyfin.app.GameyfinApplicationKt"
|
|
|
|
plugins {
|
|
id("org.springframework.boot")
|
|
id("io.spring.dependency-management")
|
|
id("com.vaadin")
|
|
kotlin("jvm")
|
|
kotlin("plugin.spring")
|
|
kotlin("plugin.jpa")
|
|
id("com.google.devtools.ksp")
|
|
application
|
|
jacoco
|
|
id("org.sonarqube")
|
|
}
|
|
|
|
application {
|
|
mainClass.set(appMainClass)
|
|
}
|
|
|
|
springBoot {
|
|
buildInfo()
|
|
}
|
|
|
|
allOpen {
|
|
annotations("javax.persistence.Entity", "javax.persistence.MappedSuperclass", "javax.persistence.Embedabble")
|
|
}
|
|
|
|
repositories {
|
|
maven {
|
|
setUrl("https://maven.vaadin.com/vaadin-addons")
|
|
}
|
|
}
|
|
|
|
dependencies {
|
|
// Spring Boot
|
|
implementation("org.springframework.boot:spring-boot-starter-actuator")
|
|
implementation("org.springframework.boot:spring-boot-starter-security")
|
|
implementation("org.springframework.boot:spring-boot-starter-validation")
|
|
implementation("org.springframework.boot:spring-boot-starter-aspectj")
|
|
implementation("org.springframework.boot:spring-boot-starter-jackson")
|
|
implementation("org.springframework.cloud:spring-cloud-starter")
|
|
implementation("jakarta.validation:jakarta.validation-api:${rootProject.extra["jakartaValidationVersion"]}")
|
|
|
|
// Kotlin extensions
|
|
implementation(kotlin("reflect"))
|
|
|
|
// Reactive
|
|
implementation("org.springframework.boot:spring-boot-starter-webflux")
|
|
implementation("io.projectreactor.kotlin:reactor-kotlin-extensions")
|
|
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-reactor")
|
|
|
|
// Vaadin Hilla
|
|
implementation("com.vaadin:vaadin-core") {
|
|
exclude("com.vaadin:flow-react")
|
|
}
|
|
implementation("com.vaadin:vaadin-spring-boot-starter")
|
|
implementation("com.vaadin:hilla-spring-boot-starter")
|
|
|
|
// Logging
|
|
implementation("io.github.oshai:kotlin-logging-jvm:${rootProject.extra["kotlinLoggingVersion"]}")
|
|
|
|
// Persistence & I/O
|
|
implementation("org.springframework.boot:spring-boot-starter-data-jpa")
|
|
implementation("org.springframework.boot:spring-boot-starter-flyway")
|
|
implementation("commons-io:commons-io:${rootProject.extra["commonsIoVersion"]}")
|
|
implementation("com.google.guava:guava:${rootProject.extra["guavaVersion"]}")
|
|
|
|
// SSO
|
|
implementation("org.springframework.boot:spring-boot-starter-oauth2-client")
|
|
implementation("org.springframework.boot:spring-boot-starter-oauth2-resource-server")
|
|
implementation("org.springframework.security:spring-security-oauth2-jose")
|
|
|
|
// Notifications
|
|
implementation("org.springframework.boot:spring-boot-starter-mail")
|
|
implementation("ch.digitalfondue.mjml4j:mjml4j:${rootProject.extra["mjml4jVersion"]}")
|
|
|
|
// Plugins
|
|
implementation(project(":plugin-api"))
|
|
|
|
// Caching
|
|
implementation("com.github.ben-manes.caffeine:caffeine:${rootProject.extra["caffeineVersion"]}")
|
|
|
|
// Utils
|
|
implementation("org.apache.tika:tika-core:${rootProject.extra["tikaVersion"]}")
|
|
implementation("me.xdrop:fuzzywuzzy:${rootProject.extra["fuzzywuzzyVersion"]}")
|
|
implementation("com.vanniktech:blurhash:${rootProject.extra["blurhashVersion"]}")
|
|
|
|
// Development
|
|
developmentOnly("org.springframework.boot:spring-boot-devtools")
|
|
developmentOnly("com.vaadin:vaadin-dev")
|
|
annotationProcessor("org.springframework.boot:spring-boot-configuration-processor")
|
|
runtimeOnly("com.h2database:h2")
|
|
runtimeOnly("io.micrometer:micrometer-registry-prometheus")
|
|
|
|
// Testing
|
|
testImplementation(kotlin("test"))
|
|
testImplementation("org.springframework.boot:spring-boot-starter-test") {
|
|
exclude(group = "org.mockito", module = "mockito-core")
|
|
}
|
|
testImplementation("io.mockk:mockk:${rootProject.extra["mockkVersion"]}")
|
|
testImplementation("org.springframework.security:spring-security-test")
|
|
testImplementation("io.projectreactor:reactor-test")
|
|
}
|
|
|
|
dependencyManagement {
|
|
imports {
|
|
mavenBom("com.vaadin:vaadin-bom:${rootProject.extra["vaadinVersion"]}")
|
|
mavenBom("org.springframework.cloud:spring-cloud-dependencies:${rootProject.extra["springCloudVersion"]}")
|
|
}
|
|
}
|
|
|
|
tasks.withType<Test> {
|
|
useJUnitPlatform()
|
|
finalizedBy(tasks.jacocoTestReport)
|
|
}
|
|
|
|
tasks.jacocoTestReport {
|
|
dependsOn(tasks.test)
|
|
reports {
|
|
xml.required = true
|
|
xml.outputLocation = layout.buildDirectory.file("reports/jacoco/test/jacocoTestReport.xml")
|
|
}
|
|
}
|
|
|
|
tasks.named("sonar") {
|
|
dependsOn(tasks.jacocoTestReport)
|
|
}
|
|
|
|
sonar {
|
|
properties {
|
|
property("sonar.organization", "gameyfin")
|
|
property("sonar.projectKey", "gameyfin_gameyfin")
|
|
property("sonar.projectName", "gameyfin")
|
|
property("sonar.host.url", "https://sonarcloud.io")
|
|
property("sonar.coverage.jacoco.xmlReportPaths", "build/reports/jacoco/test/jacocoTestReport.xml")
|
|
property("sonar.coverage.exclusions", "**/*Config.kt,**/org/gameyfin/db/h2/**")
|
|
}
|
|
}
|
|
|
|
tasks.named<ProcessResources>("processResources") {
|
|
val projectVersion = rootProject.version.toString()
|
|
filesMatching("application.yml") {
|
|
filter<ReplaceTokens>("tokens" to mapOf("project.version" to projectVersion))
|
|
}
|
|
}
|
|
|