-
Notifications
You must be signed in to change notification settings - Fork 0
Building and Releasing
ChunkDoctor uses Gradle Kotlin DSL and Java 21.
Linux or macOS:
./gradlew clean buildWindows:
.\gradlew.bat clean buildThe installable artifact is:
build/libs/ChunkDoctor-<version>.jar
Do not deploy the -plain.jar; it excludes relocated runtime dependencies.
The production JAR relocates:
- Gson into
dev.chunkdoctor.lib.gson; - bStats into
dev.chunkdoctor.lib.bstats.
This avoids classpath collisions with other server plugins.
Every push to main and every pull request:
- validates the Gradle wrapper;
- installs Java 21;
- runs a clean build and tests;
- uploads the production JAR as a short-lived workflow artifact.
GitHub Actions are pinned to commit SHAs.
-
Choose the semantic version.
-
Set
versioninbuild.gradle.kts. -
Move notes from
[Unreleased]into a matching changelog section:## [x.y.z] - YYYY-MM-DD -
Build and test locally.
-
Commit the release changes.
-
Create the exact tag
vx.y.z. -
Push the commit and tag.
The tag workflow:
- verifies that the tag matches the Gradle version;
- performs a clean build and test run;
- uploads the shaded JAR to Modrinth;
- creates the GitHub release.
Required GitHub configuration:
- repository secret
MODRINTH_TOKEN; - repository variable
MODRINTH_PROJECT_ID.
The token requires the Modrinth CREATE_VERSION scope. Never commit it.
- stable versions publish as
release; - versions containing
alpha,beta, orrcpublish to Modrinth asbeta.
The Modrinth changelog is extracted from the matching CHANGELOG.md section.
Publishing fails if that section is missing or empty.
ChunkDoctor · Releases · Issues · Security · MIT License