From 8e0d24d739e7f0d3391d7e097323d7807e5bad16 Mon Sep 17 00:00:00 2001 From: Charith Ellawala Date: Mon, 12 May 2025 17:14:07 +0100 Subject: [PATCH] chore: Migrate to Maven Central Portal The OSSRH repository is being discontinued in June and all projects should be migrated to the new Maven Central Portal. Also sets the minimum Java version to 17 which is the oldest supported Java version at the moment. Signed-off-by: Charith Ellawala --- .github/workflows/publish.yaml | 24 +++++++----- .github/workflows/test.yaml | 10 ++--- build.gradle.kts | 70 +++++++++++++++++++++------------- 3 files changed, 62 insertions(+), 42 deletions(-) diff --git a/.github/workflows/publish.yaml b/.github/workflows/publish.yaml index 8989a7b..e603178 100644 --- a/.github/workflows/publish.yaml +++ b/.github/workflows/publish.yaml @@ -3,8 +3,10 @@ name: Publish on: workflow_dispatch: push: + branches: + - "main" tags: - - '*' + - "*" jobs: publish: runs-on: ubuntu-latest @@ -16,18 +18,20 @@ jobs: - uses: actions/setup-java@v4 with: - java-version: '11' - distribution: 'temurin' - cache: 'gradle' + java-version: "17" + distribution: "temurin" + cache: "gradle" - name: Validate Gradle wrapper uses: gradle/wrapper-validation-action@v3 - name: Publish package + env: + JRELEASER_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + JRELEASER_MAVENCENTRAL_USERNAME: ${{ secrets.JRELEASER_MAVENCENTRAL_USERNAME }} + JRELEASER_MAVENCENTRAL_PASSWORD: ${{ secrets.JRELEASER_MAVENCENTRAL_PASSWORD }} + 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 publishToSonatype closeAndReleaseSonatypeStagingRepository \ - -Possrh.user='${{ secrets.OSSRH_USER}}' \ - -Possrh.password='${{ secrets.OSSRH_PASSWORD }}' \ - -Possrh.signing.key_id='${{ secrets.OSSRH_SIGNING_KEY_ID }}' \ - -Possrh.signing.password='${{ secrets.OSSRH_SIGNING_PASSWORD }}' \ - -Possrh.signing.key='${{ secrets.OSSRH_SIGNING_KEY }}' --stacktrace + ./gradlew jreleaserFullRelease diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index dc132dc..5d47d19 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -11,16 +11,16 @@ jobs: contents: read strategy: matrix: - java: ['11', '17'] + java: ["17", "21"] name: "Java ${{ matrix.java }}" steps: - uses: actions/checkout@v4 - uses: actions/setup-java@v4 with: - java-version: '${{ matrix.java }}' - distribution: 'temurin' - cache: 'gradle' + java-version: "${{ matrix.java }}" + distribution: "temurin" + cache: "gradle" - name: Validate Gradle wrapper uses: gradle/wrapper-validation-action@v3 @@ -36,7 +36,7 @@ jobs: steps: - id: setoutput run: |- - echo "::set-output name=success::true" + echo "::set-output name=success::true" testSuccess: runs-on: ubuntu-latest diff --git a/build.gradle.kts b/build.gradle.kts index a924fd7..cc61811 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -9,10 +9,9 @@ plugins { java idea `maven-publish` - signing id("com.google.protobuf") version "0.9.5" id("com.palantir.git-version") version "3.2.0" - id("io.github.gradle-nexus.publish-plugin") version "2.0.0" + id("org.jreleaser") version "1.18.0" id("com.gradleup.shadow") version "8.3.6" } @@ -99,16 +98,7 @@ tasks.build { publishing { repositories { maven { - val releasesURL = "https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/" - val snapshotsURL = "https://s01.oss.sonatype.org/content/repositories/snapshots/" - name = "OSSRH" - url = uri( - if (version.toString().endsWith("SNAPSHOT")) snapshotsURL else releasesURL - ) - credentials { - username = project.findProperty("ossrh.user") as String? ?: System.getenv("OSSRH_USER") - password = project.findProperty("ossrh.password") as String? ?: System.getenv("OSSRH_PASSWORD") - } + url = layout.buildDirectory.dir("staging-deploy").get().asFile.toURI() } } publications { @@ -139,22 +129,48 @@ publishing { } } -nexusPublishing { - repositories { - sonatype { //only for users registered in Sonatype after 24 Feb 2021 - nexusUrl.set(uri("https://s01.oss.sonatype.org/service/local/")) - snapshotRepositoryUrl.set(uri("https://s01.oss.sonatype.org/content/repositories/snapshots/")) - username.set(project.findProperty("ossrh.user") as String? ?: System.getenv("OSSRH_USER")) - password.set(project.findProperty("ossrh.password") as String? ?: System.getenv("OSSRH_PASSWORD")) +configure { + gitRootSearch = true + project { + description.set("Java SDK for Cerbos: painless access control for cloud native applications") + authors.set(listOf("Cerbos Developers")) + license.set("Apache-2.0") + links { + homepage.set("https://github.com/cerbos/cerbos-sdk-java") + bugTracker.set("https://github.com/cerbos/cerbos-sdk-java/issues") + } + inceptionYear.set("2022") + snapshot { + fullChangelog.set(true) } } -} -signing { - val signingKeyId = project.findProperty("ossrh.signing.key_id") as String? ?: System.getenv("OSSRH_SIGNING_KEY_ID") - val signingKey = project.findProperty("ossrh.signing.key") as String? ?: System.getenv("OSSRH_SIGNING_KEY") - val signingPassword = - project.findProperty("ossrh.signing.password") as String? ?: System.getenv("OSSRH_SIGNING_PASSWORD") - useInMemoryPgpKeys(signingKeyId, signingKey, signingPassword) - sign(publishing.publications["ossrh"]) + signing { + active.set(org.jreleaser.model.Active.ALWAYS) + armored.set(true) + } + + deploy { + maven { + mavenCentral { + create("sonatype") { + active.set(org.jreleaser.model.Active.RELEASE) + url.set("https://central.sonatype.com/api/v1/publisher") + stagingRepository("target/staging-deploy") + } + } + nexus2 { + create("snapshot-deploy") { + active.set(org.jreleaser.model.Active.SNAPSHOT) + snapshotUrl.set("https://central.sonatype.com/repository/maven-snapshots") + applyMavenCentralRules.set(true) + snapshotSupported.set(true) + closeRepository.set(true) + releaseRepository.set(true) + stagingRepository("target/staging-deploy") + } + } + } + } } +