Skip to content

Commit c41c750

Browse files
feeblefakiebrfrn169jnmt
authored
Backport to branch(3) : Use JReleaser to release artifacts in Maven Central (#2859)
Co-authored-by: Toshihiro Suzuki <[email protected]> Co-authored-by: Jun Nemoto <[email protected]>
1 parent 2cea9a6 commit c41c750

File tree

7 files changed

+95
-83
lines changed

7 files changed

+95
-83
lines changed

.github/workflows/release-snapshot.yaml

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -30,16 +30,28 @@ jobs:
3030
VERSION=$(./gradlew :core:properties -q | grep "version:" | awk '{print $2}')
3131
echo "version=${VERSION}" >> $GITHUB_OUTPUT
3232
33-
- name: Upload SNAPSHOT versions for scalardb, scalardb-schema-loader, scalardb-data-loader-core, and scalardb-integration-test to Maven Snapshot Repository
33+
- name: Prepare SNAPSHOT versions of artifacts in staging-deploy directories
3434
if: contains(steps.version.outputs.version, '-SNAPSHOT')
35-
run: |
36-
echo "${{secrets.SIGNING_SECRET_KEY_RING}}" | base64 -d > ~/.gradle/secring.gpg
37-
./gradlew publish \
38-
-Psigning.keyId="${{ secrets.SIGNING_KEY_ID }}" \
39-
-P'signing.password'="${{ secrets.SIGNING_PASSWORD }}" \
40-
-Psigning.secretKeyRingFile="$(echo ~/.gradle/secring.gpg)" \
41-
-PossrhUsername="${{ secrets.OSSRH_USERNAMAE }}" \
42-
-PossrhPassword="${{ secrets.OSSRH_PASSWORD }}"
35+
run: ./gradlew publish
36+
37+
- name: Upload SNAPSHOT versions of artifacts to Maven Snapshot repository
38+
if: contains(steps.version.outputs.version, '-SNAPSHOT')
39+
env:
40+
JRELEASER_NEXUS2_USERNAME: ${{ secrets.MAVEN_CENTRAL_USERNAME }}
41+
JRELEASER_NEXUS2_PASSWORD: ${{ secrets.MAVEN_CENTRAL_PASSWORD }}
42+
JRELEASER_GPG_PASSPHRASE: ${{ secrets.MAVEN_CENTRAL_GPG_PASSPHRASE }}
43+
JRELEASER_GPG_PUBLIC_KEY: ${{ secrets.MAVEN_CENTRAL_GPG_PUBLIC_KEY }}
44+
JRELEASER_GPG_SECRET_KEY: ${{ secrets.MAVEN_CENTRAL_GPG_SECRET_KEY }}
45+
run: ./gradlew jreleaserDeploy
46+
47+
- name: Upload JReleaser outputs
48+
if: always()
49+
uses: actions/upload-artifact@v4
50+
with:
51+
name: jreleaser-release
52+
path: |
53+
build/jreleaser/trace.log
54+
build/jreleaser/output.properties
4355
4456
- name: Login to GitHub Container Registry
4557
uses: docker/login-action@v3

.github/workflows/upload-artifacts.yaml

Lines changed: 21 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,27 @@ jobs:
4343
- name: Setup Gradle
4444
uses: gradle/actions/setup-gradle@v4
4545

46+
- name: Prepare artifacts in staging-deploy directories
47+
run: ./gradlew publish
48+
49+
- name: Upload artifacts to Maven Central Repository
50+
env:
51+
JRELEASER_MAVENCENTRAL_USERNAME: ${{ secrets.MAVEN_CENTRAL_USERNAME }}
52+
JRELEASER_MAVENCENTRAL_PASSWORD: ${{ secrets.MAVEN_CENTRAL_PASSWORD }}
53+
JRELEASER_GPG_PASSPHRASE: ${{ secrets.MAVEN_CENTRAL_GPG_PASSPHRASE }}
54+
JRELEASER_GPG_PUBLIC_KEY: ${{ secrets.MAVEN_CENTRAL_GPG_PUBLIC_KEY }}
55+
JRELEASER_GPG_SECRET_KEY: ${{ secrets.MAVEN_CENTRAL_GPG_SECRET_KEY }}
56+
run: ./gradlew jreleaserDeploy
57+
58+
- name: Upload JReleaser outputs
59+
if: always()
60+
uses: actions/upload-artifact@v4
61+
with:
62+
name: jreleaser-release
63+
path: |
64+
build/jreleaser/trace.log
65+
build/jreleaser/output.properties
66+
4667
- name: Login to GitHub Container Registry
4768
uses: docker/login-action@v3
4869
with:
@@ -57,13 +78,3 @@ jobs:
5778
run: |
5879
docker push ghcr.io/scalar-labs/scalardb-schema-loader:${{ steps.version.outputs.version }}
5980
docker push ghcr.io/scalar-labs/scalardb-data-loader-cli:${{ steps.version.outputs.version }}
60-
61-
- name: Upload scalardb, scalardb-schema-loader, scalardb-data-loader-core, and scalardb-integration-test to Maven Central Repository
62-
run: |
63-
echo "${{secrets.SIGNING_SECRET_KEY_RING}}" | base64 -d > ~/.gradle/secring.gpg
64-
./gradlew publish \
65-
-Psigning.keyId="${{ secrets.SIGNING_KEY_ID }}" \
66-
-P'signing.password'="${{ secrets.SIGNING_PASSWORD }}" \
67-
-Psigning.secretKeyRingFile="$(echo ~/.gradle/secring.gpg)" \
68-
-PossrhUsername="${{ secrets.OSSRH_USERNAMAE }}" \
69-
-PossrhPassword="${{ secrets.OSSRH_PASSWORD }}"

build.gradle

Lines changed: 49 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,16 @@
1-
buildscript {
2-
repositories {
3-
maven {
4-
url 'https://plugins.gradle.org/m2/'
5-
}
6-
}
7-
dependencies {
8-
classpath 'com.diffplug.spotless:spotless-plugin-gradle:6.13.0'
9-
}
1+
plugins {
2+
id "com.diffplug.spotless" version "6.13.0"
3+
id "org.jreleaser" version "1.19.0"
4+
}
5+
6+
ext {
7+
projectGroup = 'com.scalar-labs'
8+
projectVersion = '3.17.0-SNAPSHOT'
109
}
1110

11+
group = projectGroup
12+
version = projectVersion
13+
1214
subprojects {
1315
apply plugin: 'java'
1416
apply plugin: 'eclipse'
@@ -18,7 +20,7 @@ subprojects {
1820
apply plugin: 'com.diffplug.spotless'
1921
apply plugin: 'com.scalar.db.jdk-configuration'
2022

21-
project.version = '3.17.0-SNAPSHOT'
23+
project.version = projectVersion
2224

2325
ext {
2426
guiceVersion = '5.1.0'
@@ -35,7 +37,7 @@ subprojects {
3537
sqlserverDriverVersion = '12.8.1.jre8'
3638
sqliteDriverVersion = '3.50.2.0'
3739
yugabyteDriverVersion = '42.7.3-yb-4'
38-
db2DriverVersion= '12.1.2.0'
40+
db2DriverVersion = '12.1.2.0'
3941
mariadDbDriverVersion = '3.5.4'
4042
picocliVersion = '4.7.7'
4143
commonsTextVersion = '1.13.1'
@@ -66,7 +68,7 @@ subprojects {
6668
testLogging.showStandardStreams = true
6769
}
6870

69-
group = "com.scalar-labs"
71+
group = projectGroup
7072

7173
java {
7274
withJavadocJar()
@@ -92,3 +94,38 @@ subprojects {
9294
}
9395
}
9496

97+
jreleaser {
98+
gitRootSearch = true
99+
100+
signing {
101+
active = 'ALWAYS'
102+
armored = true
103+
}
104+
105+
deploy {
106+
maven {
107+
def stagingRepositories = ['core/build/staging-deploy',
108+
'integration-test/build/staging-deploy',
109+
'schema-loader/build/staging-deploy',
110+
'data-loader/core/build/staging-deploy']
111+
mavenCentral {
112+
sonatype {
113+
active = 'RELEASE'
114+
url = 'https://central.sonatype.com/api/v1/publisher'
115+
stagingRepositories.each { stagingRepository(it) }
116+
}
117+
}
118+
nexus2 {
119+
'snapshot-deploy' {
120+
active = 'SNAPSHOT'
121+
snapshotUrl = 'https://central.sonatype.com/repository/maven-snapshots/'
122+
applyMavenCentralRules = true
123+
snapshotSupported = true
124+
closeRepository = true
125+
releaseRepository = true
126+
stagingRepositories.each { stagingRepository(it) }
127+
}
128+
}
129+
}
130+
}
131+
}

core/build.gradle

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ plugins {
22
id 'com.github.spotbugs-base' version "${spotbugsPluginVersion}"
33
id 'net.ltgt.errorprone' version "${errorpronePluginVersion}"
44
id 'maven-publish'
5-
id 'signing'
65
id 'base'
76
}
87

@@ -353,18 +352,7 @@ publishing {
353352
}
354353
repositories {
355354
maven {
356-
def releasesRepoUrl = "https://oss.sonatype.org/service/local/staging/deploy/maven2"
357-
def snapshotsRepoUrl = "https://oss.sonatype.org/content/repositories/snapshots"
358-
url = version.endsWith('SNAPSHOT') ? snapshotsRepoUrl : releasesRepoUrl
359-
credentials {
360-
username = project.properties['ossrhUsername'] ?: ""
361-
password = project.properties['ossrhPassword'] ?: ""
362-
}
355+
url = layout.buildDirectory.dir('staging-deploy')
363356
}
364357
}
365358
}
366-
367-
signing {
368-
required { project.gradle.taskGraph.hasTask("publish") }
369-
sign publishing.publications.mavenJava
370-
}

data-loader/core/build.gradle

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ plugins {
33
id 'com.github.johnrengelman.shadow' version "${shadowPluginVersion}"
44
id 'com.github.spotbugs' version "${spotbugsPluginVersion}"
55
id 'maven-publish'
6-
id 'signing'
76
id 'base'
87
}
98

@@ -89,18 +88,7 @@ publishing {
8988
}
9089
repositories {
9190
maven {
92-
def releasesRepoUrl = "https://oss.sonatype.org/service/local/staging/deploy/maven2"
93-
def snapshotsRepoUrl = "https://oss.sonatype.org/content/repositories/snapshots"
94-
url = version.endsWith('SNAPSHOT') ? snapshotsRepoUrl : releasesRepoUrl
95-
credentials {
96-
username = project.properties['ossrhUsername'] ?: ""
97-
password = project.properties['ossrhPassword'] ?: ""
98-
}
91+
url = layout.buildDirectory.dir('staging-deploy')
9992
}
10093
}
10194
}
102-
103-
signing {
104-
required { project.gradle.taskGraph.hasTask("publish") }
105-
sign publishing.publications.mavenJava
106-
}

integration-test/build.gradle

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ plugins {
22
id 'com.github.spotbugs' version "${spotbugsPluginVersion}"
33
id 'net.ltgt.errorprone' version "${errorpronePluginVersion}"
44
id 'maven-publish'
5-
id 'signing'
65
id 'base'
76
}
87

@@ -100,18 +99,7 @@ publishing {
10099
}
101100
repositories {
102101
maven {
103-
def releasesRepoUrl = "https://oss.sonatype.org/service/local/staging/deploy/maven2"
104-
def snapshotsRepoUrl = "https://oss.sonatype.org/content/repositories/snapshots"
105-
url = version.endsWith('SNAPSHOT') ? snapshotsRepoUrl : releasesRepoUrl
106-
credentials {
107-
username = project.properties['ossrhUsername'] ?: ""
108-
password = project.properties['ossrhPassword'] ?: ""
109-
}
102+
url = layout.buildDirectory.dir('staging-deploy')
110103
}
111104
}
112105
}
113-
114-
signing {
115-
required { project.gradle.taskGraph.hasTask("publish") }
116-
sign publishing.publications.mavenJava
117-
}

schema-loader/build.gradle

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ plugins {
33
id 'com.github.johnrengelman.shadow' version "${shadowPluginVersion}"
44
id 'com.github.spotbugs' version "${spotbugsPluginVersion}"
55
id 'maven-publish'
6-
id 'signing'
76
id 'base'
87
}
98

@@ -135,18 +134,7 @@ publishing {
135134
}
136135
repositories {
137136
maven {
138-
def releasesRepoUrl = "https://oss.sonatype.org/service/local/staging/deploy/maven2"
139-
def snapshotsRepoUrl = "https://oss.sonatype.org/content/repositories/snapshots"
140-
url = version.endsWith('SNAPSHOT') ? snapshotsRepoUrl : releasesRepoUrl
141-
credentials {
142-
username = project.properties['ossrhUsername'] ?: ""
143-
password = project.properties['ossrhPassword'] ?: ""
144-
}
137+
url = layout.buildDirectory.dir('staging-deploy')
145138
}
146139
}
147140
}
148-
149-
signing {
150-
required { project.gradle.taskGraph.hasTask("publish") }
151-
sign publishing.publications.mavenJava
152-
}

0 commit comments

Comments
 (0)