Skip to content

Commit ddd232d

Browse files
committed
chore: Update publishing to maven central
1 parent b010255 commit ddd232d

File tree

10 files changed

+108
-60
lines changed

10 files changed

+108
-60
lines changed

.github/workflows/publish.yaml

Lines changed: 20 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+
UTOPIA_RISE_GPG_PRIVATE_KEY_ASCII: ${{ secrets.UTOPIA_RISE_GPG_PRIVATE_KEY_ASCII }}
9+
UTOPIA_RISE_GPG_KEY_PASSPHRASE: ${{ secrets.UTOPIA_RISE_GPG_KEY_PASSPHRASE }}
10+
UTOPIA_RISE_MAVEN_CENTRAL_PORTAL_TOKEN_USERNAME: ${{ secrets.UTOPIA_RISE_MAVEN_CENTRAL_PORTAL_TOKEN_USERNAME }}
11+
UTOPIA_RISE_MAVEN_CENTRAL_PORTAL_TOKEN_PASSWORD: ${{ 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:
@@ -23,16 +30,21 @@ jobs:
2330
arguments: build
2431
wrapper-directory: kotlin-preprocessors/
2532
build-root-directory: kotlin-preprocessors/
33+
- name: Setup publish gradle properties
34+
shell: sh
35+
run: |
36+
echo 'mavenCentralUsername=$UTOPIA_RISE_MAVEN_CENTRAL_PORTAL_TOKEN_USERNAME >> ~/.gradle/gradle.properties
37+
echo 'mavenCentralPassword=$UTOPIA_RISE_MAVEN_CENTRAL_PORTAL_TOKEN_PASSWORD >> ~/.gradle/gradle.properties
38+
echo 'signingInMemoryKey=$UTOPIA_RISE_GPG_PRIVATE_KEY_ASCII >> ~/.gradle/gradle.properties
39+
echo 'signingInMemoryKeyPassword=$UTOPIA_RISE_GPG_KEY_PASSPHRASE >> ~/.gradle/gradle.properties
40+
- name: upload artifact
41+
uses: actions/upload-artifact@v4
42+
with:
43+
name: properties
44+
path: ~/.gradle/gradle.properties
2645
- name: Publish to maven central
2746
uses: eskatos/gradle-command-action@v1
2847
with:
2948
arguments: publish publishPlugins -Pgradle.publish.key=$GRADLE_PUBLISH_KEY -Pgradle.publish.secret=$GRADLE_PUBLISH_SECRET
3049
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 }}
50+
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 "4.1.1"
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.0.21"))
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.32.0")
3435
}

kotlin-preprocessors/buildSrc/src/main/kotlin/publish/mavencentral/PublishToMavenCentralPlugin.kt

Lines changed: 69 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -1,92 +1,119 @@
11
package publish.mavencentral
22

3+
import com.vanniktech.maven.publish.MavenPublishBaseExtension
4+
import com.vanniktech.maven.publish.MavenPublishPlugin
5+
import com.vanniktech.maven.publish.SonatypeHost
36
import org.gradle.api.Plugin
47
import org.gradle.api.Project
58
import org.gradle.api.publish.PublishingExtension
69
import org.gradle.api.publish.maven.MavenPublication
7-
import org.gradle.plugins.signing.SigningExtension
10+
import org.gradle.plugins.signing.Sign
811

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

