Skip to content

Commit c698fcf

Browse files
authored
chore: migrate to Maven Central for publishing (#124)
use JReleaser to upload to Maven central portal
1 parent c2c4431 commit c698fcf

File tree

3 files changed

+83
-49
lines changed

3 files changed

+83
-49
lines changed

.github/workflows/publish-sdk.yml

Lines changed: 22 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -5,32 +5,43 @@ on:
55
types: [published]
66

77
env:
8-
ORG_GRADLE_PROJECT_ossrhUsername: ${{ secrets.OSSRH_USERNAME }}
9-
ORG_GRADLE_PROJECT_ossrhPassword: ${{ secrets.OSSRH_PASSWORD }}
108
CI: true
119

1210
jobs:
1311
publish:
1412
runs-on: ubuntu-latest
13+
env:
14+
JRELEASER_MAVENCENTRAL_USERNAME: ${{ secrets.MAVEN_CENTRAL_TOKEN_USERNAME }}
15+
JRELEASER_MAVENCENTRAL_PASSWORD: ${{ secrets.MAVEN_CENTRAL_TOKEN_PASSWORD }}
16+
JRELEASER_NEXUS2_SNAPSHOT_DEPLOY_USERNAME: ${{ secrets.MAVEN_CENTRAL_TOKEN_USERNAME }}
17+
JRELEASER_NEXUS2_SNAPSHOT_DEPLOY_TOKEN: ${{ secrets.MAVEN_CENTRAL_TOKEN_PASSWORD }}
18+
JRELEASER_GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }}
19+
JRELEASER_GPG_PUBLIC_KEY: ${{ secrets.GPG_PUBLIC_KEY }}
20+
JRELEASER_GPG_SECRET_KEY: ${{ secrets.GPG_PRIVATE_KEY }}
21+
JRELEASER_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
22+
1523
steps:
1624
- uses: actions/checkout@v4
1725
with:
1826
fetch-depth: 0
1927

20-
- name: Set up Maven Central Repository
28+
- name: Set up JDK 8
2129
uses: actions/setup-java@v4
2230
with:
2331
java-version: '8'
2432
distribution: 'temurin'
25-
server-id: ossrh
26-
gpg-private-key: ${{ secrets.GPG_PRIVATE_KEY }}
27-
gpg-passphrase: ${{ secrets.GPG_PASSPHRASE }}
2833

2934
- name: Download test data
3035
run: make test-data
3136

32-
- name: Publish to Maven Central
33-
run: ./gradlew check publish -Prelease --no-daemon
34-
env:
35-
GPG_PRIVATE_KEY: ${{ secrets.GPG_PRIVATE_KEY }}
36-
GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }}
37+
- name: Test
38+
run: ./gradlew check
39+
40+
- name: Verify JReleaser
41+
run: ./gradlew jreleaserConfig --stacktrace
42+
43+
- name: Stage artifacts
44+
run: ./gradlew clean publish -Prelease
45+
46+
- name: Deploy to Maven Central
47+
run: ./gradlew jreleaserDeploy

.github/workflows/publish-snapshot.yml

Lines changed: 22 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,21 @@ on:
55
branches: [main]
66

77
env:
8-
ORG_GRADLE_PROJECT_ossrhUsername: ${{ secrets.OSSRH_USERNAME }}
9-
ORG_GRADLE_PROJECT_ossrhPassword: ${{ secrets.OSSRH_PASSWORD }}
108
CI: true
119

1210
jobs:
1311
publish-snapshot:
1412
runs-on: ubuntu-latest
13+
env:
14+
JRELEASER_MAVENCENTRAL_USERNAME: ${{ secrets.MAVEN_CENTRAL_TOKEN_USERNAME }}
15+
JRELEASER_MAVENCENTRAL_PASSWORD: ${{ secrets.MAVEN_CENTRAL_TOKEN_PASSWORD }}
16+
JRELEASER_NEXUS2_SNAPSHOT_DEPLOY_USERNAME: ${{ secrets.MAVEN_CENTRAL_TOKEN_USERNAME }}
17+
JRELEASER_NEXUS2_SNAPSHOT_DEPLOY_TOKEN: ${{ secrets.MAVEN_CENTRAL_TOKEN_PASSWORD }}
18+
JRELEASER_GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }}
19+
JRELEASER_GPG_PUBLIC_KEY: ${{ secrets.GPG_PUBLIC_KEY }}
20+
JRELEASER_GPG_SECRET_KEY: ${{ secrets.GPG_PRIVATE_KEY }}
21+
JRELEASER_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
22+
1523
steps:
1624
- uses: actions/checkout@v4
1725
with:
@@ -21,15 +29,19 @@ jobs:
2129
uses: actions/setup-java@v4
2230
with:
2331
java-version: '8'
24-
distribution: 'adopt'
25-
gpg-private-key: ${{ secrets.GPG_PRIVATE_KEY }}
26-
gpg-passphrase: ${{ secrets.GPG_PASSPHRASE }}
32+
distribution: 'temurin'
2733

