Skip to content

Commit 97cf318

Browse files
author
Shrey Bana
committed
[WIP] feat(java): Publishing to central-sonatype.
1 parent 984c436 commit 97cf318

9 files changed

Lines changed: 186 additions & 310 deletions

File tree

.github/workflows/java-cicd.yaml

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
name: Java CI/CD
2+
3+
on:
4+
push:
5+
branches: [ main ]
6+
pull_request:
7+
branches: [ main ]
8+
workflow_dispatch:
9+
10+
jobs:
11+
build-and-test:
12+
runs-on: ubuntu-latest
13+
defaults:
14+
run:
15+
working-directory: clients/java
16+
17+
steps:
18+
- name: Checkout code
19+
uses: actions/checkout@v4
20+
21+
- name: Set up JDK 17
22+
uses: actions/setup-java@v4
23+
with:
24+
java-version: '17'
25+
distribution: 'temurin'
26+
27+
- name: Make gradlew executable
28+
run: chmod +x gradlew
29+
30+
- name: Run Gradle assemble
31+
run: ./gradlew assemble
32+
33+
# - name: Run tests
34+
# run: ./gradlew test
35+
36+
- name: Upload build artifacts
37+
if: failure()
38+
uses: actions/upload-artifact@v4
39+
with:
40+
name: build-reports
41+
path: |
42+
build/reports/
43+
build/test-results/
44+
retention-days: 7
45+
46+
publish:
47+
runs-on: ubuntu-latest
48+
needs: build-and-test
49+
if: github.event_name == 'workflow_dispatch'
50+
defaults:
51+
run:
52+
working-directory: clients/java
53+
54+
steps:
55+
- name: Checkout code
56+
uses: actions/checkout@v4
57+
58+
- name: Set up JDK 17
59+
uses: actions/setup-java@v4
60+
with:
61+
java-version: '17'
62+
distribution: 'temurin'
63+
64+
- name: Make gradlew executable
65+
run: chmod +x gradlew
66+
67+
- name: Publish to Sonatype
68+
run: ./gradlew publishToSonatype closeAndReleaseSonatypeStagingRepository
69+
env:
70+
GRADLE_OPTS: >-
71+
-Dsonatype.username=${{ secrets.SONATYPE_USERNAME }}
72+
-Dsonatype.password=${{ secrets.SONATYPE_PASSWORD }}
73+
-Dsigning.keyId=${{ secrets.SIGNING_KEY_ID }}
74+
-Dsigning.password=${{ secrets.SIGNING_PASSWORD }}
75+
-Dsigning.key=${{ secrets.SIGNING_KEY }}
Lines changed: 4 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,13 @@
1-
import java.net.URL
2-
31
plugins {
4-
`maven-publish`
5-
`java-library`
2+
`java-library-conventions`
3+
`publishing-conventions`
64
kotlin("jvm") version "1.9.10"
75
}
86

9-
java {
10-
toolchain {
11-
languageVersion = JavaLanguageVersion.of(17)
12-
}
13-
}
7+
extra["displayName"] = "Superposition Foreign Function Interface"
8+
description = "Bindings for some of superpositions core functions."
149

1510
dependencies {
1611
implementation("org.jetbrains.kotlin:kotlin-stdlib")
1712
implementation("net.java.dev.jna:jna:5.13.0")
1813
}
19-
20-
21-
publishing {
22-
publications {
23-
create<MavenPublication>("maven") {
24-
from(components["kotlin"])
25-
}
26-
}
27-
}

clients/java/build.gradle.kts

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
plugins {
2+
id("io.github.gradle-nexus.publish-plugin") version "1.3.0"
3+
}
4+
15
allprojects {
26
group = "io.juspay.superposition"
37
version = System.getenv("VERSION") ?: "0.0.1-SNAPSHOT"
@@ -6,19 +10,17 @@ allprojects {
610
google()
711
gradlePluginPortal()
812
}
13+
}
914