1517
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")
18+
val mavenCentralUser = target.propOrEnv("UTOPIA_RISE_MAVEN_CENTRAL_PORTAL_TOKEN_USERNAME") ?: target.propOrEnv("mavenCentralUsername")
19+
val mavenCentralPassword = target.propOrEnv("UTOPIA_RISE_MAVEN_CENTRAL_PORTAL_TOKEN_PASSWORD") ?: target.propOrEnv("mavenCentralPassword")
20+
val gpgInMemoryKey = target.propOrEnv("UTOPIA_RISE_GPG_PRIVATE_KEY_ASCII") ?: target.propOrEnv("signingInMemoryKey")
21+
val gpgPassword = target.propOrEnv("UTOPIA_RISE_GPG_KEY_PASSPHRASE") ?: target.propOrEnv("signingInMemoryKeyPassword")
2022

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

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-
}
25+
target.extensions.getByType(PublishingExtension::class.java).apply {
4726
publications {
4827
all {
4928
if (this is MavenPublication) {
29+
groupId = "com.utopia-rise"
30+
artifactId = if (artifactId.isNullOrEmpty()) target.name else artifactId
31+
version = target.version as String
32+
5033
pom {
51-
name.set("kotlin-preprocessors")
52-
description.set("Gradle plugin to define preprocessors for kotlin language")
34+
url.set("https://github.com/utopia-rise/godot-kotlin-jvm.git")
5335

54-
url.set("https://github.com/utopia-rise/kotlin-preprocessors.git")
36+
if (name.getOrElse("").isNullOrEmpty()) {
37+
name.set(target.name)
38+
}
39+
if (description.getOrElse("").isNullOrEmpty()) {
40+
description.set(target.description ?: "Godot kotlin jvm module")
41+
}
5542

5643
scm {
57-
connection.set("scm:git:https://github.com/utopia-rise/kotlin-preprocessors")
58-
developerConnection.set("scm:git:github.com:utopia-rise/kotlin-preprocessors.git")
44+
connection.set("scm:git:https://github.com/utopia-rise/godot-kotlin-jvm")
45+
developerConnection.set("scm:git:github.com:utopia-rise/godot-kotlin-jvm.git")
5946
tag.set("master") //FIXME
60-
url.set("https://github.com/utopia-rise/kotlin-preprocessors")
47+
url.set("https://github.com/utopia-rise/godot-kotlin-jvm")
6148
}
6249

6350
licenses {
6451
license {
6552
name.set("MIT License")
66-
url.set("https://github.com/utopia-rise/kotlin-preprocessors/blob/master/LICENSE")
53+
url.set("https://github.com/utopia-rise/godot-kotlin-jvm/blob/master/LICENSE")
6754
distribution.set("repo")
6855
}
6956
}
7057

7158
developers {
59+
developer {
60+
id.set("core")
61+
name.set("Ranie Jade Ramiso")
62+
url.set("https://github.com/raniejade")
63+
email.set("raniejaderamiso@gmail.com")
64+
}
7265
developer {
7366
id.set("core")
7467
name.set("Pierre-Thomas Meisels")
7568
url.set("https://github.com/piiertho")
7669
email.set("meisels27@yahoo.fr")
7770
}
71+
developer {
72+
id.set("core")
73+
name.set("Cedric Hippmann")
74+
url.set("https://github.com/chippmann")
75+
email.set("cedric.hippmann@hotmail.com")
76+
}
77+
developer {
78+
id.set("core")
79+
name.set("Tristan Grespinet")
80+
url.set("https://github.com/CedNaru")
81+
email.set("ced.naru@gmail.com")
82+
}
7883
}
7984
}
8085
}
8186
}
8287
}
8388
}
89+
90+
91+
if (canSign) {
92+
logger.info("Will sign artifact for project \"${name}\" and setup publishing")
93+
94+
pluginManager.apply(MavenPublishPlugin::class.java)
95+
extensions.getByType(MavenPublishBaseExtension::class.java).apply {
96+
publishToMavenCentral(SonatypeHost.CENTRAL_PORTAL)
97+
signAllPublications()
98+
}
99+
100+
target.afterEvaluate {
101+
target
102+
.tasks
103+
.filter { task -> task.name.startsWith("publish") }
104+
.forEach { task ->
105+
task.dependsOn(target.tasks.withType(Sign::class.java))
106+
}
107+
}
108+
} else {
109+
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!")
110+
}
84111
}
85112
}
86113
}
87114

88115
fun Project.propOrEnv(name: String): String? {
89-
var property: String? = findProperty(name) as String?
116+
var property: String? = findProperty(name) as? String?
90117
if (property == null) {
91118
property = System.getenv(name)
92119
}
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

samples/src/main/kotlin/Main.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
1-
import kotlincompile.definitions.SamplesDefinitions
1+
import kotlincompile.definitions.SamplesBuildConfig
22

33
fun main(args: Array<String>) {
4-
if (SamplesDefinitions.DEBUG) {
4+
if (SamplesBuildConfig.DEBUG) {
55
println("DEBUG!")
66
} else {
77
println("not DEBUG!")
88
}
99
}
1010

1111
fun isDebug(): Boolean {
12-
return SamplesDefinitions.DEBUG
12+
return SamplesBuildConfig.DEBUG
1313
}

0 commit comments

Comments
 (0)