From a34a3f16ede1f71a6481bf2dd0f1abc2f68aabec Mon Sep 17 00:00:00 2001 From: booky10 <boooky10@gmail.com> Date: Wed, 2 Oct 2024 20:59:05 +0200 Subject: [PATCH] Add auto publishing gradle plugin --- .github/workflows/release.yml | 30 ++++++++++++++++++++ build.gradle.kts | 53 +++++++++++++++++++++++++++++++++-- gradle.properties | 1 + gradle/libs.versions.toml | 2 ++ settings.gradle.kts | 4 +++ 5 files changed, 88 insertions(+), 2 deletions(-) create mode 100644 .github/workflows/release.yml create mode 100644 gradle.properties diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..2c0b3b2 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,30 @@ +name: Release +on: + workflow_dispatch: + +permissions: + contents: write + +jobs: + release: + name: Publish Release + runs-on: ubuntu-24.04 + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Validate gradle wrapper + uses: gradle/actions/wrapper-validation@v3 + + - name: Setup java 21 + uses: actions/setup-java@v4 + with: + java-version: 21 + distribution: temurin + + - name: Publish plugin + env: + GITHUB_API_TOKEN: ${{ github.token }} + MODRINTH_API_TOKEN: ${{ secrets.MODRINTH_PUBLISH_TOKEN }} + run: ./gradlew publishMods --no-daemon -PnoDryPublish diff --git a/build.gradle.kts b/build.gradle.kts index 761228d..392fa40 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,3 +1,6 @@ +import me.modmuss50.mpp.ModPublishExtension +import me.modmuss50.mpp.PublishModTask + plugins { id("java-library") id("maven-publish") @@ -5,10 +8,10 @@ plugins { alias(libs.plugins.pluginyml.bukkit) alias(libs.plugins.runtask.paper) alias(libs.plugins.shadow) + alias(libs.plugins.publishing) } group = "dev.booky" -version = "1.1.1-SNAPSHOT" val plugin: Configuration by configurations.creating { isTransitive = false @@ -27,7 +30,7 @@ dependencies { compileOnly(libs.commandapi.bukkit.core) // testserver dependency plugins - plugin(variantOf(libs.cloudcore) {classifier("all")}) + plugin(variantOf(libs.cloudcore) { classifier("all") }) plugin(libs.commandapi.bukkit.plugin) } @@ -67,3 +70,49 @@ tasks { dependsOn(shadowJar) } } + +configure<ModPublishExtension> { + val repositoryName = "CloudCraftProjects/CloudVanish" + changelog = "See https://github.com/$repositoryName/releases/tag/v${project.version}" + type = if (project.version.toString().endsWith("-SNAPSHOT")) BETA else STABLE + dryRun = !hasProperty("noDryPublish") + + file = tasks.named<Jar>("shadowJar").flatMap { it.archiveFile } + additionalFiles.from(tasks.named<Jar>("sourcesJar")) + + github { + accessToken = providers.environmentVariable("GITHUB_API_TOKEN") + .orElse(providers.gradleProperty("ccGithubToken")) + + displayName = "${rootProject.name} v${project.version}" + + repository = repositoryName + commitish = "master" + tagName = "v${project.version}" + + if (project != rootProject) { + parent(rootProject.tasks.named("publishGithub")) + } + } + modrinth { + accessToken = providers.environmentVariable("MODRINTH_API_TOKEN") + .orElse(providers.gradleProperty("ccModrinthToken")) + + version = "${project.version}" + displayName = "${rootProject.name} v${project.version}" + modLoaders.add("paper") + + projectId = "CtTP3zU8" + minecraftVersionRange { + start = rootProject.libs.versions.paper.get().split("-")[0] + end = "latest" + } + + requires("commandapi", "cloudcore") + } +} + +tasks.withType<PublishModTask> { + dependsOn(tasks.named<Jar>("shadowJar")) + dependsOn(tasks.named<Jar>("sourcesJar")) +} diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 0000000..ef0464d --- /dev/null +++ b/gradle.properties @@ -0,0 +1 @@ +version=1.1.1 diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 5da5c43..dc05bb3 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -2,6 +2,7 @@ pluginyml = "0.6.0" runtask = "2.3.1" shadow = "8.3.0" +publishing = "0.7.4" paper = "1.21.1-R0.1-SNAPSHOT" bstats = "3.1.0" @@ -13,6 +14,7 @@ commandapi = "9.5.3" pluginyml-bukkit = { id = "net.minecrell.plugin-yml.bukkit", version.ref = "pluginyml" } runtask-paper = { id = "xyz.jpenilla.run-paper", version.ref = "runtask" } shadow = { id = "com.gradleup.shadow", version.ref = "shadow" } +publishing = { id = "me.modmuss50.mod-publish-plugin", version.ref = "publishing" } [libraries] paper-api = { module = "io.papermc.paper:paper-api", version.ref = "paper" } diff --git a/settings.gradle.kts b/settings.gradle.kts index b183182..1c78b7c 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -1 +1,5 @@ rootProject.name = "CloudVanish" + +plugins { + id("org.gradle.toolchains.foojay-resolver-convention") version "0.8.0" +}