diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index f342839..da5e354 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -22,9 +22,9 @@ jobs: run: ./gradlew build test dokkaGenerateHtml - name: Release to Maven Central env: - JRELEASER_MAVENCENTRAL_USERNAME: ${{ secrets.MAVENCENTRAL_USERNAME }} - JRELEASER_MAVENCENTRAL_TOKEN: ${{ secrets.MAVENCENTRAL_TOKEN }} - JRELEASER_GPG_PUBLIC_KEY: ${{ secrets.GPG_PUBLIC_KEY }} - JRELEASER_GPG_SECRET_KEY: ${{ secrets.GPG_SECRET_KEY }} - JRELEASER_GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }} - run: ./gradlew build publish jreleaserDeploy + MAVENCENTRAL_USERNAME: ${{ secrets.MAVENCENTRAL_USERNAME }} + MAVENCENTRAL_TOKEN: ${{ secrets.MAVENCENTRAL_TOKEN }} + GPG_PUBLIC_KEY: ${{ secrets.GPG_PUBLIC_KEY }} + GPG_SECRET_KEY: ${{ secrets.GPG_SECRET_KEY }} + GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }} + run: ./gradlew publishAggregationToCentralPortal diff --git a/build.gradle.kts b/build.gradle.kts index 47f6f69..adebffe 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -3,18 +3,18 @@ import nl.littlerobots.vcu.plugin.resolver.VersionSelectors import org.gradle.kotlin.dsl.withType import org.jetbrains.kotlin.gradle.dsl.JvmTarget import org.jetbrains.kotlin.gradle.tasks.KotlinJvmCompile -import org.jreleaser.gradle.plugin.tasks.AbstractJReleaserTask -import org.jreleaser.model.Active plugins { `maven-publish` + signing kotlin("jvm") version(libs.versions.kotlin) alias(libs.plugins.detekt) alias(libs.plugins.dokka) alias(libs.plugins.versions) alias(libs.plugins.version.catalog.update) - alias(libs.plugins.jreleaser) + alias(libs.plugins.nmcp.aggregation) + alias(libs.plugins.nmcp) } buildscript { @@ -62,6 +62,7 @@ dependencies { api(libs.coroutines) implementation(libs.jda) + nmcpAggregation(rootProject) } fun isNonStable(version: String): Boolean { @@ -159,7 +160,24 @@ dokka { // Publishing // //////////////// -// Generate pom file for maven central +val mavenCentralUsername: String? = System.getenv("MAVENCENTRAL_USERNAME")?.takeIf { it.isNotBlank() } +val mavenCentralPassword: String? = System.getenv("MAVENCENTRAL_TOKEN")?.takeIf { it.isNotBlank() } +val gpgSecretKey: String? = System.getenv("GPG_SECRET_KEY")?.takeIf { it.isNotBlank() } +val gpgPassphrase: String? = System.getenv("GPG_PASSPHRASE")?.takeIf { it.isNotBlank() } + +val stagingDirectory = layout.buildDirectory.dir("staging-deploy").get() + +nmcpAggregation { + localRepository { + name = "staging-deploy" + path = stagingDirectory.asFile.path + } + + centralPortal { + username.set(mavenCentralUsername) + password.set(mavenCentralPassword) + } +} fun generatePom(): MavenPom.() -> Unit { return { @@ -189,8 +207,6 @@ fun generatePom(): MavenPom.() -> Unit { } } -val stagingDirectory = layout.buildDirectory.dir("staging-deploy").get() - publishing { publications { register("Release") { @@ -204,42 +220,12 @@ publishing { pom.apply(generatePom()) } - - repositories.maven { - url = stagingDirectory.asFile.toURI() - } } } -jreleaser { - project { - versionPattern = "CUSTOM" +if (gpgSecretKey != null) { + signing { + useInMemoryPgpKeys(gpgSecretKey, gpgPassphrase ?: "") + sign(publishing.publications) } - - release { - github { - enabled = false - } - } - - signing.pgp { - active = Active.RELEASE - armored = true - } - - deploy { - maven { - mavenCentral { - register("sonatype") { - active = Active.RELEASE - url = "https://central.sonatype.com/api/v1/publisher" - stagingRepository(stagingDirectory.asFile.relativeTo(projectDir).path) - } - } - } - } -} - -tasks.withType().configureEach { - mustRunAfter(tasks.named("publish")) } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index b84d71e..2d4db11 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -12,6 +12,7 @@ webhooks = "club.minnced:discord-webhooks:0.8.4" [plugins] detekt = "io.gitlab.arturbosch.detekt:1.23.8" dokka = "org.jetbrains.dokka:2.1.0" -jreleaser = "org.jreleaser:1.23.0" version-catalog-update = "nl.littlerobots.version-catalog-update:1.1.0" versions = "com.github.ben-manes.versions:0.53.0" +nmcp = "com.gradleup.nmcp:1.6.1" +nmcp-aggregation = "com.gradleup.nmcp.aggregation:1.6.1"