Skip to content

Commit 852b267

Browse files
authored
chore(package): publish to central portal setup (#87)
Description Modify build gradle setup to include the jreleaser plugin for publishing this package to Central Portal. Also update our publish workflow. I have also added new secrets for the newly updated publish workflow. New secrets: GPG_PASSPHRASE GPG_PRIVATE_KEY GPG_PUBLIC_KEY MAVEN_CENTRAL_PORTAL_PASSWORD MAVEN_CENTRAL_PORTAL_USERNAME New Vars: MAVEN_CENTRAL_STAGE Links ENSC-2072
1 parent 27cdbbc commit 852b267

4 files changed

Lines changed: 76 additions & 59 deletions

File tree

.github/workflows/publish.yml

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,15 @@ jobs:
99
name: Deploy to package index
1010
runs-on: ubuntu-24.04
1111
env:
12-
MAVEN_SNAPSHOTS_URL: ${{ vars.OSSRH_SNAPSHOT_URL }}
13-
MAVEN_RELEASES_URL: ${{ vars.OSSRH_RELEASE_URL }}
14-
MAVEN_USERNAME: ${{ secrets.OSSRH_USERNAME }}
15-
MAVEN_PASSWORD: ${{ secrets.OSSRH_PASSWORD }}
12+
JRELEASER_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
13+
JRELEASER_MAVENCENTRAL_USERNAME: ${{ secrets.MAVEN_CENTRAL_PORTAL_USERNAME }}
14+
JRELEASER_MAVENCENTRAL_PASSWORD: ${{ secrets.MAVEN_CENTRAL_PORTAL_PASSWORD }}
15+
JRELEASER_NEXUS2_USERNAME: ${{ secrets.MAVEN_CENTRAL_PORTAL_USERNAME }}
16+
JRELEASER_NEXUS2_PASSWORD: ${{ secrets.MAVEN_CENTRAL_PORTAL_PASSWORD }}
17+
JRELEASER_GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }}
18+
JRELEASER_GPG_SECRET_KEY: ${{ secrets.GPG_PRIVATE_KEY }}
19+
JRELEASER_GPG_PUBLIC_KEY: ${{ secrets.GPG_PUBLIC_KEY }}
20+
JRELEASER_MAVENCENTRAL_STAGE: ${{ vars.MAVEN_CENTRAL_STAGE }} # Default is "FULL" https://jreleaser.org/guide/latest/reference/deploy/maven/maven-central.html#_staged_deployments
1621

1722
steps:
1823
- name: Checkout repository
@@ -24,14 +29,15 @@ jobs:
2429
distribution: zulu
2530
java-version: "8"
2631

27-
- name: Decode signing key ring
28-
run: |
29-
mkdir -p ~/.gradle
30-
echo "${{secrets.SIGNING_SECRET_KEY_RING_FILE}}" > ~/.gradle/secring.gpg.b64
31-
base64 -d ~/.gradle/secring.gpg.b64 > ~/.gradle/secring.gpg
32+
- name: Verify JReleaser configuration
33+
run: ./gradlew jreleaserConfig
3234

3335
- name: Clean build directory
3436
run: ./gradlew clean
3537

36-
- name: Publish
37-
run: ./gradlew publish -Psigning.keyId=${{secrets.SIGNING_KEY_ID}} -Psigning.password=${{secrets.SIGNING_KEY_PASSWORD}} -Psigning.secretKeyRingFile=$(echo ~/.gradle/secring.gpg) --info --console plain
38+
- name: Publish (Stage to local directory)
39+
run: ./gradlew publish
40+
41+
- name: Deploy and release
42+
run: ./gradlew jreleaserFullRelease --stacktrace
43+

