diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2245265..ceb9aa8 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -28,10 +28,10 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout Code - uses: actions/checkout@v4 + uses: actions/checkout@v7 - name: Install Go - uses: actions/setup-go@v5 + uses: actions/setup-go@v7 with: go-version: 'stable' @@ -46,17 +46,16 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout code - uses: actions/checkout@v4 + uses: actions/checkout@v7 - name: Set up JDK 21 - uses: actions/setup-java@v4 + uses: actions/setup-java@v6 with: java-version: '21' distribution: 'temurin' - cache: 'gradle' - name: Setup Gradle - uses: gradle/actions/setup-gradle@v4 + uses: gradle/actions/setup-gradle@v5 - name: Grant execute permission for gradlew run: chmod +x gradlew @@ -65,7 +64,7 @@ jobs: run: ./gradlew clean check - name: Upload test results - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v7 if: always() with: name: test-results diff --git a/.github/workflows/integration.yml b/.github/workflows/integration.yml index 88a7227..5068d5e 100644 --- a/.github/workflows/integration.yml +++ b/.github/workflows/integration.yml @@ -29,17 +29,16 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout code - uses: actions/checkout@v4 + uses: actions/checkout@v7 - name: Set up JDK 21 - uses: actions/setup-java@v4 + uses: actions/setup-java@v6 with: java-version: '21' distribution: 'temurin' - cache: 'gradle' - name: Setup Gradle - uses: gradle/actions/setup-gradle@v4 + uses: gradle/actions/setup-gradle@v5 - name: Grant execute permission for gradlew run: chmod +x gradlew @@ -51,7 +50,7 @@ jobs: run: ./gradlew test --tests "cloud.stackit.pubsub.sdk.integration.*" - name: Upload test results - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v7 if: always() with: name: integration-test-results diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index ce6c2e5..2e863e0 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -27,17 +27,16 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout code - uses: actions/checkout@v4 + uses: actions/checkout@v7 - name: Set up JDK 21 - uses: actions/setup-java@v4 + uses: actions/setup-java@v6 with: java-version: '21' distribution: 'temurin' - cache: 'gradle' - name: Setup Gradle - uses: gradle/actions/setup-gradle@v4 + uses: gradle/actions/setup-gradle@v5 - name: Grant execute permission for gradlew run: chmod +x gradlew @@ -51,23 +50,22 @@ jobs: needs: build steps: - name: Checkout code - uses: actions/checkout@v4 + uses: actions/checkout@v7 - name: Set up JDK 21 - uses: actions/setup-java@v4 + uses: actions/setup-java@v6 with: java-version: '21' distribution: 'temurin' - cache: 'gradle' - name: Setup Gradle - uses: gradle/actions/setup-gradle@v4 + uses: gradle/actions/setup-gradle@v5 - name: Grant execute permission for gradlew run: chmod +x gradlew - name: Publish to Maven Central - run: ./gradlew publishAllPublicationsToMavenRepository + run: ./gradlew publishToMavenCentral env: RELEASE_VERSION: ${{ github.event.release.tag_name }} ORG_GRADLE_PROJECT_mavenCentralUsername: ${{ secrets.MAVEN_CENTRAL_USERNAME }} diff --git a/build.gradle.kts b/build.gradle.kts index c4f8cef..441352c 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -16,9 +16,8 @@ plugins { `java-library` - `maven-publish` - signing kotlin("jvm") version "2.4.10" + id("com.vanniktech.maven.publish") version "0.37.0" id("jacoco") } @@ -52,67 +51,44 @@ tasks.withType().configureEach } } -java { - withSourcesJar() - withJavadocJar() -} +mavenPublishing { + coordinates(group.toString(), "pubsub-sdk-java", version.toString()) + + // Uploads via the Central Portal API and releases once validation passes. + publishToMavenCentral(automaticRelease = true) + + // Signing is only required for Maven Central; allow unsigned local publishing. + if (providers.gradleProperty("signingInMemoryKey").isPresent) { + signAllPublications() + } + + pom { + name.set("pubsub-sdk-java") + description.set("Kotlin/Java SDK for the STACKIT PubSub Data Plane API") + url.set("https://github.com/stackitcloud/pubsub-sdk-java") -publishing { - publications { - create("mavenJava") { - from(components["java"]) - - pom { - name.set("pubsub-sdk-java") - description.set("Kotlin/Java SDK for the STACKIT PubSub Data Plane API") - url.set("https://github.com/stackitcloud/pubsub-sdk-java") - - licenses { - license { - name.set("Apache License, Version 2.0") - url.set("https://www.apache.org/licenses/LICENSE-2.0.txt") - } - } - - developers { - developer { - id.set("stackit") - name.set("STACKIT") - email.set("opensource@stackit.cloud") - organization.set("Schwarz Digits Cloud GmbH & Co. KG") - organizationUrl.set("https://stackit.de") - } - } - - scm { - connection.set("scm:git:git://github.com/stackitcloud/pubsub-sdk-java.git") - developerConnection.set("scm:git:ssh://github.com:stackitcloud/pubsub-sdk-java.git") - url.set("https://github.com/stackitcloud/pubsub-sdk-java") - } + licenses { + license { + name.set("Apache License, Version 2.0") + url.set("https://www.apache.org/licenses/LICENSE-2.0.txt") } } - } - repositories { - maven { - name = "maven" - val releasesRepoUrl = uri("https://ossrh-staging-api.central.sonatype.com/service/local/staging/deploy/maven2/") - val snapshotsRepoUrl = uri("https://central.sonatype.com/repository/maven-snapshots/") - url = if (version.toString().endsWith("SNAPSHOT")) snapshotsRepoUrl else releasesRepoUrl - credentials { - username = findProperty("mavenCentralUsername") as String? ?: System.getenv("MAVEN_CENTRAL_USERNAME") - password = findProperty("mavenCentralPassword") as String? ?: System.getenv("MAVEN_CENTRAL_PASSWORD") + developers { + developer { + id.set("stackit") + name.set("STACKIT") + email.set("opensource@stackit.cloud") + organization.set("Schwarz Digits Cloud GmbH & Co. KG") + organizationUrl.set("https://stackit.de") } } - } -} -signing { - val signingKey = findProperty("signingInMemoryKey") as String? ?: System.getenv("GPG_SECRET_KEY") - val signingPassword = findProperty("signingInMemoryKeyPassword") as String? ?: System.getenv("GPG_PASSPHRASE") - if (!signingKey.isNullOrBlank()) { - useInMemoryPgpKeys(signingKey, signingPassword) - sign(publishing.publications["mavenJava"]) + scm { + connection.set("scm:git:git://github.com/stackitcloud/pubsub-sdk-java.git") + developerConnection.set("scm:git:ssh://github.com:stackitcloud/pubsub-sdk-java.git") + url.set("https://github.com/stackitcloud/pubsub-sdk-java") + } } }