From c3bebd48404bd93b75bd1a7499d1b21c77272d4b Mon Sep 17 00:00:00 2001 From: Aleksandr Turchenko Date: Thu, 26 Dec 2024 10:28:36 +0400 Subject: [PATCH 1/8] Add publish gradle scripts --- build.gradle.kts | 142 ++++++++++++++++++++++- gradle/libs.versions.toml | 4 + gradle/wrapper/gradle-wrapper.properties | 2 +- 3 files changed, 146 insertions(+), 2 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index 6b84e27..d3f2e62 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,14 +1,21 @@ import io.gitlab.arturbosch.detekt.Detekt import io.gitlab.arturbosch.detekt.report.ReportMergeTask +import org.jreleaser.gradle.plugin.tasks.JReleaserFullReleaseTask +import org.jreleaser.model.Active +import org.jreleaser.model.Signing group = "io.github.turchenkoalex" -version = "1.0-SNAPSHOT" plugins { + `java-library` + `maven-publish` + signing alias(libs.plugins.kotlin.jvm) apply false alias(libs.plugins.kotlinx.serialization) apply false alias(libs.plugins.detekt) alias(libs.plugins.kover) + alias(libs.plugins.jreleaser) + alias(libs.plugins.nebula.release) } allprojects { @@ -78,3 +85,136 @@ subprojects { } } } + +val publishProjects = setOf( + "core", + "cors", +) + +subprojects { + if (this.name in publishProjects) { + apply(plugin = "java-library") + apply(plugin = "maven-publish") + apply(plugin = "signing") + apply(plugin = "org.jreleaser") + version = sanitizeVersion() + + java { + withJavadocJar() + withSourcesJar() + } + + publishing { + publications { + create("mavenJava") { + from(components["java"]) + + groupId = "io.github.turchenkoalex" + artifactId = "kotlet-${project.name}" + + versionMapping { + usage("java-api") { + fromResolutionOf("runtimeClasspath") + } + usage("java-runtime") { + fromResolutionResult() + } + } + + pom { + name.set("kotlet-${project.name}") + description.set("Kotlet ${project.name} library") + url.set("https://github.com/turchenkoalex/kotlet") + licenses { + license { + name.set("Apache License, Version 2.0") + url.set("https://opensource.org/licenses/Apache-2.0") + } + } + developers { + developer { + id.set("turchenkoalex") + name.set("Aleksandr Turchenko") + } + } + scm { + connection.set("scm:git:git://github.com/turchenkoalex/kotlet.git") + developerConnection.set("scm:git:ssh://github.com/turchenkoalex/kotlet.git") + url.set("https://github.com/turchenkoalex/kotlet") + } + } + } + } + + repositories { + maven { + setUrl(layout.buildDirectory.dir("staging-deploy")) + } + } + } + + jreleaser { + gitRootSearch = true + + signing { + active = Active.ALWAYS + armored = true + mode = Signing.Mode.MEMORY + } + + deploy { + maven { + mavenCentral { + create("sonatype") { + active = Active.ALWAYS + url = "https://central.sonatype.com/api/v1/publisher" + javadocJar = true + sourceJar = true + stagingRepository(layout.buildDirectory.dir("staging-deploy").get().asFile.absolutePath) + } + } + } + } + } + + val jreleaserDirTask = tasks.register("jreleaserDir") { + doFirst { + mkdir(layout.buildDirectory.dir("jreleaser").get().asFile) + } + } + + tasks.withType { + dependsOn(jreleaserDirTask) + } + } +} + +tasks.release { + finalizedBy("jreleaserFullRelease") +} + +// We want to change SNAPSHOT versions format from: +// ..-dev.#+. (local branch) +// ..-dev.#+ (github pull request) +// to: +// ..-dev+-SNAPSHOT +fun Project.sanitizeVersion(): String { + val version = version.toString() + return if (project.isSnapshotVersion()) { + val githubHeadRef = System.getenv("GITHUB_HEAD_REF") + if (githubHeadRef != null) { + // github pull request + version + .replace(Regex("-dev\\.\\d+\\+[a-f0-9]+$"), "-dev+$githubHeadRef-SNAPSHOT") + } else { + // local branch + version + .replace(Regex("-dev\\.\\d+\\+"), "-dev+") + .replace(Regex("\\.[a-f0-9]+$"), "-SNAPSHOT") + } + } else { + version + } +} + +fun Project.isSnapshotVersion() = version.toString().contains("-dev.") diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index c3a2ee5..4b4df09 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -3,10 +3,12 @@ auth0-jwt = "4.4.0" detekt = "1.23.7" jakarta = "6.1.0" jetty = "12.0.16" +jreleaser = "1.15.0" kotlin = "2.1.0" kotlinx-serialization = "1.8.0" kover = "0.9.1" mockk = "1.13.16" +nebula = "19.0.10" opentelemetry = "1.46.0" opentelemetry-instrumentation-api = "2.11.0" opentelemetry-semconv = "1.29.0-alpha" @@ -16,9 +18,11 @@ swagger = "2.2.27" [plugins] detekt = { id = "io.gitlab.arturbosch.detekt", version.ref = "detekt" } jmh = { id = "me.champeau.jmh", version = "0.7.2" } +jreleaser = { id ="org.jreleaser", version.ref = "jreleaser" } kotlin-jvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" } kotlinx-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" } kover = { id = "org.jetbrains.kotlinx.kover", version.ref = "kover" } +nebula-release = { id = "com.netflix.nebula.release", version.ref = "nebula" } [libraries] diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 81aa1c0..d6e308a 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.11.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.12-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists From 55a136bbf13a02a7b59de4b61bad1b1a39320cea Mon Sep 17 00:00:00 2001 From: Aleksandr Turchenko Date: Thu, 26 Dec 2024 11:04:09 +0400 Subject: [PATCH 2/8] Add GH actions for publish --- .github/workflows/verify.yaml | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/.github/workflows/verify.yaml b/.github/workflows/verify.yaml index b0bdfa9..e73dcc0 100644 --- a/.github/workflows/verify.yaml +++ b/.github/workflows/verify.yaml @@ -48,6 +48,17 @@ jobs: min-coverage-changed-files: 60 - name: Coverage verify run: ./gradlew koverVerify + - name: Publish Maven Central + if: success() + env: + GITHUB_HEAD_REF: ${{ github.head_ref }} + JRELEASER_DEPLOY_MAVEN_MAVENCENTRAL_SONATYPE_USERNAME: ${{ secrets.SONATYPE_USERNAME }} + JRELEASER_DEPLOY_MAVEN_MAVENCENTRAL_SONATYPE_PASSWORD: ${{ secrets.SONATYPE_PASSWORD }} + JRELEASER_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + JRELEASER_GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }} + JRELEASER_GPG_PUBLIC_KEY: ${{ secrets.GPG_PUBLIC_KEY }} + JRELEASER_GPG_SECRET_KEY: ${{ secrets.GPG_SECRET_KEY }} + run: ./gradlew jreleaserFullRelease detekt: name: Detekt runs-on: ubuntu-latest From 6f6508ec0899e67616882b01f79774412b342928 Mon Sep 17 00:00:00 2001 From: Aleksandr Turchenko Date: Thu, 26 Dec 2024 11:18:39 +0400 Subject: [PATCH 3/8] Add release task --- .github/workflows/verify.yaml | 2 +- build.gradle.kts | 13 ++++++++----- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/.github/workflows/verify.yaml b/.github/workflows/verify.yaml index e73dcc0..04fb8ec 100644 --- a/.github/workflows/verify.yaml +++ b/.github/workflows/verify.yaml @@ -58,7 +58,7 @@ jobs: JRELEASER_GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }} JRELEASER_GPG_PUBLIC_KEY: ${{ secrets.GPG_PUBLIC_KEY }} JRELEASER_GPG_SECRET_KEY: ${{ secrets.GPG_SECRET_KEY }} - run: ./gradlew jreleaserFullRelease + run: ./gradlew release detekt: name: Detekt runs-on: ubuntu-latest diff --git a/build.gradle.kts b/build.gradle.kts index d3f2e62..5f42e03 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -91,6 +91,8 @@ val publishProjects = setOf( "cors", ) +val releaseTask = tasks.release + subprojects { if (this.name in publishProjects) { apply(plugin = "java-library") @@ -183,14 +185,15 @@ subprojects { } } - tasks.withType { + val fullRelease = tasks.withType { dependsOn(jreleaserDirTask) } - } -} -tasks.release { - finalizedBy("jreleaserFullRelease") + releaseTask { + dependsOn(fullRelease) + finalizedBy(fullRelease) + } + } } // We want to change SNAPSHOT versions format from: From 35f380245538b8d3f9a5a49affbd3b9c986bebb1 Mon Sep 17 00:00:00 2001 From: Aleksandr Turchenko Date: Thu, 26 Dec 2024 11:23:59 +0400 Subject: [PATCH 4/8] Add fullRelease task --- .github/workflows/verify.yaml | 2 +- build.gradle.kts | 13 ++++++++----- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/.github/workflows/verify.yaml b/.github/workflows/verify.yaml index 04fb8ec..8bbcf3a 100644 --- a/.github/workflows/verify.yaml +++ b/.github/workflows/verify.yaml @@ -58,7 +58,7 @@ jobs: JRELEASER_GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }} JRELEASER_GPG_PUBLIC_KEY: ${{ secrets.GPG_PUBLIC_KEY }} JRELEASER_GPG_SECRET_KEY: ${{ secrets.GPG_SECRET_KEY }} - run: ./gradlew release + run: ./gradlew fullRelease detekt: name: Detekt runs-on: ubuntu-latest diff --git a/build.gradle.kts b/build.gradle.kts index 5f42e03..fcb8a67 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -91,7 +91,7 @@ val publishProjects = setOf( "cors", ) -val releaseTask = tasks.release +val fullRelease = tasks.register("fullRelease") subprojects { if (this.name in publishProjects) { @@ -185,17 +185,20 @@ subprojects { } } - val fullRelease = tasks.withType { + val jreleaserTask = tasks.withType { dependsOn(jreleaserDirTask) } - releaseTask { - dependsOn(fullRelease) - finalizedBy(fullRelease) + fullRelease { + dependsOn(jreleaserTask) } } } +tasks.release { + finalizedBy(fullRelease) +} + // We want to change SNAPSHOT versions format from: // ..-dev.#+. (local branch) // ..-dev.#+ (github pull request) From dbf38c3ae2a3fbaa6ff194b0efee67d2375f21ee Mon Sep 17 00:00:00 2001 From: Aleksandr Turchenko Date: Thu, 26 Dec 2024 14:05:55 +0400 Subject: [PATCH 5/8] Fix env names --- .github/workflows/verify.yaml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/verify.yaml b/.github/workflows/verify.yaml index 8bbcf3a..33b42ce 100644 --- a/.github/workflows/verify.yaml +++ b/.github/workflows/verify.yaml @@ -52,12 +52,12 @@ jobs: if: success() env: GITHUB_HEAD_REF: ${{ github.head_ref }} - JRELEASER_DEPLOY_MAVEN_MAVENCENTRAL_SONATYPE_USERNAME: ${{ secrets.SONATYPE_USERNAME }} - JRELEASER_DEPLOY_MAVEN_MAVENCENTRAL_SONATYPE_PASSWORD: ${{ secrets.SONATYPE_PASSWORD }} + JRELEASER_DEPLOY_MAVEN_MAVENCENTRAL_SONATYPE_USERNAME: ${{ secrets.JRELEASER_DEPLOY_MAVEN_MAVENCENTRAL_SONATYPE_USERNAME }} + JRELEASER_DEPLOY_MAVEN_MAVENCENTRAL_SONATYPE_PASSWORD: ${{ secrets.JRELEASER_DEPLOY_MAVEN_MAVENCENTRAL_SONATYPE_PASSWORD }} JRELEASER_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - JRELEASER_GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }} - JRELEASER_GPG_PUBLIC_KEY: ${{ secrets.GPG_PUBLIC_KEY }} - JRELEASER_GPG_SECRET_KEY: ${{ secrets.GPG_SECRET_KEY }} + JRELEASER_GPG_PASSPHRASE: ${{ secrets.JRELEASER_GPG_PASSPHRASE }} + JRELEASER_GPG_PUBLIC_KEY: ${{ secrets.JRELEASER_GPG_PUBLIC_KEY }} + JRELEASER_GPG_SECRET_KEY: ${{ secrets.JRELEASER_GPG_SECRET_KEY }} run: ./gradlew fullRelease detekt: name: Detekt From dcb3befbbda147941a84df8df3b20bf1ecc4d905 Mon Sep 17 00:00:00 2001 From: Aleksandr Turchenko Date: Thu, 26 Dec 2024 14:19:17 +0400 Subject: [PATCH 6/8] Disable github --- build.gradle.kts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/build.gradle.kts b/build.gradle.kts index fcb8a67..b7594b6 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -158,6 +158,12 @@ subprojects { jreleaser { gitRootSearch = true + release { + github { + enabled = false + } + } + signing { active = Active.ALWAYS armored = true From a8bed6a66ee6368bf5297a04b04fb04249b40fb2 Mon Sep 17 00:00:00 2001 From: Aleksandr Turchenko Date: Mon, 30 Dec 2024 14:01:03 +0400 Subject: [PATCH 7/8] Nexus publish test --- .github/workflows/verify.yaml | 12 +-- build.gradle.kts | 178 ++++++++++++++++++++++++---------- gradle/libs.versions.toml | 2 + 3 files changed, 136 insertions(+), 56 deletions(-) diff --git a/.github/workflows/verify.yaml b/.github/workflows/verify.yaml index 33b42ce..91daf69 100644 --- a/.github/workflows/verify.yaml +++ b/.github/workflows/verify.yaml @@ -52,13 +52,11 @@ jobs: if: success() env: GITHUB_HEAD_REF: ${{ github.head_ref }} - JRELEASER_DEPLOY_MAVEN_MAVENCENTRAL_SONATYPE_USERNAME: ${{ secrets.JRELEASER_DEPLOY_MAVEN_MAVENCENTRAL_SONATYPE_USERNAME }} - JRELEASER_DEPLOY_MAVEN_MAVENCENTRAL_SONATYPE_PASSWORD: ${{ secrets.JRELEASER_DEPLOY_MAVEN_MAVENCENTRAL_SONATYPE_PASSWORD }} - JRELEASER_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - JRELEASER_GPG_PASSPHRASE: ${{ secrets.JRELEASER_GPG_PASSPHRASE }} - JRELEASER_GPG_PUBLIC_KEY: ${{ secrets.JRELEASER_GPG_PUBLIC_KEY }} - JRELEASER_GPG_SECRET_KEY: ${{ secrets.JRELEASER_GPG_SECRET_KEY }} - run: ./gradlew fullRelease + GPG_SIGNING_KEY: ${{ secrets.GPG_SIGNING_KEY }} + GPG_SIGNING_PASSWORD: ${{ secrets.GPG_SIGNING_PASSWORD }} + SONATYPE_USERNAME: ${{ secrets.SONATYPE_USERNAME }} + SONATYPE_PASSWORD: ${{ secrets.SONATYPE_PASSWORD }} + run: ./gradlew devSnapshot printDevSnapshotReleaseNote detekt: name: Detekt runs-on: ubuntu-latest diff --git a/build.gradle.kts b/build.gradle.kts index b7594b6..2b5f758 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,8 +1,5 @@ import io.gitlab.arturbosch.detekt.Detekt import io.gitlab.arturbosch.detekt.report.ReportMergeTask -import org.jreleaser.gradle.plugin.tasks.JReleaserFullReleaseTask -import org.jreleaser.model.Active -import org.jreleaser.model.Signing group = "io.github.turchenkoalex" @@ -14,8 +11,8 @@ plugins { alias(libs.plugins.kotlinx.serialization) apply false alias(libs.plugins.detekt) alias(libs.plugins.kover) - alias(libs.plugins.jreleaser) alias(libs.plugins.nebula.release) + alias(libs.plugins.nexus.publish) } allprojects { @@ -91,14 +88,26 @@ val publishProjects = setOf( "cors", ) -val fullRelease = tasks.register("fullRelease") +val settingsProvider = SettingsProvider() + +tasks.withType { + doFirst { + settingsProvider.validateGPGSecrets() + } + dependsOn(tasks.getByName("build")) +} + +tasks.withType { + doFirst { + settingsProvider.validateSonatypeCredentials() + } +} subprojects { if (this.name in publishProjects) { apply(plugin = "java-library") apply(plugin = "maven-publish") apply(plugin = "signing") - apply(plugin = "org.jreleaser") version = sanitizeVersion() java { @@ -113,6 +122,7 @@ subprojects { groupId = "io.github.turchenkoalex" artifactId = "kotlet-${project.name}" + version = sanitizeVersion() versionMapping { usage("java-api") { @@ -155,54 +165,47 @@ subprojects { } } - jreleaser { - gitRootSearch = true - - release { - github { - enabled = false - } - } - - signing { - active = Active.ALWAYS - armored = true - mode = Signing.Mode.MEMORY - } - - deploy { - maven { - mavenCentral { - create("sonatype") { - active = Active.ALWAYS - url = "https://central.sonatype.com/api/v1/publisher" - javadocJar = true - sourceJar = true - stagingRepository(layout.buildDirectory.dir("staging-deploy").get().asFile.absolutePath) - } - } - } - } - } - - val jreleaserDirTask = tasks.register("jreleaserDir") { - doFirst { - mkdir(layout.buildDirectory.dir("jreleaser").get().asFile) - } + signing { + useInMemoryPgpKeys(settingsProvider.gpgSigningKey, settingsProvider.gpgSigningPassword) + sign(publishing.publications["mavenJava"]) } + } +} - val jreleaserTask = tasks.withType { - dependsOn(jreleaserDirTask) - } +tasks.register("printFinalReleaseNote") { + doLast { + printFinalReleaseNote( + groupId = "io.github.turchenkoalex", + artifactId = "kotlet", + sanitizedVersion = project.sanitizeVersion() + ) + } + dependsOn(tasks.getByName("final")) +} - fullRelease { - dependsOn(jreleaserTask) - } +tasks.register("printDevSnapshotReleaseNote") { + doLast { + printDevSnapshotReleaseNote( + groupId = "io.github.turchenkoalex", + artifactId = "kotlet", + sanitizedVersion = project.sanitizeVersion() + ) } + dependsOn(tasks.getByName("devSnapshot")) } -tasks.release { - finalizedBy(fullRelease) + +nexusPublishing { + repositories { + sonatype { + useStaging.set(!project.isSnapshotVersion()) + packageGroup.set("io.github.turchenkoalex") + username.set(settingsProvider.sonatypeUsername) + password.set(settingsProvider.sonatypePassword) + nexusUrl.set(uri("https://s01.oss.sonatype.org/service/local/")) + snapshotRepositoryUrl.set(uri("https://s01.oss.sonatype.org/content/repositories/snapshots/")) + } + } } // We want to change SNAPSHOT versions format from: @@ -213,7 +216,7 @@ tasks.release { fun Project.sanitizeVersion(): String { val version = version.toString() return if (project.isSnapshotVersion()) { - val githubHeadRef = System.getenv("GITHUB_HEAD_REF") + val githubHeadRef = settingsProvider.githubHeadRef if (githubHeadRef != null) { // github pull request version @@ -230,3 +233,80 @@ fun Project.sanitizeVersion(): String { } fun Project.isSnapshotVersion() = version.toString().contains("-dev.") + +fun printFinalReleaseNote(groupId: String, artifactId: String, sanitizedVersion: String) { + println() + println("========================================================") + println() + println("New RELEASE artifact version were published:") + println(" groupId: $groupId") + println(" artifactId: $artifactId") + println(" version: $sanitizedVersion") + println() + println("Discover on Maven Central:") + println(" https://repo1.maven.org/maven2/${groupId.replace('.', '/')}/$artifactId/") + println() + println("Edit or delete artifacts on OSS Nexus Repository Manager:") + println(" https://oss.sonatype.org/#nexus-search;gav~$groupId~~~~") + println() + println("Control staging repositories on OSS Nexus Repository Manager:") + println(" https://oss.sonatype.org/#stagingRepositories") + println() + println("========================================================") + println() +} + +fun printDevSnapshotReleaseNote(groupId: String, artifactId: String, sanitizedVersion: String) { + println() + println("========================================================") + println() + println("New developer SNAPSHOT artifact version were published:") + println(" groupId: $groupId") + println(" artifactId: $artifactId") + println(" version: $sanitizedVersion") + println() + println("Discover on Maven Central:") + println(" https://s01.oss.sonatype.org/content/repositories/snapshots/${groupId.replace('.', '/')}/$artifactId/") + println() + println("Edit or delete artifacts on OSS Nexus Repository Manager:") + println(" https://s01.oss.sonatype.org/#nexus-search;gav~$groupId~~~~") + println() + println("========================================================") + println() +} + +class SettingsProvider { + + val gpgSigningKey: String? + get() = System.getenv(GPG_SIGNING_KEY_PROPERTY) + + val gpgSigningPassword: String? + get() = System.getenv(GPG_SIGNING_PASSWORD_PROPERTY) + + val sonatypeUsername: String? + get() = System.getenv(SONATYPE_USERNAME_PROPERTY) + + val sonatypePassword: String? + get() = System.getenv(SONATYPE_PASSWORD_PROPERTY) + + val githubHeadRef: String? + get() = System.getenv(GITHUB_HEAD_REF_PROPERTY) + + fun validateGPGSecrets() = require( + value = !gpgSigningKey.isNullOrBlank() && !gpgSigningPassword.isNullOrBlank(), + lazyMessage = { "Both $GPG_SIGNING_KEY_PROPERTY and $GPG_SIGNING_PASSWORD_PROPERTY environment variables must not be empty" } + ) + + fun validateSonatypeCredentials() = require( + value = !sonatypeUsername.isNullOrBlank() && !sonatypePassword.isNullOrBlank(), + lazyMessage = { "Both $SONATYPE_USERNAME_PROPERTY and $SONATYPE_PASSWORD_PROPERTY environment variables must not be empty" } + ) + + private companion object { + private const val GPG_SIGNING_KEY_PROPERTY = "GPG_SIGNING_KEY" + private const val GPG_SIGNING_PASSWORD_PROPERTY = "GPG_SIGNING_PASSWORD" + private const val SONATYPE_USERNAME_PROPERTY = "SONATYPE_USERNAME" + private const val SONATYPE_PASSWORD_PROPERTY = "SONATYPE_PASSWORD" + private const val GITHUB_HEAD_REF_PROPERTY = "GITHUB_HEAD_REF" + } +} diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 4b4df09..fe7783b 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -9,6 +9,7 @@ kotlinx-serialization = "1.8.0" kover = "0.9.1" mockk = "1.13.16" nebula = "19.0.10" +nexus = "1.3.0" opentelemetry = "1.46.0" opentelemetry-instrumentation-api = "2.11.0" opentelemetry-semconv = "1.29.0-alpha" @@ -23,6 +24,7 @@ kotlin-jvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" } kotlinx-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" } kover = { id = "org.jetbrains.kotlinx.kover", version.ref = "kover" } nebula-release = { id = "com.netflix.nebula.release", version.ref = "nebula" } +nexus-publish = { id = "io.github.gradle-nexus.publish-plugin", version.ref = "nexus" } [libraries] From 4172b178452aa5c2822738b0730c9b188cf6da59 Mon Sep 17 00:00:00 2001 From: Aleksandr Turchenko Date: Mon, 30 Dec 2024 14:08:41 +0400 Subject: [PATCH 8/8] Add snapshotAll task --- .github/workflows/verify.yaml | 2 +- build.gradle.kts | 10 +++++++++- gradle/libs.versions.toml | 1 - 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/.github/workflows/verify.yaml b/.github/workflows/verify.yaml index 91daf69..292bb7e 100644 --- a/.github/workflows/verify.yaml +++ b/.github/workflows/verify.yaml @@ -56,7 +56,7 @@ jobs: GPG_SIGNING_PASSWORD: ${{ secrets.GPG_SIGNING_PASSWORD }} SONATYPE_USERNAME: ${{ secrets.SONATYPE_USERNAME }} SONATYPE_PASSWORD: ${{ secrets.SONATYPE_PASSWORD }} - run: ./gradlew devSnapshot printDevSnapshotReleaseNote + run: ./gradlew snapshotAll printDevSnapshotReleaseNote detekt: name: Detekt runs-on: ubuntu-latest diff --git a/build.gradle.kts b/build.gradle.kts index 2b5f758..b121d8c 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -103,6 +103,10 @@ tasks.withType { } } +val snapshotAllTask = tasks.register("snapshotAll") { + group = "publishing" +} + subprojects { if (this.name in publishProjects) { apply(plugin = "java-library") @@ -169,6 +173,10 @@ subprojects { useInMemoryPgpKeys(settingsProvider.gpgSigningKey, settingsProvider.gpgSigningPassword) sign(publishing.publications["mavenJava"]) } + + snapshotAllTask.configure { + dependsOn(tasks.getByName("publishToSonatype")) + } } } @@ -191,7 +199,7 @@ tasks.register("printDevSnapshotReleaseNote") { sanitizedVersion = project.sanitizeVersion() ) } - dependsOn(tasks.getByName("devSnapshot")) + dependsOn(snapshotAllTask) } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index fe7783b..2e94e7e 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -19,7 +19,6 @@ swagger = "2.2.27" [plugins] detekt = { id = "io.gitlab.arturbosch.detekt", version.ref = "detekt" } jmh = { id = "me.champeau.jmh", version = "0.7.2" } -jreleaser = { id ="org.jreleaser", version.ref = "jreleaser" } kotlin-jvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" } kotlinx-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" } kover = { id = "org.jetbrains.kotlinx.kover", version.ref = "kover" }