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 40dd17a..60f548d 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.runpaper) alias(libs.plugins.shadow) + alias(libs.plugins.publishing) } group = "dev.booky" -version = "1.0.5-SNAPSHOT" val plugin: Configuration by configurations.creating { isTransitive = false @@ -77,3 +80,49 @@ tasks { ) } } + +configure { + val repositoryName = "CloudCraftProjects/CloudProtections" + 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("shadowJar").flatMap { it.archiveFile } + additionalFiles.from(tasks.named("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 = "IeP9peMi" + minecraftVersionRange { + start = rootProject.libs.versions.paperapi.get().split("-")[0] + end = "latest" + } + + requires("commandapi", "cloudcore") + } +} + +tasks.withType { + dependsOn(tasks.named("shadowJar")) + dependsOn(tasks.named("sourcesJar")) +} diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 0000000..5011a7f --- /dev/null +++ b/gradle.properties @@ -0,0 +1 @@ +version=1.0.5 diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index e35f528..79e3d99 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" minecraft = "1.21.1" paperapi = "1.21.1-R0.1-SNAPSHOT" @@ -15,6 +16,7 @@ commandapi = "9.5.3" pluginyml-bukkit = { id = "net.minecrell.plugin-yml.bukkit", version.ref = "pluginyml" } runpaper = { 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] paperapi = { module = "io.papermc.paper:paper-api", version.ref = "paperapi" }