Setup automated publishing to CF and Modrinth (#15)

* Configure mod-publish-plugin

* Configure actions to run mod-publish-plugin

To publish a release:
- Set the mod version to x.x.x(-beta.x) in gradle.properties and commit
- Create a git tag named vx.x.x(-beta.x) (note the v prefix)
- Push commit, push tag
- Manually create a (pre-)release for the tag on GitHub web ui. The release notes will be reused for modrinth and CF.

The release creation will trigger the workflow and publish to modrinth and CF.

The build script will check for when the version contains `-beta.` and mark it as a beta on modrinth and CF.

After publishing a release, it's good practice to bump the version and add -SNAPSHOT, i.e. after releasing 0.0.1, push a commit changing the version to 0.0.2-SNAPSHOT. This ensures people downloading action artifacts have correct version numbers.

This commit also updates gradle/actions/setup-gradle which removes the need for a separate wrapper validation action (it is included in setup-gradle v4)

* Set project IDs
This commit is contained in:
Jason Penilla
2024-09-03 11:37:56 -07:00
committed by GitHub
parent 9066101f5d
commit cfc73390d8
5 changed files with 82 additions and 3 deletions

View File

@@ -4,6 +4,9 @@ on:
branches: [ "**" ]
tags-ignore: [ "**" ]
pull_request:
release:
types: [ published ]
jobs:
build:
# Only run on PRs if the source branch is on someone else's repo
@@ -12,15 +15,13 @@ jobs:
steps:
- name: "checkout git repository"
uses: actions/checkout@v4
- name: "validate gradle wrapper"
uses: gradle/actions/wrapper-validation@v3
- name: "setup jdk"
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: 21
- name: "setup gradle"
uses: gradle/actions/setup-gradle@v3
uses: gradle/actions/setup-gradle@v4
# gradle-build-action doesn't support caching files in the project dir
- name: "cache project local caches"
uses: actions/cache@v4
@@ -34,6 +35,13 @@ jobs:
run: ./installConcurrentUtil.sh
- name: "execute gradle build"
run: ./gradlew build
- name: Publish (Pre-)Release to Modrinth
if: "${{ env.STATUS == 'release' && github.event_name == 'release' }}"
run: ./gradlew :moonrise-fabric:publishMods :moonrise-neoforge:publishMods
env:
MODRINTH_TOKEN: "${{ secrets.MODRINTH_TOKEN }}"
CURSEFORGE_TOKEN: "${{ secrets.CURSEFORGE_TOKEN }}"
RELEASE_NOTES: "${{ github.event.release.body }}"
- name: "upload artifacts"
uses: actions/upload-artifact@v4
with: