Skip to content

Commit f451438

Browse files
committed
chore: update build configuration and add publishing tasks
1 parent 9b39279 commit f451438

File tree

7 files changed

+110
-74
lines changed

7 files changed

+110
-74
lines changed

.github/workflows/generate-publish-sdk.yaml

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,13 @@ jobs:
1111
- name: Set Up JDK
1212
uses: actions/setup-java@v3
1313
with:
14-
distribution: 'temurin'
15-
java-version: '17'
14+
distribution: 'corretto'
15+
java-version: '21'
16+
17+
- name: Setup Gradle
18+
uses: gradle/actions/setup-gradle@v4
19+
with:
20+
gradle-version: "8.13"
1621

1722
- name: Install Post Processor
1823
working-directory: generator/src/main/resources/post-processor
@@ -22,12 +27,13 @@ jobs:
2227
working-directory: generator
2328
run: |
2429
export KOTLIN_POST_PROCESS_FILE="npm run --prefix src/main/resources/post-processor process"
25-
30+
gradle openApiGenerate
2631
27-
- name: Publish Snapshots
28-
env:
29-
GPG_PASSPHRASE: ${{ secrets.GPG_PRIVATE_KEY_PASSPHRASE }}
30-
GPG_SECRET: ${{ secrets.GPG_PRIVATE_KEY }}
31-
SONATYPE_USERNAME: ${{ secrets.SONATYPE_USERNAME }}
32-
SONATYPE_PASSWORD: ${{ secrets.SONATYPE_PASSWORD }}
33-
run: ./gradlew publishSnapshots
32+
# - name: Publish Snapshots
33+
# working-directory: xap-sdk
34+
# env:
35+
# GPG_PASSPHRASE: ${{ secrets.GPG_PRIVATE_KEY_PASSPHRASE }}
36+
# GPG_SECRET: ${{ secrets.GPG_PRIVATE_KEY }}
37+
# SONATYPE_USERNAME: ${{ secrets.SONATYPE_USERNAME }}
38+
# SONATYPE_PASSWORD: ${{ secrets.SONATYPE_PASSWORD }}
39+
# run: gradle publishSnapshots

build.gradle.kts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,14 @@ import java.time.Duration
33

44
plugins {
55
kotlin("jvm") version "2.1.10"
6+
id("signing")
7+
id("maven-publish")
68
id("org.jlleitschuh.gradle.ktlint") version "12.1.2"
79
id("io.github.gradle-nexus.publish-plugin") version "2.0.0"
810
}
911

1012
group = "com.expediagroup.sdk"
11-
version = "1.0-SNAPSHOT"
13+
version = "1.0.0-SNAPSHOT"
1214

