diff --git a/.github/workflows/uniffi.yaml b/.github/workflows/uniffi.yaml index 975b8039..bbec15b0 100644 --- a/.github/workflows/uniffi.yaml +++ b/.github/workflows/uniffi.yaml @@ -100,11 +100,8 @@ jobs: - name: Setup Rust Toolchain uses: dtolnay/rust-toolchain@stable - - name: Validate Gradle wrapper jar - uses: gradle/actions/wrapper-validation@v3 - - name: Setup Gradle - uses: gradle/actions/setup-gradle@v3 + uses: gradle/actions/setup-gradle@v4 - name: Download all artifacts uses: actions/download-artifact@v4 @@ -133,13 +130,21 @@ jobs: - name: Print directory tree run: tree build - - name: Publish Maven Artifact + - name: Publish Java Maven Artifact + env: + SONATYPE_USERNAME: ${{ secrets.SONATYPE_USERNAME }} + SONATYPE_PASSWORD: ${{ secrets.SONATYPE_PASSWORD }} + GPG_SIGNING_KEY: ${{ secrets.GPG_SIGNING_KEY }} + GPG_SIGNING_PASSPHRASE: ${{ secrets.GPG_SIGNING_PASSPHRASE }} + run: ./gradlew publishAllPublicationsToCentralPortal -PpublishScope=java + + - name: Publish Kotlin Maven Artifact env: SONATYPE_USERNAME: ${{ secrets.SONATYPE_USERNAME }} SONATYPE_PASSWORD: ${{ secrets.SONATYPE_PASSWORD }} GPG_SIGNING_KEY: ${{ secrets.GPG_SIGNING_KEY }} GPG_SIGNING_PASSPHRASE: ${{ secrets.GPG_SIGNING_PASSPHRASE }} - run: ./gradlew publishMavenKotlinPublicationToCentralPortal publishMavenJavaPublicationToCentralPortal + run: ./gradlew publishAllPublicationsToCentralPortal -PpublishScope=kotlin release-csharp: @@ -629,10 +634,8 @@ jobs: java-version: '21' distribution: 'temurin' - - name: Validate Gradle wrapper jar - uses: gradle/actions/wrapper-validation@v3 - name: Setup Gradle - uses: gradle/actions/setup-gradle@v3 + uses: gradle/actions/setup-gradle@v4 - name: Download Kotlin bindings uses: actions/download-artifact@v4 @@ -652,4 +655,4 @@ jobs: SONATYPE_PASSWORD: ${{ secrets.SONATYPE_PASSWORD }} GPG_SIGNING_KEY: ${{ secrets.GPG_SIGNING_KEY }} GPG_SIGNING_PASSPHRASE: ${{ secrets.GPG_SIGNING_PASSPHRASE }} - run: ./gradlew publishMavenKotlinAndroidPublicationToCentralPortal \ No newline at end of file + run: ./gradlew publishAllPublicationsToCentralPortal -PpublishScope=android \ No newline at end of file diff --git a/bindings/uniffi/build.gradle.kts b/bindings/uniffi/build.gradle.kts index 67f5336b..911ef655 100644 --- a/bindings/uniffi/build.gradle.kts +++ b/bindings/uniffi/build.gradle.kts @@ -17,7 +17,7 @@ plugins { id("signing") id("org.jetbrains.dokka") version "2.0.0" id("org.jetbrains.dokka-javadoc") version "2.0.0" - id("com.gradleup.nmcp") version "0.0.9" + id("com.gradleup.nmcp") version "1.4.4" } repositories { @@ -138,46 +138,56 @@ tasks { } } +// Use -PpublishScope=java|kotlin|desktop|android|all to control which publications are included +// desktop = java + kotlin +val publishScope = (findProperty("publishScope") as String?) ?: "all" + publishing { publications { - create("mavenJava") { - groupId = "io.gorules" - artifactId = "zen-engine" - artifact(tasks["generateJavaJar"]) - artifact(tasks["generateJavaSourcesJar"]) - artifact(tasks["javadocJarJava"]) - - configurePom { - dependency("net.java.dev.jna:jna:5.17.0") + if (publishScope in listOf("all", "desktop", "java")) { + create("mavenJava") { + groupId = "io.gorules" + artifactId = "zen-engine" + artifact(tasks["generateJavaJar"]) + artifact(tasks["generateJavaSourcesJar"]) + artifact(tasks["javadocJarJava"]) + + configurePom { + dependency("net.java.dev.jna:jna:5.17.0") + } } } - create("mavenKotlin") { - groupId = "io.gorules" - artifactId = "zen-engine-kotlin" - artifact(tasks["generateKotlinJar"]) - artifact(tasks["generateKotlinSourcesJar"]) - artifact(tasks["javadocJarKotlin"]) - - configurePom { - dependency("net.java.dev.jna:jna:5.17.0") + if (publishScope in listOf("all", "desktop", "kotlin")) { + create("mavenKotlin") { + groupId = "io.gorules" + artifactId = "zen-engine-kotlin" + artifact(tasks["generateKotlinJar"]) + artifact(tasks["generateKotlinSourcesJar"]) + artifact(tasks["javadocJarKotlin"]) + + configurePom { + dependency("net.java.dev.jna:jna:5.17.0") + } } } - create("mavenKotlinAndroid") { - groupId = "io.gorules" - artifactId = "zen-engine-kotlin-android" - - artifact("build-android/aar/zen-engine-android-release.aar") { - extension = "aar" - } - artifact(tasks["generateKotlinAndroidSourcesJar"]) - artifact(tasks["javadocJarKotlinAndroid"]) - - configurePom { - dependency("net.java.dev.jna:jna:5.14.0", "aar") - dependency("androidx.core:core-ktx:1.12.0") - dependency("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.2") + if (publishScope in listOf("all", "android")) { + create("mavenKotlinAndroid") { + groupId = "io.gorules" + artifactId = "zen-engine-kotlin-android" + + artifact("build-android/aar/zen-engine-android-release.aar") { + extension = "aar" + } + artifact(tasks["generateKotlinAndroidSourcesJar"]) + artifact(tasks["javadocJarKotlinAndroid"]) + + configurePom { + dependency("net.java.dev.jna:jna:5.14.0", "aar") + dependency("androidx.core:core-ktx:1.12.0") + dependency("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.2") + } } } } @@ -194,13 +204,13 @@ signing { val signingKey = Base64.getDecoder().decode(signingKeyBase64.get()).toString(Charsets.UTF_8) useInMemoryPgpKeys(signingKey, signingPassphrase.get()) - sign(publishing.publications["mavenJava"], publishing.publications["mavenKotlin"], publishing.publications["mavenKotlinAndroid"]) + sign(*publishing.publications.toTypedArray()) } } nmcp { - publishAllPublications { - publicationType = "USER_MANAGED" + publishAllPublicationsToCentralPortal { + publishingType = "USER_MANAGED" val remoteUsername = providers.environmentVariable("SONATYPE_USERNAME") val remotePassword = providers.environmentVariable("SONATYPE_PASSWORD")