diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 449eaf4..c57f9c1 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -3,12 +3,12 @@ jobs: build: runs-on: ubuntu-latest steps: - - name: Clone repository + - name: Clone Repository uses: actions/checkout@v4 - name: Setup Java uses: actions/setup-java@v4 with: - java-version: '17' + java-version: '21' distribution: 'temurin' - name: Cache uses: actions/cache@v4 @@ -16,7 +16,7 @@ jobs: path: | ~/.gradle/caches ~/.gradle/wrapper - key: ${{ hashFiles('**/build.gradle', '**/gradle-wrapper.properties') }} + key: ${{ hashFiles('**/build.gradle', '**/gradle-wrapper.properties', '**/gradle.properties') }} - name: Build run: | chmod +x ./gradlew @@ -25,4 +25,4 @@ jobs: uses: actions/upload-artifact@v4 with: name: Mod Jar - path: build/libs/**.jar \ No newline at end of file + path: build/libs/**.jar diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..153625e --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,39 @@ +on: + push: + tags: ["*"] +jobs: + release: + runs-on: ubuntu-latest + steps: + - name: Clone Repository + uses: actions/checkout@v4 + - name: Setup Java + uses: actions/setup-java@v4 + with: + java-version: '21' + distribution: 'temurin' + - name: Cache + uses: actions/cache@v4 + with: + path: | + ~/.gradle/caches + ~/.gradle/wrapper + key: ${{ hashFiles('**/build.gradle', '**/gradle-wrapper.properties', '**/gradle.properties') }} + - name: Grab Changelog from Commit Message Body + run: | + changelog=$(echo -e "$MESSAGE" | sed -n '/^$/,$p' | sed '1d') + echo -e "$changelog" + { + echo 'CHANGELOG<> "$GITHUB_ENV" + env: + MESSAGE: ${{ github.event.head_commit.message }} + - name: Release + run: | + chmod +x ./gradlew + ./gradlew publishMods --no-daemon + env: + MR_TOKEN: ${{ secrets.MR_TOKEN }} + CF_TOKEN: ${{ secrets.CF_TOKEN }} diff --git a/build.gradle b/build.gradle index e3352ef..fc84ce6 100644 --- a/build.gradle +++ b/build.gradle @@ -4,6 +4,7 @@ plugins { id 'idea' id 'maven-publish' id 'net.neoforged.gradle.userdev' version '7.0.163' + id 'me.modmuss50.mod-publish-plugin' version "0.7.4" } tasks.named('wrapper', Wrapper).configure { @@ -171,3 +172,28 @@ idea { downloadJavadoc = true } } + +publishMods { + def cfToken = providers.environmentVariable("CF_TOKEN") + def mrToken = providers.environmentVariable("MR_TOKEN") + dryRun = !cfToken.isPresent() || !mrToken.isPresent() + changelog = providers.environmentVariable("CHANGELOG").orElse("") + version = mod_version + type = me.modmuss50.mpp.ReleaseType.valueOf(mod_release_state) + file = tasks.jarJar.archiveFile + modLoaders.add("neoforge") + + modrinth { + accessToken = mrToken + projectId = "XExdLWCQ" + minecraftVersions.add(minecraft_version) + optional("jei") + } + + curseforge { + accessToken = cfToken + projectId = "376737" + minecraftVersions.add(minecraft_version) + optional("jei") + } +} diff --git a/gradle.properties b/gradle.properties index b7472d3..a4d86b8 100644 --- a/gradle.properties +++ b/gradle.properties @@ -35,6 +35,7 @@ mod_name=PrettyPipes mod_license=MIT # The mod version. See https://semver.org/ mod_version=1.18.0 +mod_release_state=BETA # The group ID for the mod. It is only important when publishing as an artifact to a Maven repository. # This should match the base package used for the mod sources. # See https://maven.apache.org/guides/mini/guide-naming-conventions.html