From 98410df7af4fcf67f6b470d0b72779d3a4d31cb5 Mon Sep 17 00:00:00 2001 From: Leonid Stashevsky Date: Tue, 17 Dec 2024 15:55:27 +0100 Subject: [PATCH] Introduce jreleaser to make the release (#19) --- .github/workflows/gradle-publish.yml | 16 +++++----- build.gradle.kts | 48 ++++++++++++++-------------- gradle/libs.versions.toml | 4 ++- 3 files changed, 35 insertions(+), 33 deletions(-) diff --git a/.github/workflows/gradle-publish.yml b/.github/workflows/gradle-publish.yml index 4177d80..37652c7 100644 --- a/.github/workflows/gradle-publish.yml +++ b/.github/workflows/gradle-publish.yml @@ -28,8 +28,8 @@ jobs: java-version: '21' distribution: 'temurin' server-id: ossrh # Value of the distributionManagement/repository/id field of the pom.xml - server-username: OSSRH_USERNAME - server-password: OSSRH_TOKEN + server-username: JRELEASER_MAVENCENTRAL_USERNAME + server-password: JRELEASER_MAVENCENTRAL_PASSWORD - name: Setup Gradle uses: gradle/actions/setup-gradle@af1da67850ed9a4cedd57bfd976089dd991e2582 # v4.0.0 @@ -38,10 +38,10 @@ jobs: run: ./gradlew build - name: Publish to OSSRH repository - run: ./gradlew publish + run: ./gradlew jreleaserPublish env: - OSSRH_USERNAME: ${{ secrets.OSSRH_USERNAME }} - OSSRH_TOKEN: ${{ secrets.OSSRH_TOKEN }} - SIGNING_KEY_ID: ${{ secrets.SIGNING_KEY_ID }} - SIGNING_KEY_PRIVATE: ${{ secrets.SIGNING_KEY_PRIVATE }} - SIGNING_PASSPHRASE: ${{ secrets.SIGNING_PASSPHRASE }} + JRELEASER_MAVENCENTRAL_USERNAME: ${{ secrets.OSSRH_USERNAME }} + JRELEASER_MAVENCENTRAL_PASSWORD: ${{ secrets.OSSRH_TOKEN }} + JRELEASER_GPG_PUBLIC_KEY: ${{ secrets.GPG_PUBLIC_KEY }} + JRELEASER_GPG_SECRET_KEY: ${{ secrets.GPG_SECRET_KEY }} + JRELEASER_GPG_PASSPHRASE: ${{ secrets.SIGNING_PASSPHRASE }} diff --git a/build.gradle.kts b/build.gradle.kts index 248c75e..d56cbe3 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,21 +1,15 @@ import org.jetbrains.dokka.gradle.engine.parameters.VisibilityModifier import org.jetbrains.kotlin.gradle.dsl.ExplicitApiMode +import org.jreleaser.model.Active plugins { alias(libs.plugins.kotlin.jvm) alias(libs.plugins.kotlin.serialization) alias(libs.plugins.dokka) + alias(libs.plugins.jreleaser) `maven-publish` } -if (project.getSensitiveProperty("SIGNING_KEY_PRIVATE") != null) { - apply(plugin = "signing") -} - -tasks.withType().configureEach { - dependsOn(tasks.withType()) -} - group = "io.modelcontextprotocol" version = "0.1.0" @@ -39,28 +33,12 @@ dependencies { testImplementation(libs.kotlinx.coroutines.debug) } -val ossrhUsername = System.getenv("OSSRH_USERNAME") - ?: project.findProperty("OSSRH_USERNAME") as String? - -val ossrhPassword = System.getenv("OSSRH_TOKEN") - ?: project.findProperty("OSSRH_TOKEN") as String? - val sources = tasks.create("sourcesJar") { from(sourceSets["main"].allSource) archiveClassifier.set("sources") } publishing { - repositories { - maven(url = "https://oss.sonatype.org/service/local/staging/deploy/maven2/") { - name = "ossrh" - credentials { - username = ossrhUsername - password = ossrhPassword - } - } - } - publications { create("maven") { groupId = project.group.toString() @@ -79,6 +57,28 @@ publishing { artifact(javadocJar) artifact(sources) } + + repositories { + maven(url = layout.buildDirectory.dir("staging-deploy")) + } +} + +jreleaser { + signing { + active.set(Active.ALWAYS) + armored = true + } + deploy { + maven { + mavenCentral { + val ossrh by creating { + active.set(Active.ALWAYS) + url.set("https://central.sonatype.com/api/v1/publisher") + stagingRepository("target/staging-deploy") + } + } + } + } } fun MavenPom.configureMavenCentralMetadata() { diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 33d2411..a16676c 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -9,6 +9,7 @@ coroutines = "1.9.0" ktor = "3.0.2" mockk = "1.13.13" logging = "7.0.0" +jreleaser = "1.15.0" [libraries] # Kotlinx libraries @@ -34,4 +35,5 @@ mockk = { group = "io.mockk", name = "mockk", version.ref = "mockk" } [plugins] kotlin-jvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" } kotlin-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" } -dokka = { id = "org.jetbrains.dokka", version.ref = "dokka" } \ No newline at end of file +dokka = { id = "org.jetbrains.dokka", version.ref = "dokka" } +jreleaser = { id = "org.jreleaser", version.ref = "jreleaser"} \ No newline at end of file