diff --git a/.github/workflows/deploy_images.yml b/.github/workflows/deploy_images.yml index fde31aad3c..aadf8eb1e6 100644 --- a/.github/workflows/deploy_images.yml +++ b/.github/workflows/deploy_images.yml @@ -143,7 +143,7 @@ jobs: --build-cache -Pdetekt.multiplatform.disabled=true -PsaveCliVersion=${{ env.SAVE_CLI_VERSION }} - -PsaveCliPath=file://${{ github.workspace }}/save/save-cli/build/bin/linuxX64/releaseExecutable + -PsaveCliPath=${{ github.workspace }}/save/save-cli/build/bin/linuxX64/releaseExecutable -PgprUser=${{ github.actor }} -PgprKey=${{ secrets.GITHUB_TOKEN }} ${{ env.ADDITIONAL_GRADLE_OPTS }} diff --git a/build.gradle.kts b/build.gradle.kts index b2ca9f1141..a9be8dd622 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -3,7 +3,6 @@ import com.saveourtool.save.buildutils.* @Suppress("DSL_SCOPE_VIOLATION", "RUN_IN_SCRIPT") // https://github.com/gradle/gradle/issues/22797 plugins { id("com.saveourtool.save.buildutils.versioning-configuration") - id("com.saveourtool.save.buildutils.save-cli-download-configuration") id("com.saveourtool.save.buildutils.code-quality-convention") id("com.saveourtool.save.buildutils.publishing-configuration") alias(libs.plugins.talaiot.base) diff --git a/gradle/plugins/src/main/kotlin/com/saveourtool/save/buildutils/VersioningConfiguration.kt b/gradle/plugins/src/main/kotlin/com/saveourtool/save/buildutils/VersioningConfiguration.kt index 77ae3141ef..8bde20af19 100644 --- a/gradle/plugins/src/main/kotlin/com/saveourtool/save/buildutils/VersioningConfiguration.kt +++ b/gradle/plugins/src/main/kotlin/com/saveourtool/save/buildutils/VersioningConfiguration.kt @@ -9,15 +9,7 @@ import org.ajoberstar.grgit.gradle.GrgitServicePlugin import org.ajoberstar.reckon.gradle.ReckonExtension import org.ajoberstar.reckon.gradle.ReckonPlugin import org.gradle.api.Project -import org.gradle.api.provider.Provider import org.gradle.kotlin.dsl.* -import java.util.* - -/** - * @return path to the file with save-cli version for current build - */ -@Suppress("CUSTOM_GETTERS_SETTERS") -internal val Project.pathToSaveCliVersion get() = "${rootProject.buildDir}/save-cli.properties" /** * Configures reckon plugin for [this] project, should be applied for root project only @@ -52,16 +44,6 @@ fun Project.configureVersioning() { } } -/** - * @return save-cli version for current build - */ -@Suppress("CUSTOM_GETTERS_SETTERS") -internal fun Project.readSaveCliVersion(): Provider = rootProject.tasks.named("getSaveCliVersion") - .map { getSaveCliVersionTask -> - val file = file(getSaveCliVersionTask.outputs.files.singleFile) - Properties().apply { load(file.reader()) }["version"] as String - } - /** * @return true if this string denotes a snapshot version */ diff --git a/gradle/plugins/src/main/kotlin/com/saveourtool/save/buildutils/save-cli-configuration.gradle.kts b/gradle/plugins/src/main/kotlin/com/saveourtool/save/buildutils/save-cli-configuration.gradle.kts index 3b1ec1704c..8622317aaf 100644 --- a/gradle/plugins/src/main/kotlin/com/saveourtool/save/buildutils/save-cli-configuration.gradle.kts +++ b/gradle/plugins/src/main/kotlin/com/saveourtool/save/buildutils/save-cli-configuration.gradle.kts @@ -4,7 +4,6 @@ package com.saveourtool.save.buildutils -import de.undercouch.gradle.tasks.download.Download import org.gradle.accessors.dm.LibrariesForLibs import org.gradle.api.tasks.TaskProvider import org.gradle.kotlin.dsl.* @@ -12,7 +11,6 @@ import java.io.File plugins { kotlin("jvm") - id("de.undercouch.download") } val saveCliVersion: String = the() @@ -22,20 +20,24 @@ val saveCliVersion: String = the() .get() dependencies { - val isSaveCliProvided = hasProperty("saveCliPath") - if (isSaveCliProvided) { + if (saveCliVersion.isSnapshot()) { + val target = "$buildDir/save-cli" val saveCliPath = providers.gradleProperty("saveCliPath") + logger.info( + "save-cli version is SNAPSHOT ({}), add {} as a runtime dependency", + saveCliVersion, saveCliPath + ) @Suppress("GENERIC_VARIABLE_WRONG_DECLARATION") - val downloadSaveCliTaskProvider: TaskProvider = tasks.register("downloadSaveCli") { - enabled = isSaveCliProvided - src { saveCliPath } - dest { saveCliPath.map { "$buildDir/download/${File(it).name}" } } - - overwrite(false) + val copySaveCliTaskProvider: TaskProvider = tasks.register("copySaveCli") { + from(saveCliPath) + into(target) + eachFile { + duplicatesStrategy = DuplicatesStrategy.WARN + } } add("runtimeOnly", - files(layout.buildDirectory.dir("$buildDir/download")).apply { - builtBy(downloadSaveCliTaskProvider) + files(layout.buildDirectory.dir(target)).apply { + builtBy(copySaveCliTaskProvider) } ) } diff --git a/gradle/plugins/src/main/kotlin/com/saveourtool/save/buildutils/save-cli-download-configuration.gradle.kts b/gradle/plugins/src/main/kotlin/com/saveourtool/save/buildutils/save-cli-download-configuration.gradle.kts deleted file mode 100644 index e819828ecc..0000000000 --- a/gradle/plugins/src/main/kotlin/com/saveourtool/save/buildutils/save-cli-download-configuration.gradle.kts +++ /dev/null @@ -1,25 +0,0 @@ -/** - * Configuration task to download save-cli once per a project - */ - -package com.saveourtool.save.buildutils - -import de.undercouch.gradle.tasks.download.Download -import org.gradle.kotlin.dsl.* - -plugins { - id("de.undercouch.download") -} - -tasks.register("downloadSaveCli") { - val saveCliVersion = readSaveCliVersion() - val saveCliFileName = saveCliVersion.map { "save-$it-linuxX64.kexe" } - val saveCliPath = saveCliVersion.zip(saveCliFileName) { version, fileName -> - findProperty("saveCliPath")?.takeIf { version.isSnapshot() } as String? - ?: "https://github.com/saveourtool/save-cli/releases/download/v$version/$fileName" - } - src { saveCliPath } - dest { saveCliFileName.map { fileName -> "$buildDir/download/$fileName" } } - - overwrite(false) -} diff --git a/save-deploy/README.md b/save-deploy/README.md index c353e56fbc..84db081120 100644 --- a/save-deploy/README.md +++ b/save-deploy/README.md @@ -23,9 +23,13 @@ The `save-backend` and `save-sandbox` download newer versions of `save-cli` from #### Using a `SNAPSHOT` version of `save-cli` If `save-cli` is set to snapshot version in `lib.version.toml`, we download `save-cli`'s sources and build them in _GitHub_ action: [Build and push Docker images](../.github/workflows/deploy_images.yml). -Then adds the result (_.kexe_) to `save-backend` and `save-sandbox` as a runtime dependency +Then _Gradle_ adds the result (_.kexe_) to `save-backend` and `save-sandbox` as a runtime dependency -**Note:** `libs.version.toml` can contain __blabla-SNAPSHOT__ version, but we will build a version from the latest main in `save-cli` +**Under the hood:** _Gradle_ supports two variables `saveCliVersion` and `saveCliPath`. +The `saveCliVersion` overrides version of `save-cli` from `lib.version.toml`. +The `saveCliPath` specifies a path to `save-cli`'s _.kexe_ and it's required when version of `save-cli` is **SNAPSHOT**. + +**Note:** `libs.version.toml` can contain _blabla-SNAPSHOT_ version, but we will build a version from the latest main in `save-cli` and set the built version of `save-cli` to generated file: `generated/SaveCliVersion.kt`. ## Server deployment