Skip to content

Commit 781668d

Browse files
authored
chore: Update publishing to maven central (#3)
1 parent b010255 commit 781668d

File tree

11 files changed

+101
-60
lines changed

11 files changed

+101
-60
lines changed

.github/workflows/check-pr.yaml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,14 @@
11
name: Check PR
22
on: [pull_request]
33

4+
env:
5+
ORG_GRADLE_PROJECT_signingInMemoryKey: ${{ secrets.UTOPIA_RISE_GPG_PRIVATE_KEY_ASCII }}
6+
ORG_GRADLE_PROJECT_signingInMemoryKeyPassword: ${{ secrets.UTOPIA_RISE_GPG_KEY_PASSPHRASE }}
7+
ORG_GRADLE_PROJECT_mavenCentralUsername: ${{ secrets.UTOPIA_RISE_MAVEN_CENTRAL_PORTAL_TOKEN_USERNAME }}
8+
ORG_GRADLE_PROJECT_mavenCentralPassword: ${{ secrets.UTOPIA_RISE_MAVEN_CENTRAL_PORTAL_TOKEN_PASSWORD }}
9+
GRADLE_PUBLISH_KEY: ${{ secrets.GRADLE_PUBLISH_KEY }}
10+
GRADLE_PUBLISH_SECRET: ${{ secrets.GRADLE_PUBLISH_SECRET }}
11+
412
jobs:
513
build-and-test:
614
strategy:

.github/workflows/publish.yaml

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,13 @@ on:
44
tags:
55
- '\d+.\d+.\d+-SNAPSHOT'
66
- '\d+.\d+.\d+'
7+
env:
8+
ORG_GRADLE_PROJECT_signingInMemoryKey: ${{ secrets.UTOPIA_RISE_GPG_PRIVATE_KEY_ASCII }}
9+
ORG_GRADLE_PROJECT_signingInMemoryKeyPassword: ${{ secrets.UTOPIA_RISE_GPG_KEY_PASSPHRASE }}
10+
ORG_GRADLE_PROJECT_mavenCentralUsername: ${{ secrets.UTOPIA_RISE_MAVEN_CENTRAL_PORTAL_TOKEN_USERNAME }}
11+
ORG_GRADLE_PROJECT_mavenCentralPassword: ${{ secrets.UTOPIA_RISE_MAVEN_CENTRAL_PORTAL_TOKEN_PASSWORD }}
12+
GRADLE_PUBLISH_KEY: ${{ secrets.GRADLE_PUBLISH_KEY }}
13+
GRADLE_PUBLISH_SECRET: ${{ secrets.GRADLE_PUBLISH_SECRET }}
714

815
jobs:
916
publish:
@@ -28,11 +35,4 @@ jobs:
2835
with:
2936
arguments: publish publishPlugins -Pgradle.publish.key=$GRADLE_PUBLISH_KEY -Pgradle.publish.secret=$GRADLE_PUBLISH_SECRET
3037
wrapper-directory: kotlin-preprocessors/
31-
build-root-directory: kotlin-preprocessors/
32-
env:
33-
GODOT_KOTLIN_GPG_PRIVATE_KEY_ASCII: ${{ secrets.GODOT_KOTLIN_GPG_PRIVATE_KEY_ASCII }}
34-
GODOT_KOTLIN_GPG_KEY_PASSPHRASE: ${{ secrets.GODOT_KOTLIN_GPG_KEY_PASSPHRASE }}
35-
GODOT_KOTLIN_MAVEN_CENTRAL_TOKEN_USERNAME: ${{ secrets.GODOT_KOTLIN_MAVEN_CENTRAL_TOKEN_USERNAME }}
36-
GODOT_KOTLIN_MAVEN_CENTRAL_TOKEN_PASSWORD: ${{ secrets.GODOT_KOTLIN_MAVEN_CENTRAL_TOKEN_PASSWORD }}
37-
GRADLE_PUBLISH_KEY: ${{ secrets.GRADLE_PUBLISH_KEY }}
38-
GRADLE_PUBLISH_SECRET: ${{ secrets.GRADLE_PUBLISH_SECRET }}
38+
build-root-directory: kotlin-preprocessors/

kotlin-preprocessors/.idea/codeStyles/Project.xml

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

kotlin-preprocessors/.idea/gradle.xml

Lines changed: 5 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

kotlin-preprocessors/.idea/kotlinc.xml

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

kotlin-preprocessors/build.gradle.kts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import org.ajoberstar.grgit.Grgit
44
plugins {
55
kotlin("jvm")
66
`kotlin-dsl`
7-
id("org.ajoberstar.grgit") version "4.1.0"
7+
id("org.ajoberstar.grgit") version "5.3.2"
88
id("com.utopia-rise.maven-central-publish")
99
id("com.gradle.plugin-publish") version "1.2.0"
1010
`java-gradle-plugin`
@@ -50,7 +50,7 @@ gradlePlugin {
5050
}
5151

5252
dependencies {
53-
implementation(kotlin("gradle-plugin", version = "1.8.20"))
53+
implementation(kotlin("gradle-plugin", version = "2.2.0"))
5454
implementation(kotlin("gradle-plugin-api"))
5555

5656
implementation("com.squareup:kotlinpoet:1.12.0")

kotlin-preprocessors/buildSrc/build.gradle.kts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,5 +30,6 @@ repositories {
3030
}
3131

3232
dependencies {
33-
implementation(kotlin("gradle-plugin", version = "1.8.20"))
33+
implementation(kotlin("gradle-plugin", version = "2.0.21"))
34+
implementation("com.vanniktech:gradle-maven-publish-plugin:0.34.0")
3435
}
Lines changed: 66 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -1,58 +1,44 @@
11
package publish.mavencentral
22

3+
import com.vanniktech.maven.publish.MavenPublishBaseExtension
4+
import com.vanniktech.maven.publish.MavenPublishPlugin
35
import org.gradle.api.Plugin
46
import org.gradle.api.Project
57
import org.gradle.api.publish.PublishingExtension
68
import org.gradle.api.publish.maven.MavenPublication
7-
import org.gradle.plugins.signing.SigningExtension
9+
import org.gradle.plugins.signing.Sign
810

9-
class PublishToMavenCentralPlugin: Plugin<Project> {
11+
@Suppress("unused") // false positive
12+
class PublishToMavenCentralPlugin : Plugin<Project> {
1013
override fun apply(target: Project) {
11-
target.plugins.apply("maven-publish")
12-
target.plugins.apply("signing")
13-
target.plugins.apply("org.ajoberstar.grgit")
14+
target.plugins.apply(org.gradle.api.publish.maven.plugins.MavenPublishPlugin::class.java)
1415

1516
target.afterEvaluate {
16-
val ossrhUser = target.propOrEnv("GODOT_KOTLIN_MAVEN_CENTRAL_TOKEN_USERNAME")
17-
val ossrhPassword = target.propOrEnv("GODOT_KOTLIN_MAVEN_CENTRAL_TOKEN_PASSWORD")
18-
val signingKey = target.propOrEnv("GODOT_KOTLIN_GPG_PRIVATE_KEY_ASCII")
19-
val signingPassword = target.propOrEnv("GODOT_KOTLIN_GPG_KEY_PASSPHRASE")
17+
val mavenCentralUser = target.propOrEnv("ORG_GRADLE_PROJECT_mavenCentralUsername") ?: target.propOrEnv("mavenCentralUsername")
18+
val mavenCentralPassword = target.propOrEnv("ORG_GRADLE_PROJECT_mavenCentralPassword") ?: target.propOrEnv("mavenCentralPassword")
19+
val gpgInMemoryKey = target.propOrEnv("ORG_GRADLE_PROJECT_signingInMemoryKey") ?: target.propOrEnv("signingInMemoryKey")
20+
val gpgPassword = target.propOrEnv("ORG_GRADLE_PROJECT_signingInMemoryKeyPassword") ?: target.propOrEnv("signingInMemoryKeyPassword")
2021

21-
val releaseMode = !(target.version as String).endsWith("-SNAPSHOT")
22+
val canSign = mavenCentralUser != null && mavenCentralPassword != null && gpgInMemoryKey != null && gpgPassword != null
2223

23-
target.extensions.configure(SigningExtension::class.java) {
24-
@Suppress("UnstableApiUsage")
25-
useInMemoryPgpKeys(signingKey, signingPassword)
26-
target.extensions.findByType(PublishingExtension::class.java)?.publications?.all {
27-
sign(this)
28-
}
29-
}
30-
31-
target.extensions.configure(PublishingExtension::class.java) {
32-
repositories {
33-
maven {
34-
val targetRepo = if (releaseMode) {
35-
"https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/"
36-
} else {
37-
"https://s01.oss.sonatype.org/content/repositories/snapshots/"
38-
}
39-
setUrl(targetRepo)
40-
41-
credentials {
42-
username = ossrhUser
43-
password = ossrhPassword
44-
}
45-
}
46-
}
24+
target.extensions.getByType(PublishingExtension::class.java).apply {
4725
publications {
4826
all {
4927
if (this is MavenPublication) {
50-
pom {
51-
name.set("kotlin-preprocessors")
52-
description.set("Gradle plugin to define preprocessors for kotlin language")
28+
groupId = "com.utopia-rise"
29+
artifactId = if (artifactId.isNullOrEmpty()) target.name else artifactId
30+
version = target.version as String
5331

32+
pom {
5433
url.set("https://github.com/utopia-rise/kotlin-preprocessors.git")
5534

35+
if (name.getOrElse("").isNullOrEmpty()) {
36+
name.set(target.name)
37+
}
38+
if (description.getOrElse("").isNullOrEmpty()) {
39+
description.set(target.description ?: "Godot kotlin jvm module")
40+
}
41+
5642
scm {
5743
connection.set("scm:git:https://github.com/utopia-rise/kotlin-preprocessors")
5844
developerConnection.set("scm:git:github.com:utopia-rise/kotlin-preprocessors.git")
@@ -69,26 +55,64 @@ class PublishToMavenCentralPlugin: Plugin<Project> {
6955
}
7056

7157
developers {
58+
developer {
59+
id.set("core")
60+
name.set("Ranie Jade Ramiso")
61+
url.set("https://github.com/raniejade")
62+
email.set("raniejaderamiso@gmail.com")
63+
}
7264
developer {
7365
id.set("core")
7466
name.set("Pierre-Thomas Meisels")
7567
url.set("https://github.com/piiertho")
7668
email.set("meisels27@yahoo.fr")
7769
}
70+
developer {
71+
id.set("core")
72+
name.set("Cedric Hippmann")
73+
url.set("https://github.com/chippmann")
74+
email.set("cedric.hippmann@hotmail.com")
75+
}
76+
developer {
77+
id.set("core")
78+
name.set("Tristan Grespinet")
79+
url.set("https://github.com/CedNaru")
80+
email.set("ced.naru@gmail.com")
81+
}
7882
}
7983
}
8084
}
8185
}
8286
}
8387
}
88+
89+
90+
if (canSign) {
91+
logger.info("Will sign artifact for project \"${name}\" and setup publishing")
92+
93+
pluginManager.apply(MavenPublishPlugin::class.java)
94+
extensions.getByType(MavenPublishBaseExtension::class.java).apply {
95+
publishToMavenCentral()
96+
signAllPublications()
97+
}
98+
99+
target.afterEvaluate {
100+
target
101+
.tasks
102+
.filter { task -> task.name.startsWith("publish") }
103+
.forEach { task ->
104+
task.dependsOn(target.tasks.withType(Sign::class.java))
105+
}
106+
}
107+
} else {
108+
logger.warn("Cannot sign project \"${name}\" as credentials are missing. Will not setup signing and remote publishing credentials. Publishing will only work to maven local!")
109+
}
84110
}
85111
}
86112
}
87113

88114
fun Project.propOrEnv(name: String): String? {
89-
var property: String? = findProperty(name) as String?
90-
if (property == null) {
91-
property = System.getenv(name)
92-
}
93-
return property
115+
return findProperty(name) as? String?
116+
?: System.getenv(name)?.ifEmpty { null }
117+
?: providers.systemProperty(name).orNull
94118
}
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
distributionBase=GRADLE_USER_HOME
22
distributionPath=wrapper/dists
3-
distributionUrl=https\://services.gradle.org/distributions/gradle-8.0.2-all.zip
3+
distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-all.zip
44
zipStoreBase=GRADLE_USER_HOME
55
zipStorePath=wrapper/dists
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
distributionBase=GRADLE_USER_HOME
22
distributionPath=wrapper/dists
3-
distributionUrl=https\://services.gradle.org/distributions/gradle-7.4.2-bin.zip
3+
distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-bin.zip
44
zipStoreBase=GRADLE_USER_HOME
5-
zipStorePath=wrapper/dists
5+
zipStorePath=wrapper/dists

0 commit comments

Comments
 (0)