diff --git a/.github/actions/common-steps/action.yml b/.github/actions/common-steps/action.yml index 8d73960..eb513d4 100644 --- a/.github/actions/common-steps/action.yml +++ b/.github/actions/common-steps/action.yml @@ -6,11 +6,11 @@ runs: using: composite steps: - name: ⚙️ Setup Java ☕ - uses: actions/setup-java@v3.13.0 + uses: actions/setup-java@v5.2.0 with: distribution: temurin java-version: 17 - name: ⚙️ Setup Gradle 🐘 - uses: gradle/gradle-build-action@v2.9.0 + uses: gradle/gradle-build-action@v3.5.0 with: dependency-graph: generate-and-submit diff --git a/.github/workflows/continuous-integration.yml b/.github/workflows/continuous-integration.yml index 6c59e11..79f7580 100644 --- a/.github/workflows/continuous-integration.yml +++ b/.github/workflows/continuous-integration.yml @@ -27,7 +27,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: fetch-depth: 0 - name: ⚙️ Common Steps for all jobs @@ -41,11 +41,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: fetch-depth: 0 - name: Validate Gradle wrapper - uses: gradle/wrapper-validation-action@v1.1.0 + uses: gradle/wrapper-validation-action@v3.5.0 compile: name: 🛠️ Assembling needs: start-steps @@ -53,7 +53,7 @@ jobs: if: github.event_name == 'pull_request' steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: fetch-depth: 0 - name: ⚙️ Common Steps for all jobs @@ -61,7 +61,7 @@ jobs: - name: 🛠️Assemble Application run: ./gradlew assembleDebug --no-daemon --scan --stacktrace - name: 🟢⬆️ Upload compose reports artifact - uses: actions/upload-artifact@v3.1.3 + uses: actions/upload-artifact@v6.0.0 if: always() with: name: compose-reports @@ -70,13 +70,13 @@ jobs: **/build/compose-reports retention-days: 7 - name: 🟢⬆️Upload Android APK - uses: rnkdsh/action-upload-diawi@v1.5.3 + uses: rnkdsh/action-upload-diawi@v1.5.12 id: diawi_android with: token: ${{ secrets.DIAWI_TOKEN }} file: ./apps/androidApp/build/outputs/apk/debug/androidApp-debug.apk - name: 🟢 Post comment with Diawi link - uses: peter-evans/create-or-update-comment@v3.1.0 + uses: peter-evans/create-or-update-comment@v5.0.0 with: issue-number: ${{ github.event.pull_request.number }} body: | @@ -106,7 +106,7 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: echo "BOT_TOKEN=${GITHUB_TOKEN}" >> $GITHUB_ENV - name: 🔄 Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: fetch-depth: 0 token: ${{ env.BOT_TOKEN }} @@ -118,14 +118,14 @@ jobs: SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: 🟢 Upload tests reports artifact (success ✅) - uses: actions/upload-artifact@v3.1.3 + uses: actions/upload-artifact@v6.0.0 if: success() with: name: tests-reports path: build/reports/allTests retention-days: 7 - name: 🔴 Upload tests reports artifact (failure ❌) - uses: actions/upload-artifact@v3.1.3 + uses: actions/upload-artifact@v6.0.0 if: failure() with: name: tests-reports @@ -134,20 +134,20 @@ jobs: **/build/reports/tests/testDebugUnitTest retention-days: 7 - name: 🟢 Upload coverage reports artifact - uses: actions/upload-artifact@v3.1.3 + uses: actions/upload-artifact@v6.0.0 with: name: coverage-reports path: '**/build/reports/kover/report.xml' retention-days: 1 - name: 🟢 ➡️ 🧪 Upload report to Codecov - uses: codecov/codecov-action@v3.1.4 + uses: codecov/codecov-action@v5.5.2 with: token: ${{ secrets.CODECOV_TOKEN }} files: build/reports/kover/report.xml flags: unittests verbose: true - name: 🟡 Post comment with build scan URL as PR comment - uses: peter-evans/create-or-update-comment@v3.1.0 + uses: peter-evans/create-or-update-comment@v5.0.0 if: github.event_name == 'pull_request' && failure() with: issue-number: ${{ format('PR-{0}', github.event.pull_request.number) }} @@ -160,7 +160,7 @@ jobs: confused eyes - name: 📑📚 Upload documentation results - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v6 with: name: documentation path: build/documentation @@ -171,7 +171,7 @@ jobs: needs: start-steps steps: - name: 🔄 Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: fetch-depth: 0 @@ -181,14 +181,14 @@ jobs: - name: 🛡️Check OWASP run: ./gradlew dependencyCheckAnalyze --no-daemon --stacktrace - name: ️🛡️⬆️ Upload owasp-report results - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v6 with: name: owasp-reports path: build/reports/owasp - name: Run detekt run: ./gradlew detektAll lintDebug --no-daemon --stacktrace - name: Upload static reports artifact - uses: actions/upload-artifact@v3.1.3 + uses: actions/upload-artifact@v6.0.0 with: name: static-report path: | @@ -196,7 +196,7 @@ jobs: **/build/reports/lint-results-debug.xml retention-days: 1 - name: Analyze detekt report - uses: github/codeql-action/upload-sarif@v2.22.7 + uses: github/codeql-action/upload-sarif@v4.32.3 with: sarif_file: build/reports/detekt/detekt.sarif checkout_path: ${{ github.workspace }} @@ -208,7 +208,7 @@ jobs: steps: - name: 🔄 Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: fetch-depth: 0 @@ -218,7 +218,7 @@ jobs: - name: 🏗️ 📦 Build package run: ./gradlew assemble --scan -x test -x integrationTest - name: 🟢 Setup Node.js - uses: actions/setup-node@v3 + uses: actions/setup-node@v6 with: node-version: 'lts/*' - name: 🧩 Add plugin for conventional commits @@ -239,7 +239,7 @@ jobs: steps: - name: 🔄 Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: ⚙️ Common Steps for all jobs uses: ./.github/actions/common-steps @@ -257,7 +257,7 @@ jobs: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - name: 🏗️ Build and push - uses: docker/build-push-action@v5 + uses: docker/build-push-action@v6 with: context: ./apps/app/build/docker/ file: ./apps/app/build/docker/Dockerfile @@ -273,18 +273,18 @@ jobs: steps: - name: 🔄 Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: fetch-depth: 0 - name: ⚙️ Common Steps for all jobs uses: ./.github/actions/common-steps - name: ⬇️ 📜 Download documentation reports - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v7 with: name: documentation path: build/documentation - name: ⬇️ 🛡️ Download owasp reports - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v7 with: name: owasp-reports path: build/reports/owasp @@ -293,7 +293,7 @@ jobs: env: revnumber: ${{ needs.release.outputs.revnumber }} - name: 🟢 📚 Publish documentation - uses: JamesIves/github-pages-deploy-action@v4.4.3 + uses: JamesIves/github-pages-deploy-action@v4.8.0 with: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} BRANCH: gh-pages diff --git a/.github/workflows/link-checking.yml b/.github/workflows/link-checking.yml index 9d49d2c..838270a 100644 --- a/.github/workflows/link-checking.yml +++ b/.github/workflows/link-checking.yml @@ -10,10 +10,10 @@ jobs: linkChecker: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v6 - name: Restore lychee cache - uses: actions/cache@v3 + uses: actions/cache@v5 with: path: .lycheecache key: cache-lychee-${{ github.sha }} @@ -21,21 +21,21 @@ jobs: - name: Link Checker id: lychee - uses: lycheeverse/lychee-action@v1.8.0 + uses: lycheeverse/lychee-action@v2.7.0 with: args: "--cache --max-cache-age 1d ." fail: true - name: Create Issue From File if: env.lychee_exit_code != 0 - uses: peter-evans/create-issue-from-file@v4 + uses: peter-evans/create-issue-from-file@v6 with: title: Link Checker Report content-filepath: ./lychee/out.md labels: report, automated issue - name: Save lychee cache - uses: actions/cache/save@v3 + uses: actions/cache/save@v5 if: always() with: path: .lycheecache diff --git a/.github/workflows/pr-size-labeler.yml b/.github/workflows/pr-size-labeler.yml index ea5d4e6..a4927d9 100644 --- a/.github/workflows/pr-size-labeler.yml +++ b/.github/workflows/pr-size-labeler.yml @@ -44,6 +44,6 @@ jobs: pull-requests: write steps: - - uses: actions/labeler@v4 + - uses: actions/labeler@v6 with: repo-token: "${{ secrets.GITHUB_TOKEN }}" diff --git a/apps/backend/Dockerfile b/apps/backend/Dockerfile index a0413e3..e95a9ec 100755 --- a/apps/backend/Dockerfile +++ b/apps/backend/Dockerfile @@ -1,9 +1,9 @@ -FROM gradle:7-jdk17 AS build +FROM gradle:9-jdk17 AS build COPY --chown=gradle:gradle . /home/gradle/src WORKDIR /home/gradle/src RUN gradle shadowJar --no-daemon -FROM eclipse-temurin:17.0.9_9-jre-ubi9-minimal +FROM eclipse-temurin:21.0.10_7-jre-ubi9-minimal EXPOSE 8080:8080 RUN mkdir /app COPY --from=build /home/gradle/src/build/libs/*.jar /app/ diff --git a/build-logic/analysis-convention/src/main/kotlin/detekt-convention.gradle.kts b/build-logic/analysis-convention/src/main/kotlin/detekt-convention.gradle.kts index 39ed91b..538fd47 100644 --- a/build-logic/analysis-convention/src/main/kotlin/detekt-convention.gradle.kts +++ b/build-logic/analysis-convention/src/main/kotlin/detekt-convention.gradle.kts @@ -7,7 +7,7 @@ plugins { } detekt { - toolVersion = "1.23.3" + toolVersion = "1.23.8" parallel = true ignoreFailures = false autoCorrect = true diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 17e12bc..4c137b2 100755 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,29 +1,29 @@ [versions] kotlin = "1.9.20" -ktor-client = "2.3.6" -ktor-server = "2.3.6" -multiplatform-settings = "1.1.0" -voyager = "1.0.0-rc10" +ktor-client = "3.4.1-eap-1540" +ktor-server = "3.4.1-eap-1540" +multiplatform-settings = "1.3.0" +voyager = "1.0.1" koin = "3.5.0" koin-compose = "1.1.0" junit = "4.13.2" -androidGradlePlugin = "8.1.4" +androidGradlePlugin = "9.0.1" composeMultiplatform = "1.5.10" compose-compiler = "1.5.4" -exposed = "0.37.3" -skiko = "0.7.85" -klint-plugin = "11.6.1" +exposed = "1.0.0" +skiko = "0.9.41" +klint-plugin = "14.0.1" klint = "1.0.1" -detekt = "1.23.3" +detekt = "1.23.8" kotlinx-coroutines = "1.7.3" -androidx-junit = "1.1.5" -espressoCore = "3.5.1" -accompanistSystemuicontroller = "0.32.0" -activityCompose = "1.8.1" -firebase = "32.5.0" -owasp = "8.4.3" -asciidoctor = "4.0.0-alpha.1" -dokka = "1.9.10" +androidx-junit = "1.3.0" +espressoCore = "3.7.0" +accompanistSystemuicontroller = "0.36.0" +activityCompose = "1.12.4" +firebase = "34.9.0" +owasp = "12.2.0" +asciidoctor = "4.0.5" +dokka = "2.1.0" [libraries] @@ -37,8 +37,8 @@ gradle-owasp-depcheck = { module = "org.owasp:dependency-check-gradle", version. gradle-asciidoctor = { module = "org.asciidoctor:asciidoctor-gradle-jvm", version.ref = "asciidoctor" } # Detekt gradle-detekt = { module = "io.gitlab.arturbosch.detekt:detekt-gradle-plugin", version.ref = "detekt" } -detekt-compose = { module = "io.nlopez.compose.rules:detekt", version = "0.3.3" } -detekt-compose2 = { module = "ru.kode:detekt-rules-compose", version = "1.3.0" } +detekt-compose = { module = "io.nlopez.compose.rules:detekt", version = "0.5.6" } +detekt-compose2 = { module = "ru.kode:detekt-rules-compose", version = "1.4.0" } detekt-formatting = { module = "io.gitlab.arturbosch.detekt:detekt-formatting", version.ref = "detekt" } @@ -53,10 +53,10 @@ multiplatform-settings-serialization = { module = "com.russhwolf:multiplatform-s multiplatform-settings-test = { module = "com.russhwolf:multiplatform-settings-test", version.ref = "multiplatform-settings" } skiko = { module = "org.jetbrains.skiko:skiko", version.ref = "skiko" } skiko-macos-arm64 = { module = "org.jetbrains.skiko:skiko-awt-runtime-macos-arm64", version.ref = "skiko" } -ktor-client = "io.ktor:ktor-client-core:2.3.6" -kamel = "media.kamel:kamel-image:0.7.3" -kmp-settings = "com.russhwolf:multiplatform-settings-no-arg:1.1.0" -kermit = "co.touchlab:kermit:2.0.2" +ktor-client = "io.ktor:ktor-client-core:3.4.1-eap-1540" +kamel = "media.kamel:kamel-image:1.0.9" +kmp-settings = "com.russhwolf:multiplatform-settings-no-arg:1.3.0" +kermit = "co.touchlab:kermit:2.0.8" kotlinx-serialization-json = "org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.0" kotlinx-datetime = "org.jetbrains.kotlinx:kotlinx-datetime:0.4.1" @@ -73,12 +73,12 @@ koin-core = { module = "io.insert-koin:koin-core", version.ref = "koin" } koin-test = { module = "io.insert-koin:koin-test", version.ref = "koin" } # Android -compose-bom = "androidx.compose:compose-bom:2023.10.01" +compose-bom = "androidx.compose:compose-bom:2026.02.00" koin-android = { module = "io.insert-koin:koin-android", version.ref = "koin" } -androidx-core-ktx = "androidx.core:core-ktx:1.12.0" -androidx-core-splashscreen = "androidx.core:core-splashscreen:1.0.1" -androidx-tracing-ktx = "androidx.tracing:tracing-ktx:1.1.0" +androidx-core-ktx = "androidx.core:core-ktx:1.17.0" +androidx-core-splashscreen = "androidx.core:core-splashscreen:1.2.0" +androidx-tracing-ktx = "androidx.tracing:tracing-ktx:1.3.0" accompanist-systemuicontroller = { module = "com.google.accompanist:accompanist-systemuicontroller", version.ref = "accompanistSystemuicontroller" } androidx-activity-compose = { module = "androidx.activity:activity-compose", version.ref = "activityCompose" } firebase-bom = { module = "com.google.firebase:firebase-bom", version.ref = "firebase" } @@ -93,7 +93,7 @@ androidx-junit = { module = "androidx.test.ext:junit", version.ref = "androidx-j koin-compose = { module = "io.insert-koin:koin-compose", version.ref = "koin-compose" } kotlinx-coroutines-swingui = "org.jetbrains.kotlinx:kotlinx-coroutines-swing:1.7.3" ktor-client-java = { module = "io.ktor:ktor-client-java", version.ref = "ktor-client" } -androidx-compose-ui-util = "androidx.compose.ui:ui-util:1.6.0-beta01" +androidx-compose-ui-util = "androidx.compose.ui:ui-util:1.10.3" # Backend ktor-server-core = { module = "io.ktor:ktor-server-core", version.ref = "ktor-server" } @@ -122,10 +122,10 @@ exposed-dao = { module = "org.jetbrains.exposed:exposed-dao", version.ref = "exp exposed-jdbc = { module = "org.jetbrains.exposed:exposed-jdbc", version.ref = "exposed" } kotlinx-html-jvm = "org.jetbrains.kotlinx:kotlinx-html-jvm:0.9.1" -logback-classic = "ch.qos.logback:logback-classic:1.4.11" -postgresql = "org.postgresql:postgresql:42.3.8" -hikariCP = "com.zaxxer:HikariCP:5.0.1" -swagger-codegen = "io.swagger.codegen.v3:swagger-codegen-generators:1.0.44" +logback-classic = "ch.qos.logback:logback-classic:1.5.31" +postgresql = "org.postgresql:postgresql:42.7.10" +hikariCP = "com.zaxxer:HikariCP:7.0.2" +swagger-codegen = "io.swagger.codegen.v3:swagger-codegen-generators:1.0.59" kotlin-test-junit = { module = "org.jetbrains.kotlin:kotlin-test-junit", version.ref = "kotlin" } @@ -137,7 +137,7 @@ compose-multiplatform = { id = "org.jetbrains.compose", version.ref = "composeMu #Backend kotlin-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version = "1.6.10" } -shadow = { id = "com.github.johnrengelman.shadow", version = "7.0.0" } +shadow = { id = "com.github.johnrengelman.shadow", version = "8.1.1" } [bundles] diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 09ed1ea..a96d910 100755 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ #Wed Jul 12 18:27:54 CEST 2023 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.0-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.3.1-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/settings.gradle.kts b/settings.gradle.kts index bddd9a1..7a02548 100755 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -26,8 +26,8 @@ pluginManagement { } plugins { - id("com.gradle.enterprise") version "3.15.1" - id("org.gradle.toolchains.foojay-resolver-convention") version "0.7.0" + id("com.gradle.enterprise") version "3.19.2" + id("org.gradle.toolchains.foojay-resolver-convention") version "1.0.0" } // Keep in sync with build-logic/settings.gradle.kts