Repository navigation
Releasing
A release goes to GitHub, Modrinth (mobosses), and Hangar (MairwunNx/MoBosses) from one workflow. Nothing in the repository holds the version: the workflow takes it as input.
-
Write the notes. Add a
## X.Y.Zsection toCHANGELOG.md, written for server owners, and push it. Patch for fixes, minor for features, major for breaking changes. -
Run the “Release” workflow:
gh workflow run release.yml -R MairwunNx/mobosses -f version=X.Y.Z -f modrinth=true -f hangar=true
Its
changelogfield overrides theCHANGELOG.mdsection. One of the two must be there. -
Watch it:
gh run watch. -
Check every place: the GitHub release, Modrinth’s versions, and Hangar’s versions page.
- Builds and tests with
-PreleaseVersion=X.Y.Z. - Tags
vX.Y.Zand attachesmobosses-paper-X.Y.Z.jarand a version-lessmobosses-paper.jarto a GitHub release, soreleases/latest/download/mobosses-paper.jaralways fetches the newest. It attachesmobosses.jartoo, the jar’s name up to 2.9.0, so older links keep working. - With
modrinth, uploads the jar to Modrinth and syncsMODRINTH.mdas the project’s description. It needs theMODRINTH_TOKENsecret. - With
hangar, publishes to Hangar with theHANGAR_TOKENsecret. The jar is over Hangar’s 15 MB limit, so Hangar gets a link to the GitHub release jar. Hangar doesn’t sync its page fromMODRINTH.md. Edit it on the site after a big change. - With
moonlands(on by default), starts Moonlands’ shipping workflow with theFAMILY_ACTIONS_TOKENsecret, which puts the jar on the server.
Never delete or re-tag a published release. If GitHub succeeded and Modrinth didn’t, fix the build and finish the upload locally:
./gradlew :paper:modrinth -PreleaseVersion=X.Y.Z -PchangelogFile=notes.md --no-configuration-cacheThen fix the workflow for next time.
The Fabric and NeoForge mods build with every release but stay out of it while mobosses.mods=false in gradle.properties, since they don’t play yet. Once they do, mobosses.mods=true makes the release attach mobosses-fabric-X.Y.Z.jar and mobosses-neoforge-X.Y.Z.jar (each also without the version), and Modrinth gets X.Y.Z+paper, X.Y.Z+fabric, and X.Y.Z+neoforge, the mods through scripts/modrinth_mods.py. Hangar stays Paper’s alone.