README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ repositories {
3737
}
3838
3939
dependencies {
40-
implementation "com.factset.sdk.eventdriven:factsettrading:2.0.0-SNAPSHOT"
40+
implementation "com.factset.sdk.eventdriven:factsettrading:2.0.0"
4141
}
4242
```
4343

@@ -52,7 +52,7 @@ To be able to install snapshot releases of the sdk an additional repository must
5252
<repository>
5353
<id>sonatype</id>
5454
<name>sonatype-snapshot</name>
55-
<url>https://oss.sonatype.org/content/repositories/snapshots/</url>
55+
<url>https://central.sonatype.com/repository/maven-snapshots/</url>
5656
<snapshots>
5757
<enabled>true</enabled>
5858
</snapshots>
@@ -69,7 +69,7 @@ To be able to install snapshot releases of the sdk an additional repository must
6969
repositories {
7070
mavenCentral()
7171
maven {
72-
url = uri("https://oss.sonatype.org/content/repositories/snapshots/")
72+
url = uri("https://central.sonatype.com/repository/maven-snapshots/")
7373
mavenContent {
7474
snapshotsOnly()
7575
}

build.gradle.kts

Lines changed: 55 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
1+
import java.time.LocalDate
2+
13
plugins {
24
java
35
`maven-publish`
46
signing
7+
id("org.jreleaser") version "1.17.0"
58
}
69

710
group = "com.factset.sdk.eventdriven"
@@ -57,12 +60,13 @@ tasks.jar {
5760
}
5861
}
5962

60-
// https://docs.gradle.org/current/userguide/publishing_maven.html
61-
publishing {
62-
publications {
63-
create<MavenPublication>("mavenJava") {
63+
val releasesRepoUrl = layout.buildDirectory.dir("repos/releases")
64+
val snapshotsRepoUrl = layout.buildDirectory.dir("repos/snapshots")
6465

65-
// dependencies
66+
// Configure publishing
67+
configure<PublishingExtension> {
68+
publications {
69+
register<MavenPublication>("maven") {
6670
from(components["java"])
6771

6872
versionMapping {
@@ -77,22 +81,20 @@ publishing {
7781
pom {
7882
name.set("FactSet Trading event-driven client library for Java")
7983
description.set("Event-driven api client for the FactSet Trading API")
80-
url.set("https://github.com/factset/enterprise-sdk-eventdriven-factsettrading-java")
84+
url.set("https://github.com/factset/enterprise-sdk-eventdriven-factsettrading-java/")
8185
licenses {
8286
license {
8387
name.set("The Apache License, Version 2.0'")
8488
url.set("http://www.apache.org/licenses/LICENSE-2.0.txt")
8589
}
8690
}
87-
8891
developers {
8992
developer {
9093
id.set("enterprisesdk")
9194
organization.set("FactSet")
9295
organizationUrl.set("https://developer.factset.com")
9396
}
9497
}
95-
9698
scm {
9799
connection.set("scm:git:git://github.com/factset/enterprise-sdk-eventdriven-factsettrading-java.git")
98100
developerConnection.set("scm:git:ssh://factset/enterprise-sdk-eventdriven-factsettrading-java.git")
@@ -104,47 +106,56 @@ publishing {
104106

105107
repositories {
106108
maven {
107-
var releasesRepoUrlEnv = System.getenv("MAVEN_RELEASES_URL")
108-
var snapshotsRepoUrlEnv = System.getenv("MAVEN_SNAPSHOTS_URL")
109-
var usernameEnv = System.getenv("MAVEN_USERNAME")
110-
var passwordEnv = System.getenv("MAVEN_PASSWORD")
111-
112-
if (releasesRepoUrlEnv == null) {
113-
releasesRepoUrlEnv = ""
114-
project.logger.error("MAVEN_RELEASES_URL not set")
115-
}
116-
117-
if (snapshotsRepoUrlEnv == null) {
118-
snapshotsRepoUrlEnv = ""
119-
project.logger.error("MAVEN_SNAPSHOTS_URL not set")
120-
}
109+
// change URLs to point to your repos, e.g. http://my.org/repo
110+
url = if (version.toString().endsWith("SNAPSHOT")) uri(snapshotsRepoUrl) else uri(releasesRepoUrl)
111+
}
112+
}
113+
}
121114

122-
if (usernameEnv == null) {
123-
usernameEnv = ""
124-
project.logger.error("MAVEN_USERNAME not set")
125-
}
115+
configure<org.jreleaser.gradle.plugin.JReleaserExtension> {
116+
gitRootSearch.set(true)
117+
project {
118+
description = "Event-driven api client for the FactSet Trading API"
119+
authors = listOf("FactSet")
120+
license = "APACHE-2.0"
121+
inceptionYear = "2023"
122+
vendor = "FactSet"
123+
copyright = "Copyright (c) ${LocalDate.now().year} FactSet"
124+
}
126125

127-
if (passwordEnv == null) {
128-
passwordEnv = ""
129-
project.logger.error("MAVEN_PASSWORD not set")
130-
}
126+
signing {
127+
active.set(org.jreleaser.model.Active.ALWAYS)
128+
armored = true
129+
}
131130

132-
val releasesRepoUrl = uri(releasesRepoUrlEnv)
133-
val snapshotsRepoUrl = uri(snapshotsRepoUrlEnv)
134-
url = if (version.toString().endsWith("SNAPSHOT")) snapshotsRepoUrl else releasesRepoUrl
131+
release {
132+
github {
133+
skipTag = true
134+
skipRelease = true
135+
}
136+
}
135137

136-
credentials {
137-
username = usernameEnv
138-
password = passwordEnv
138+
deploy {
139+
maven {
140+
mavenCentral {
141+
register("release-deploy") {
142+
active.set(org.jreleaser.model.Active.RELEASE)
143+
url = "https://central.sonatype.com/api/v1/publisher"
144+
stagingRepository(releasesRepoUrl.get().asFile.path)
145+
}
139146
}
140-
141-
authentication {
142-
create<BasicAuthentication>("basic")
147+
nexus2 {
148+
register("snapshot-deploy") {
149+
active.set(org.jreleaser.model.Active.SNAPSHOT)
150+
url = "https://central.sonatype.com/repository/maven-snapshots/"
151+
snapshotUrl = "https://central.sonatype.com/repository/maven-snapshots/"
152+
applyMavenCentralRules = true
153+
snapshotSupported = true
154+
closeRepository = true
155+
releaseRepository = true
156+
stagingRepository(snapshotsRepoUrl.get().asFile.path)
157+
}
143158
}
144159
}
145160
}
146-
147-
signing {
148-
sign(publications["mavenJava"])
149-
}
150-
}
161+
}
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#Fri Apr 28 20:39:29 EDT 2023
22
distributionBase=GRADLE_USER_HOME
33
distributionPath=wrapper/dists
4-
distributionUrl=https\://services.gradle.org/distributions/gradle-8.0-bin.zip
4+
distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.2-bin.zip
55
zipStoreBase=GRADLE_USER_HOME
66
zipStorePath=wrapper/dists

0 commit comments

Comments
 (0)