1315
repositories {
1416
mavenCentral()
@@ -19,6 +21,8 @@ repositories {
1921
}
2022

2123
subprojects {
24+
apply(plugin = "signing")
25+
apply(plugin = "maven-publish")
2226
apply(plugin = "org.jlleitschuh.gradle.ktlint")
2327
apply(plugin = "org.jetbrains.kotlin.jvm")
2428

generator/build.gradle.kts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1+
import com.expediagroup.sdk.xap.generator.mustache.AllowedMediaTypesLambda
12
import org.openapitools.codegen.CodegenConstants
2-
// import com.expediagroup.sdk.xap.generator.mustache.AllowedMediaTypesLambda
33

44
plugins {
55
`kotlin-dsl`
@@ -43,8 +43,8 @@ openApiGenerate {
4343
configFile = "$projectDir/src/main/resources/generator-config.yaml"
4444
outputDir = "$rootDir/xap-sdk/src/main/kotlin"
4545

46-
additionalProperties.put(CodegenConstants.ENUM_PROPERTY_NAMING.toString(), "UPPERCASE")
47-
// additionalProperties.put("allowedMediaTypes", AllowedMediaTypesLambda())
46+
additionalProperties.put(CodegenConstants.ENUM_PROPERTY_NAMING, "UPPERCASE")
47+
additionalProperties.put("allowedMediaTypes", AllowedMediaTypesLambda())
4848

4949
configOptions.put("sourceFolder", "")
5050

gradle-tasks/publish.gradle.kts

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
project.extensions.configure<PublishingExtension> {
2+
publications {
3+
create<MavenPublication>("mavenJava") {
4+
from(components["java"])
5+
artifactId = project.property("ARTIFACT_NAME") as String
6+
groupId = project.property("GROUP_ID") as String
7+
version = if (project.findProperty("SNAPSHOT_VERSION") != null) {
8+
project.findProperty("SNAPSHOT_VERSION") as String
9+
} else {
10+
project.property("VERSION") as String
11+
}
12+
description = project.findProperty("DESCRIPTION") as String?
13+
14+
pom {
15+
name.set(project.property("ARTIFACT_NAME") as String)
16+
description.set(project.findProperty("DESCRIPTION") as String?)
17+
url.set(project.property("POM_URL") as String)
18+
19+
licenses {
20+
license {
21+
name.set(project.property("LICENSE_NAME") as String)
22+
url.set(project.property("LICENSE_URL") as String)
23+
distribution.set(project.property("LICENSE_DISTRIBUTION") as String)
24+
comments.set(project.property("LICENSE_COMMENTS") as String)
25+
}
26+
}
27+
28+
developers {
29+
developer {
30+
name.set(project.property("DEVELOPER_NAME") as String)
31+
organization.set(project.property("DEVELOPER_ORG") as String)
32+
organizationUrl.set(project.property("DEVELOPER_ORG_URL") as String)
33+
}
34+
}
35+
36+
scm {
37+
url.set(project.property("POM_SCM_URL") as String)
38+
connection.set(project.property("POM_SCM_CONNECTION") as String)
39+
developerConnection.set(project.property("POM_SCM_DEVELOPER_CONNECTION") as String)
40+
}
41+
}
42+
}
43+
}
44+
}

gradle-tasks/signing.gradle.kts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
extensions.configure<SigningExtension> {
2+
val signingKey = System.getenv("GPG_SECRET")
3+
val signingPassword = System.getenv("GPG_PASSPHRASE")
4+
5+
useInMemoryPgpKeys(signingKey, signingPassword)
6+
7+
val publishing = project.extensions.getByType<PublishingExtension>()
8+
sign(publishing.publications)
9+
}

gradle-tasks/snapshot.gradle.kts

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
tasks.register("publishSnapshot") {
2+
val artifactId = project.property("ARTIFACT_NAME") as String
3+
val version = if (project.findProperty("SNAPSHOT_VERSION") != null) {
4+
project.findProperty("SNAPSHOT_VERSION") as String
5+
} else {
6+
project.property("VERSION") as String
7+
}
8+
9+
require(project.tasks.names.contains("publish")) {
10+
"Publish task must be present to publish a $artifactId snapshot"
11+
}
12+
13+
require(project.version.toString().contains("-SNAPSHOT")) {
14+
"$artifactId version must contain -SNAPSHOT to publish snapshots."
15+
}
16+
17+
dependsOn("${project.name}:publish")
18+
doLast {
19+
val url = "https://oss.sonatype.org/content/repositories/snapshots/com/expediagroup/$artifactId/$version/"
20+
println("📦 Successfully published $artifactId:$version snapshot.")
21+
println("🌱 Snapshot available at: $url")
22+
}
23+
}

xap-sdk/build.gradle.kts

Lines changed: 10 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -15,59 +15,6 @@ repositories {
1515
}
1616
}
1717

18-
publishing {
19-
publications {
20-
create<MavenPublication>("mavenJava") {
21-
from(components["java"])
22-
artifactId = project.property("ARTIFACT_NAME").toString()
23-
groupId = project.property("GROUP_ID").toString()
24-
version =
25-
if (project.hasProperty("SNAPSHOT_VERSION")) {
26-
project.property("SNAPSHOT_VERSION").toString()
27-
} else {
28-
project.property("VERSION").toString()
29-
}
30-
description = project.findProperty("DESCRIPTION")?.toString()
31-
32-
pom {
33-
name.set(project.property("ARTIFACT_NAME").toString())
34-
description.set(project.findProperty("DESCRIPTION")?.toString())
35-
url.set(project.property("POM_URL").toString())
36-
37-
licenses {
38-
license {
39-
name.set(project.property("LICENSE_NAME").toString())
40-
url.set(project.property("LICENSE_URL").toString())
41-
distribution.set(project.property("LICENSE_DISTRIBUTION").toString())
42-
comments.set(project.property("LICENSE_COMMENTS").toString())
43-
}
44-
}
45-
46-
developers {
47-
developer {
48-
name.set(project.property("DEVELOPER_NAME").toString())
49-
organization.set(project.property("DEVELOPER_ORG").toString())
50-
organizationUrl.set(project.property("DEVELOPER_ORG_URL").toString())
51-
}
52-
}
53-
54-
scm {
55-
url.set(project.property("POM_SCM_URL").toString())
56-
connection.set(project.property("POM_SCM_CONNECTION").toString())
57-
developerConnection.set(project.property("POM_SCM_DEVELOPER_CONNECTION").toString())
58-
}
59-
}
60-
}
61-
}
62-
}
63-
64-
signing {
65-
val signingKey = System.getenv("GPG_SECRET")
66-
val signingPassword = System.getenv("GPG_PASSPHRASE")
67-
68-
useInMemoryPgpKeys(signingKey, signingPassword)
69-
sign(publishing.publications)
70-
}
7118

7219
dependencies {
7320
testImplementation(kotlin("test"))
@@ -110,13 +57,6 @@ ktlint {
11057
)
11158
}
11259

113-
gradle.taskGraph.whenReady {
114-
if (hasTask(":publishSnapshots")) {
115-
rootProject.version = "1.0.0-SNAPSHOT"
116-
println("📌 Setting root project version to 1.0.0-SNAPSHOT for publishSnapshots task")
117-
}
118-
}
119-
12060
tasks.register("publishSnapshots") {
12161
val snapshotModules =
12262
rootProject.subprojects.filter { project ->
@@ -135,3 +75,13 @@ tasks.register("publishSnapshots") {
13575
}
13676
}
13777
}
78+
79+
apply("$rootDir/gradle-tasks/publish.gradle.kts")
80+
apply("$rootDir/gradle-tasks/signing.gradle.kts")
81+
apply("$rootDir/gradle-tasks/snapshot.gradle.kts")
82+
tasks.register("testVersion") {
83+
println("Version: ${project.version}")
84+
println(project.version)
85+
println("Version: ${project.property("VERSION")}")
86+
println("Version: ${project.findProperty("SNAPSHOT_VERSION")}")
87+
}

0 commit comments

Comments
 (0)