Skip to content

Commit d031f07

Browse files
committed
switch to central portal and sign in CI
1 parent 68703a3 commit d031f07

File tree

3 files changed

+77
-22
lines changed

3 files changed

+77
-22
lines changed

.github/workflows/gradle.yml

Lines changed: 20 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -9,23 +9,25 @@ on:
99

1010
jobs:
1111
build:
12-
1312
runs-on: ubuntu-latest
14-
13+
environment: sonatype-central
1514
steps:
16-
- uses: actions/checkout@v4
17-
with:
18-
submodules: recursive
19-
- name: Set up JDK
20-
uses: actions/setup-java@v3
21-
with:
22-
java-version: '11'
23-
distribution: 'temurin'
24-
cache: gradle
25-
- name: Setup Gradle
26-
uses: gradle/actions/setup-gradle@v3
27-
- name: Build
28-
run: ./gradlew --no-configuration-cache --no-parallel mavenCentralDeploy "-PsonatypeUsername=$SONATYPE_USERNAME" "-PsonatypePassword=$SONATYPE_PASSWORD"
29-
env:
30-
SONATYPE_USERNAME: ${{ secrets.SONATYPE_USERNAME }}
31-
SONATYPE_PASSWORD: ${{ secrets.SONATYPE_PASSWORD }}
15+
- uses: actions/checkout@v4
16+
with:
17+
submodules: recursive
18+
- name: Set up JDK
19+
uses: actions/setup-java@v3
20+
with:
21+
java-version: '11'
22+
distribution: 'temurin'
23+
cache: gradle
24+
- name: Setup Gradle
25+
uses: gradle/actions/setup-gradle@v3
26+
- name: Build
27+
run: ./gradlew --no-configuration-cache --no-parallel mavenCentralDeploy
28+
env:
29+
SIGNING_KEY: ${{ secrets.SIGNING_KEY }}
30+
ORG_GRADLE_PROJECT_mavenCentralSnapshotsUsername: ${{ secrets.SONATYPE_USERNAME }}
31+
ORG_GRADLE_PROJECT_mavenCentralSnapshotsPassword: ${{ secrets.SONATYPE_PASSWORD }}
32+
MAVEN_CENTRAL_PORTAL_USERNAME: ${{ secrets.SONATYPE_USERNAME }}
33+
MAVEN_CENTRAL_PORTAL_PASSWORD: ${{ secrets.SONATYPE_PASSWORD }}

conventions/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ repositories {
99

1010
dependencies {
1111
api(plugin("tel.schich.dockcross", version = "0.2.3"))
12+
implementation("io.github.zenhelix.maven-central-publish:io.github.zenhelix.maven-central-publish.gradle.plugin:0.8.0")
1213
}
1314

1415
fun plugin(id: String, version: String) = "$id:$id.gradle.plugin:$version"

conventions/src/main/kotlin/tel.schich.javacan.convention.published.gradle.kts

Lines changed: 56 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
1+
import io.github.zenhelix.gradle.plugin.extension.PublishingType
2+
13
plugins {
24
id("tel.schich.javacan.convention.base")
35
signing
46
`maven-publish`
7+
id("io.github.zenhelix.maven-central-publish")
58
}
69

710
val ci = System.getenv("CI") != null
@@ -11,7 +14,40 @@ java {
1114
withJavadocJar()
1215
}
1316

17+
private fun Project.getSecret(name: String): Provider<String> = provider {
18+
val env = System.getenv(name)
19+
?.ifBlank { null }
20+
if (env != null) {
21+
return@provider env
22+
}
23+
24+
val propName = name.split("_")
25+
.map { it.lowercase() }
26+
.joinToString(separator = "") { word ->
27+
word.replaceFirstChar { it.uppercase() }
28+
}
29+
.replaceFirstChar { it.lowercase() }
30+
31+
property(propName) as String
32+
}
33+
34+
mavenCentralPortal {
35+
credentials {
36+
username = project.getSecret("MAVEN_CENTRAL_PORTAL_USERNAME")
37+
password = project.getSecret("MAVEN_CENTRAL_PORTAL_PASSWORD")
38+
}
39+
publishingType = PublishingType.AUTOMATIC
40+
}
41+
1442
publishing {
43+
repositories {
44+
maven {
45+
name = "mavenCentralSnapshots"
46+
url = uri("https://central.sonatype.com/repository/maven-snapshots/")
47+
credentials(PasswordCredentials::class)
48+
}
49+
}
50+
1551
publications {
1652
register<MavenPublication>("maven") {
1753
artifactId = "javacan-${project.name}"
@@ -44,9 +80,25 @@ publishing {
4480
}
4581
}
4682

47-
if (!ci) {
48-
signing {
49-
useGpgCmd()
50-
sign(publishing.publications)
83+
private val signingKey = System.getenv("SIGNING_KEY")?.ifBlank { null }?.trim()
84+
private val signingKeyPassword = System.getenv("SIGNING_KEY_PASSWORD")?.ifBlank { null }?.trim() ?: ""
85+
86+
when {
87+
signingKey != null -> {
88+
logger.lifecycle("Received a signing key, using in-memory pgp keys!")
89+
signing {
90+
useInMemoryPgpKeys(signingKey, signingKeyPassword)
91+
sign(publishing.publications)
92+
}
93+
}
94+
!ci -> {
95+
logger.lifecycle("Not running in CI, using the gpg command!")
96+
signing {
97+
useGpgCmd()
98+
sign(publishing.publications)
99+
}
100+
}
101+
else -> {
102+
logger.lifecycle("Not signing artifacts!")
51103
}
52104
}

0 commit comments

Comments
 (0)