Skip to content

Commit

Permalink
Maven publication: adding Maven central repository (#286)
Browse files Browse the repository at this point in the history
* Maven publication: adding Maven central repository

* Maven publication: modifying PGP references

* Maven publication: align with new GPG variable naming convention
  • Loading branch information
DariusIMP authored Nov 14, 2024
1 parent fce58aa commit e1fd6a2
Show file tree
Hide file tree
Showing 3 changed files with 101 additions and 7 deletions.
14 changes: 12 additions & 2 deletions .github/workflows/publish-android.yml
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,17 @@ jobs:
echo "PUB_MODE=-PSNAPSHOT" >> $GITHUB_ENV
fi
- name: Gradle Publish Android Package
run: ./gradlew publishAndroidReleasePublicationToGithubPackagesRepository -Pandroid=true ${{ env.PUB_MODE }}
- name: Gradle Publish Android Package to GitHub packages repository
run: ./gradlew publishAndroidReleasePublicationToGithubPackagesRepository -PremotePublication=true -Pandroid=true ${{ env.PUB_MODE }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
ORG_GPG_PRIVATE_KEY: ${{ secrets.ORG_GPG_PRIVATE_KEY }}
ORG_GPG_PASSPHRASE: ${{ secrets.ORG_GPG_PASSPHRASE }}

- name: Gradle Publish Android Package to Maven Central repository
run: ./gradlew publishAndroidReleasePublicationToMavenCentralRepository -PremotePublication=true -Pandroid=true ${{ env.PUB_MODE }}
env:
ORG_OSSRH_USERNAME: ${{ secrets.ORG_OSSRH_USERNAME }}
ORG_OSSRH_PASSWORD: ${{ secrets.ORG_OSSRH_PASSWORD }}
ORG_GPG_PRIVATE_KEY: ${{ secrets.ORG_GPG_PRIVATE_KEY }}
ORG_GPG_PASSPHRASE: ${{ secrets.ORG_GPG_PASSPHRASE }}
14 changes: 12 additions & 2 deletions .github/workflows/publish-jvm.yml
Original file line number Diff line number Diff line change
Expand Up @@ -175,7 +175,17 @@ jobs:
echo "PUB_MODE=-PSNAPSHOT" >> $GITHUB_ENV
fi
- name: Gradle Publish JVM Package
run: ./gradlew publishJvmPublicationToGithubPackagesRepository -PgithubPublish=true ${{ env.PUB_MODE }}
- name: Gradle Publish JVM Package to GitHub packages repository
run: ./gradlew publishJvmPublicationToGithubPackagesRepository -PremotePublication=true ${{ env.PUB_MODE }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
ORG_GPG_PRIVATE_KEY: ${{ secrets.ORG_GPG_PRIVATE_KEY }}
ORG_GPG_PASSPHRASE: ${{ secrets.ORG_GPG_PASSPHRASE }}

- name: Gradle Publish JVM Package to Maven Central repository
run: ./gradlew publishJvmPublicationToMavenCentralRepository -PremotePublication=true ${{ env.PUB_MODE }}
env:
ORG_OSSRH_USERNAME: ${{ secrets.ORG_OSSRH_USERNAME }}
ORG_OSSRH_PASSWORD: ${{ secrets.ORG_OSSRH_PASSWORD }}
ORG_GPG_PRIVATE_KEY: ${{ secrets.ORG_GPG_PRIVATE_KEY }}
ORG_GPG_PASSPHRASE: ${{ secrets.ORG_GPG_PASSPHRASE }}
80 changes: 77 additions & 3 deletions zenoh-kotlin/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,15 @@ plugins {
id("com.adarshr.test-logger")
id("org.jetbrains.dokka")
`maven-publish`
signing
}

val androidEnabled = project.findProperty("android")?.toString()?.toBoolean() == true
val release = project.findProperty("release")?.toString()?.toBoolean() == true
val githubPublish = project.findProperty("githubPublish")?.toString()?.toBoolean() == true

// If the publication is meant to be done on a remote repository (GitHub packages or Maven central).
// Modifying this property will affect the release workflows!
val isRemotePublication = project.findProperty("remotePublication")?.toString()?.toBoolean() == true

var buildMode = if (release) BuildMode.RELEASE else BuildMode.DEBUG

Expand Down Expand Up @@ -79,7 +83,7 @@ kotlin {
}
}
val jvmMain by getting {
if (githubPublish) {
if (isRemotePublication) {
// The line below is intended to load the native libraries that are crosscompiled on GitHub actions when publishing a JVM package.
resources.srcDir("../jni-libs").include("*/**")
} else {
Expand All @@ -94,7 +98,54 @@ kotlin {

publishing {
publications.withType<MavenPublication> {
groupId = "io.zenoh"
artifactId = "zenoh-kotlin"
version = project.version.toString() + if (project.hasProperty("SNAPSHOT")) "-SNAPSHOT" else ""

pom {
name.set("Zenoh Kotlin")
description.set("The Eclipse Zenoh: Zero Overhead Pub/sub, Store/Query and Compute.")
url.set("https://zenoh.io/")

licenses {
license {
name.set("Eclipse Public License 2.0 OR Apache License 2.0")
url.set("http://www.eclipse.org/legal/epl-2.0")
}
}
developers {
developer {
id.set("ZettaScale")
name.set("ZettaScale Zenoh Team")
email.set("[email protected]")
}
developer {
id.set("DariusIMP")
name.set("Darius Maitia")
email.set("[email protected]")
}
developer {
id.set("Mallets")
name.set("Luca Cominardi")
email.set("[email protected]")
}
developer {
id.set("Kydos")
name.set("Angelo Corsaro")
email.set("[email protected]")
}
developer {
id.set("Wyfo")
name.set("Joseph Perez")
email.set("[email protected]")
}
}
scm {
connection.set("scm:git:https://github.com/eclipse-zenoh/zenoh-kotlin.git")
developerConnection.set("scm:git:https://github.com/eclipse-zenoh/zenoh-kotlin.git")
url.set("https://github.com/eclipse-zenoh/zenoh-kotlin")
}
}
}

repositories {
Expand All @@ -106,9 +157,32 @@ kotlin {
password = System.getenv("GITHUB_TOKEN")
}
}
maven {
name = "MavenCentral"
url = uri(if (project.hasProperty("SNAPSHOT"))
"https://oss.sonatype.org/content/repositories/snapshots/"
else
"https://oss.sonatype.org/service/local/staging/deploy/maven2/"
)
credentials {
username = System.getenv("ORG_OSSRH_USERNAME")
password = System.getenv("ORG_OSSRH_PASSWORD")
}
}
}
}
}

signing {
isRequired = isRemotePublication
useInMemoryPgpKeys(System.getenv("ORG_GPG_PRIVATE_KEY"), System.getenv("ORG_GPG_PASSPHRASE"))
sign(publishing.publications)
}

tasks.withType<PublishToMavenRepository>().configureEach {
dependsOn(tasks.withType<Sign>())
}

tasks.withType<Test> {
doFirst {
// The line below is added for the Android Unit tests which are equivalent to the JVM tests.
Expand All @@ -130,7 +204,7 @@ tasks.named("compileKotlinJvm") {

tasks.register("buildZenohJni") {
doLast {
if (!githubPublish) {
if (!isRemotePublication) {
// This is intended for local publications. For publications done through GitHub workflows,
// the zenoh-jni build is achieved and loaded differently from the CI
buildZenohJNI(buildMode)
Expand Down

0 comments on commit e1fd6a2

Please sign in to comment.