2834
- name: Download test data
2935
run: make test-data
3036

31-
- name: Publish Snapshot artifact
32-
run: ./gradlew check publish -Psnapshot --no-daemon
33-
env:
34-
GPG_PRIVATE_KEY: ${{ secrets.GPG_PRIVATE_KEY }}
35-
GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }}
37+
- name: Test
38+
run: ./gradlew check
39+
40+
- name: Verify JReleaser
41+
run: ./gradlew jreleaserConfig
42+
43+
- name: Stage artifacts
44+
run: ./gradlew clean publish -Psnapshot
45+
46+
- name: Deploy to Maven Central
47+
run: ./gradlew jreleaserDeploy

build.gradle

Lines changed: 39 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
plugins {
22
id 'java-library'
33
id 'maven-publish'
4-
id 'signing'
4+
id 'org.jreleaser' version '1.18.0'
55
id "com.diffplug.spotless" version "6.13.0"
66
}
77

88
group = 'cloud.eppo'
9-
version = '3.11.0'
9+
version = '3.11.1'
1010
ext.isReleaseVersion = !version.endsWith("SNAPSHOT")
1111

1212
java {
@@ -71,8 +71,10 @@ tasks.register('testJar', Jar) {
7171

7272
publishing {
7373
publications {
74-
mavenJava(MavenPublication) {
74+
maven(MavenPublication) {
75+
groupId = 'cloud.eppo'
7576
artifactId = 'sdk-common-jvm'
77+
7678
from components.java
7779
artifact testJar // Include the test-jar in the published artifacts
7880
versionMapping {
@@ -100,21 +102,46 @@ publishing {
100102
}
101103
}
102104
scm {
103-
connection = 'scm:git:git://example.com/my-library.git'
104-
developerConnection = 'scm:git:ssh://example.com/my-library.git'
105-
url = 'http://example.com/my-library/'
105+
connection = 'scm:git:git://github.com/Eppo-exp/sdk-common-jvm.git'
106+
developerConnection = 'scm:git:ssh://github.com/Eppo-exp/sdk-common-jvm.git'
107+
url = 'https://github.com/Eppo-exp/sdk-common-jvm'
106108
}
107109
}
108110
}
109111
}
110112
repositories {
111113
maven {
112-
def releasesRepoUrl = "https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/"
113-
def snapshotsRepoUrl = "https://s01.oss.sonatype.org/content/repositories/snapshots/"
114-
url = version.endsWith('SNAPSHOT') ? snapshotsRepoUrl : releasesRepoUrl
115-
credentials {
116-
username = project.properties.containsKey("ossrhUsername") ? project.properties["ossrhUsername"] : ""
117-
password = project.properties.containsKey("ossrhPassword") ? project.properties["ossrhPassword"] : ""
114+
url = layout.buildDirectory.dir('staging-deploy')
115+
}
116+
}
117+
}
118+
119+
jreleaser {
120+
signing {
121+
active = 'ALWAYS'
122+
armored = true
123+
verify = false
124+
}
125+
deploy {
126+
maven {
127+
mavenCentral {
128+
'release-deploy' {
129+
active = 'RELEASE'
130+
url = 'https://central.sonatype.com/api/v1/publisher'
131+
stagingRepository('build/staging-deploy')
132+
}
133+
}
134+
nexus2 {
135+
'snapshot-deploy' {
136+
active = 'SNAPSHOT'
137+
snapshotUrl = 'https://central.sonatype.com/repository/maven-snapshots'
138+
url = 'https://central.sonatype.com/repository/maven-snapshots'
139+
applyMavenCentralRules = true
140+
snapshotSupported = true
141+
closeRepository = true
142+
releaseRepository = true
143+
stagingRepository('build/staging-deploy')
144+
}
118145
}
119146
}
120147
}
@@ -142,22 +169,6 @@ tasks.named('publish').configure {
142169
dependsOn checkVersion
143170
}
144171

145-
// Conditionally enable or disable publishing tasks
146-
tasks.withType(PublishToMavenRepository).configureEach {
147-
onlyIf {
148-
project.ext.has('shouldPublish') && project.ext.shouldPublish
149-
}
150-
}
151-
152-
if (!project.gradle.startParameter.taskNames.contains('publishToMavenLocal')) {
153-
signing {
154-
sign publishing.publications.mavenJava
155-
if (System.env['CI']) {
156-
useInMemoryPgpKeys(System.env.GPG_PRIVATE_KEY, System.env.GPG_PASSPHRASE)
157-
}
158-
}
159-
}
160-
161172
javadoc {
162173
failOnError = false
163174
options.addStringOption('Xdoclint:none', '-quiet')

0 commit comments

Comments
 (0)