10-
apply(plugin = "maven-publish")
11-
12-
configure<PublishingExtension> {
13-
repositories {
14-
maven {
15-
name = "CodeArtifact"
16-
url = uri(System.getenv("CODEARTIFACT_REPOSITORY_ENDPOINT") ?: "https://non.existent.site.here")
17-
credentials {
18-
username = "aws"
19-
password = System.getenv("CODEARTIFACT_AUTH_TOKEN")
20-
}
21-
}
15+
nexusPublishing {
16+
repositories {
17+
// see https://central.sonatype.org/publish/publish-portal-ossrh-staging-api/#configuration
18+
sonatype {
19+
nexusUrl.set(uri("https://ossrh-staging-api.central.sonatype.com/service/local/"))
20+
snapshotRepositoryUrl.set(uri("https://central.sonatype.com/repository/maven-snapshots/"))
21+
// These are provided via envs.
22+
username.set(project.properties["sonatypeUsername"].toString())
23+
password.set(project.properties["sonatypePassword"].toString())
2224
}
2325
}
2426
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
plugins {
2+
`kotlin-dsl`
3+
}
4+
5+
repositories {
6+
gradlePluginPortal()
7+
mavenCentral()
8+
google()
9+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
plugins {
2+
`java-library`
3+
}
4+
5+
java {
6+
// Can't use this as provider is a mixed project.
7+
// withJavadocJar()
8+
withSourcesJar()
9+
toolchain {
10+
languageVersion.set(JavaLanguageVersion.of(17))
11+
}
12+
}
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
import org.gradle.api.publish.maven.MavenPublication
2+
import org.gradle.kotlin.dsl.extra
3+
import org.gradle.kotlin.dsl.provideDelegate
4+
5+
plugins {
6+
`maven-publish`
7+
signing
8+
}
9+
10+
publishing {
11+
// Add license spec to all maven publications
12+
publications {
13+
afterEvaluate {
14+
create<MavenPublication>("maven") {
15+
from(components["java"])
16+
val displayName: String by extra
17+
pom {
18+
name.set(displayName)
19+
description.set(project.description)
20+
url.set("https://github.com/juspay/superposition")
21+
licenses {
22+
license {
23+
name.set("Apache License 2.0")
24+
url.set("http://www.apache.org/licenses/LICENSE-2.0.txt")
25+
}
26+
}
27+
developers {
28+
developer {
29+
id.set("superposition")
30+
name.set("superposition")
31+
email.set("superposition@juspay.in")
32+
organization.set("Juspay")
33+
organizationUrl.set("https://juspay.io")
34+
roles.add("developer")
35+
}
36+
}
37+
scm {
38+
connection.set("https://github.com/juspay/superposition.git")
39+
developerConnection.set("https://github.com/juspay/superposition.git")
40+
url.set("https://github.com/juspay/superposition.git")
41+
}
42+
}
43+
}
44+
}
45+
}
46+
}
47+
48+
signing {
49+
setRequired {
50+
// signing is required only if the artifacts are to be published to a maven repository
51+
gradle.taskGraph.allTasks.any { it is PublishToMavenRepository }
52+
}
53+
54+
// Don't sign the artifacts if we didn't get a key and password to use.
55+
if (project.hasProperty("signingKey") && project.hasProperty("signingPassword")) {
56+
signing {
57+
useInMemoryPgpKeys(
58+
project.properties["signingKey"].toString(),
59+
project.properties["signingPassword"].toString())
60+
sign(publishing.publications)
61+
}
62+
}
63+
}

clients/java/open-feature-provider/build.gradle.kts

Lines changed: 5 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,13 @@
11
plugins {
2-
`java-library`
3-
`maven-publish`
2+
`java-library-conventions`
3+
`publishing-conventions`
44
kotlin("jvm") version "1.9.10"
55
id("io.freefair.lombok") version "8.6"
66
}
77

8-
java {
9-
toolchain {
10-
languageVersion = JavaLanguageVersion.of(17)
11-
}
12-
}
13-
14-
kotlin {
15-
jvmToolchain(17)
16-
}
8+
group = "${rootProject.group}.openfeature"
9+
extra["displayName"] = "Superposition Openfeature Provider"
10+
description = "Openfeature provider implementation for Superposition."
1711

1812
dependencies {
1913
implementation(project(":bindings"))
@@ -43,13 +37,3 @@ tasks.test {
4337
showStandardStreams = true
4438
}
4539
}
46-
47-
publishing {
48-
publications {
49-
create<MavenPublication>("maven") {
50-
groupId = "${rootProject.group}.openfeature"
51-
artifactId = "superposition-provider"
52-
from(components["java"])
53-
}
54-
}
55-
}

clients/java/sdk/build.gradle.kts

Lines changed: 4 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,13 @@
11
plugins {
2-
`java-library`
3-
`maven-publish`
2+
`java-library-conventions`
3+
`publishing-conventions`
44
}
55

6-
java {
7-
toolchain {
8-
languageVersion = JavaLanguageVersion.of(17)
9-
}
10-
}
6+
extra["displayName"] = "Superposition SDK"
7+
description = "Java SDK for Superposition."
118

129
dependencies {
1310
implementation("software.amazon.smithy.java:client-core:0.0.1")
1411
implementation("software.amazon.smithy:smithy-aws-traits:1.55.0")
1512
implementation("software.amazon.smithy.java:aws-client-restjson:0.0.1")
1613
}
17-
18-
publishing {
19-
publications {
20-
create<MavenPublication>("maven") {
21-
from(components["java"])
22-
}
23-
}
24-
}

0 commit comments

Comments
 (0)