Skip to content

Commit b662885

Browse files
authored
Merge pull request #7 from OneLiteFeatherNET/feature/new_release_system
Change release system
2 parents 85fd9f3 + ab63794 commit b662885

File tree

9 files changed

+138
-136
lines changed

9 files changed

+138
-136
lines changed

.github/FUNDING.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
# These are supported funding model platforms
22

33
patreon: TheMeinerLP # Replace with a single Patreon username
4+
github: TheMeinerLP

.github/workflows/build.yml

Lines changed: 0 additions & 67 deletions
This file was deleted.

.github/workflows/publish.yml

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
name: Publish
2+
on:
3+
push:
4+
branches:
5+
- master
6+
- dev
7+
jobs:
8+
build:
9+
# Run on all label events (won't be duplicated) or all push events or on PR syncs not from the same repo
10+
if: github.repository_owner == 'OneLiteFeatherNET'
11+
runs-on: ubuntu-latest
12+
steps:
13+
- name: Checkout Repository
14+
uses: actions/checkout@v3
15+
- name: Validate Gradle Wrapper
16+
uses: gradle/wrapper-validation-action@v1
17+
- name: Setup Java
18+
uses: actions/setup-java@v3
19+
with:
20+
distribution: temurin
21+
cache: gradle
22+
java-version: 17
23+
- name: Publish
24+
env:
25+
HANGAR_SECRET: ${{secrets.HANGAR_KEY}}
26+
MODRINTH_TOKEN: ${{ secrets.MODRINTH_KEY }}
27+
run: ./gradlew build modrinth publishAllPublicationsToHangar --stacktrace

build-logic/build.gradle.kts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
plugins {
2+
`kotlin-dsl`
3+
}
4+
5+
repositories {
6+
gradlePluginPortal()
7+
}
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
import org.gradle.api.Project
2+
import org.gradle.api.publish.PublishingExtension
3+
import org.gradle.api.publish.maven.MavenPublication
4+
import org.gradle.kotlin.dsl.configure
5+
import org.gradle.kotlin.dsl.get
6+
import org.gradle.kotlin.dsl.named
7+
import java.io.ByteArrayOutputStream
8+
9+
fun Project.publishShadowJar() {
10+
configurePublication {
11+
artifact(tasks["shadowJar"])
12+
artifact(tasks["sourcesJar"])
13+
}
14+
}
15+
16+
private fun Project.configurePublication(configurer: MavenPublication.() -> Unit) {
17+
extensions.configure<PublishingExtension> {
18+
publications.named<MavenPublication>("mavenJava") {
19+
apply(configurer)
20+
}
21+
}
22+
}
23+
24+
fun Project.latestCommitHash(): String {
25+
return runGitCommand(listOf("rev-parse", "--short", "HEAD"))
26+
}
27+
28+
fun Project.latestCommitMessage(): String {
29+
return runGitCommand(listOf("log", "-1", "--pretty=%B"))
30+
}
31+
32+
fun Project.branchName(): String {
33+
return runGitCommand(listOf("rev-parse", "--abbrev-ref", "HEAD"))
34+
}
35+
36+
fun Project.runGitCommand(args: List<String>): String {
37+
val byteOut = ByteArrayOutputStream()
38+
exec {
39+
commandLine = listOf("git") + args
40+
standardOutput = byteOut
41+
}
42+
return byteOut.toString(Charsets.UTF_8.name()).trim()
43+
}

build-logic/src/main/kotlin/olf.build-logic.gradle.kts

Whitespace-only changes.

build.gradle.kts

Lines changed: 58 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,20 @@
11
import io.papermc.hangarpublishplugin.model.Platforms
2+
import java.util.*
23
import net.minecrell.pluginyml.bukkit.BukkitPluginDescription
3-
import org.ajoberstar.grgit.Grgit
44
import xyz.jpenilla.runpaper.task.RunServer
5-
import java.util.*
65

76
plugins {
87
java
98
`java-library`
9+
id("olf.build-logic")
1010
id("com.diffplug.spotless") version "6.18.0"
1111
id("com.github.johnrengelman.shadow") version "8.1.1"
12-
id("org.ajoberstar.grgit") version "5.2.0"
1312
id("net.minecrell.plugin-yml.bukkit") version "0.5.3"
1413
id("xyz.jpenilla.run-paper") version "2.1.0"
1514
idea
1615

1716
id("io.papermc.hangar-publish-plugin") version "0.0.5"
1817
id("com.modrinth.minotaur") version "2.+"
19-
id("org.jetbrains.changelog") version "2.0.0"
2018
}
2119

2220
if (!File("$rootDir/.git").exists()) {
@@ -29,20 +27,11 @@ if (!File("$rootDir/.git").exists()) {
2927
""".trimIndent()
3028
).also { System.exit(1) }
3129
}
32-
var baseVersion by extra("1.0.0")
33-
var extension by extra("")
34-
var snapshot by extra("-SNAPSHOT")
35-
36-
ext {
37-
val git: Grgit = Grgit.open {
38-
dir = File("$rootDir/.git")
39-
}
40-
val revision = git.head().abbreviatedId
41-
extension = "%s+%s".format(Locale.ROOT, snapshot, revision)
30+
allprojects {
31+
group = "net.onelitefeather.bettergopaint"
32+
version = property("projectVersion") as String // from gradle.properties
4233
}
43-
44-
version = "%s%s".format(Locale.ROOT, baseVersion, extension)
45-
group = "dev.themeinerlp.bettergopaint"
34+
group = "net.onelitefeather.bettergopaint"
4635

4736
val minecraftVersion = "1.20.2"
4837
val supportedMinecraftVersions = listOf(
@@ -130,54 +119,6 @@ bukkit {
130119
}
131120
}
132121

133-
changelog {
134-
version.set(baseVersion)
135-
path.set("${project.projectDir}/CHANGELOG.md")
136-
itemPrefix.set("-")
137-
keepUnreleasedSection.set(true)
138-
unreleasedTerm.set("[Unreleased]")
139-
groups.set(listOf("Added", "Changed", "Deprecated", "Removed", "Fixed", "Security"))
140-
}
141-
142-
hangarPublish {
143-
publications.register("BetterGoPaint") {
144-
version.set(project.version.toString())
145-
channel.set(System.getenv("HANGAR_CHANNEL"))
146-
changelog.set(
147-
project.changelog.renderItem(
148-
project.changelog.getOrNull(baseVersion) ?: project.changelog.getUnreleased()
149-
)
150-
)
151-
apiKey.set(System.getenv("HANGAR_SECRET"))
152-
owner.set("TheMeinerLP")
153-
slug.set("BetterGoPaint")
154-
155-
platforms {
156-
register(Platforms.PAPER) {
157-
jar.set(tasks.shadowJar.flatMap { it.archiveFile })
158-
platformVersions.set(supportedMinecraftVersions)
159-
}
160-
}
161-
}
162-
}
163-
164-
modrinth {
165-
token.set(System.getenv("MODRINTH_TOKEN"))
166-
projectId.set("qf7sNg9A")
167-
versionNumber.set(version.toString())
168-
versionType.set(System.getenv("MODRINTH_CHANNEL"))
169-
uploadFile.set(tasks.shadowJar as Any)
170-
gameVersions.addAll(supportedMinecraftVersions)
171-
loaders.add("paper")
172-
loaders.add("bukkit")
173-
loaders.add("folia")
174-
changelog.set(
175-
project.changelog.renderItem(
176-
project.changelog.getOrNull(baseVersion) ?: project.changelog.getUnreleased()
177-
)
178-
)
179-
}
180-
181122

182123
spotless {
183124
java {
@@ -194,22 +135,24 @@ java {
194135
}
195136

196137
tasks {
138+
named<Jar>("jar") {
139+
archiveClassifier.set("unshaded")
140+
}
197141
compileJava {
198142
options.release.set(17)
199143
options.encoding = "UTF-8"
200144
}
201145
shadowJar {
202-
archiveClassifier.set(null as String?)
146+
archiveClassifier.set("")
203147
dependencies {
204148
relocate("com.cryptomorin.xseries", "$group.xseries")
205149
relocate("org.incendo.serverlib", "$group.serverlib")
206150
relocate("org.bstats", "$group.metrics")
207151
relocate("io.papermc.lib", "$group.paperlib")
208152
}
209-
minimize()
210153
}
211154

212-
build {
155+
named("build") {
213156
dependsOn(shadowJar)
214157
}
215158

@@ -223,3 +166,50 @@ tasks {
223166
}
224167
}
225168
}
169+
170+
val branch = rootProject.branchName()
171+
val baseVersion = project.version as String
172+
val isRelease = !baseVersion.contains('-')
173+
val isMainBranch = branch == "master"
174+
if (!isRelease || isMainBranch) { // Only publish releases from the main branch
175+
val suffixedVersion = if (isRelease) baseVersion else baseVersion + "+" + System.getenv("GITHUB_RUN_NUMBER")
176+
val changelogContent = if (isRelease) {
177+
"See [GitHub](https://github.com/OneLiteFeatherNET/BetterGoPaint) for release notes."
178+
} else {
179+
val commitHash = rootProject.latestCommitHash()
180+
"[$commitHash](https://github.com/OneLiteFeatherNET/BetterGoPaint/commit/$commitHash) ${rootProject.latestCommitMessage()}"
181+
}
182+
hangarPublish {
183+
publications.register("BetterGoPaint") {
184+
version.set(project.version.toString())
185+
channel.set(if (isRelease) "Release" else if (isMainBranch) "Snapshot" else "Alpha")
186+
changelog.set(changelogContent)
187+
apiKey.set(System.getenv("HANGAR_SECRET"))
188+
owner.set("TheMeinerLP")
189+
slug.set("BetterGoPaint")
190+
platforms {
191+
register(Platforms.PAPER) {
192+
jar.set(tasks.shadowJar.flatMap { it.archiveFile })
193+
platformVersions.set(supportedMinecraftVersions)
194+
}
195+
}
196+
}
197+
}
198+
199+
modrinth {
200+
token.set(System.getenv("MODRINTH_TOKEN"))
201+
projectId.set("qf7sNg9A")
202+
versionType.set(if (isRelease) "release" else if (isMainBranch) "beta" else "alpha")
203+
versionNumber.set(suffixedVersion)
204+
versionName.set(suffixedVersion)
205+
changelog.set(changelogContent)
206+
uploadFile.set(tasks.shadowJar.flatMap { it.archiveFile })
207+
gameVersions.addAll(supportedMinecraftVersions)
208+
loaders.add("paper")
209+
loaders.add("bukkit")
210+
loaders.add("folia")
211+
}
212+
}
213+
214+
215+

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
version=3.1.0
1+
projectVersion=1.0.0-SNAPSHOT
22

33
org.gradle.jvmargs=-Xmx2048m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
44
org.gradle.daemon=true

settings.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
11
rootProject.name = "BetterGoPaint"
2+
includeBuild("build-logic")

0 commit comments

Comments
 (0)