Wire up Modrinth and CurseForge publishing - #36
Merged
Conversation
Fills in the project IDs so publishMods stops skipping both platforms, verified end to end with a dry run on Fabric, Forge and NeoForge. Also two things that would have bitten the first real release: The tag is now checked against mod_version before anything uploads. A jar carries the version it was built with, so tagging v7.0.1 over a stale mod_version would have published 80 files as 7.0.0, and a file on CurseForge can't be replaced afterwards. Uploads run four at a time rather than one. Every job decompiles its own Minecraft, so 80 serial targets would have taken most of a day. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Publishing was plumbed but inert — both project IDs were blank, so
publishModsskipped both platforms on every target.gradle.properties:modrinth_id = CCNUnbXG,curseforge_id = 392805. Both checked against the live APIs — they resolve to CleanCut on each platform.MODRINTH_TOKEN/CURSEFORGE_TOKENsecrets are already set on the repository, andpublish.ymlalready passes them through.Verified with a real dry run (
PUBLISH_DRY_RUN=true) onfabric:1.20.1,forge:1.20.1andneoforge:1.21.1.publishModsnow resolves bothpublishCurseforgeandpublishModrinth, with the expected file, display name and version on each.Two problems this would have hit on the first real release:
Tag/version mismatch. A jar carries
mod_version, not the tag. Taggingv7.0.1whilegradle.propertiesstill said7.0.0would publish 80 files as 7.0.0, and a CurseForge file can't be replaced after the fact. Thetargetsjob now fails the run before any upload ifv<mod_version>doesn't match the tag. Release-only, soworkflow_dispatchrehearsals are unaffected.Serial uploads.
max-parallel: 1across 80 targets, each decompiling its own Minecraft, is most of a day. Now 4 — same headroom the build workflow uses against Maven Central, and inside both platforms' upload rate limits.README's publishing section rewritten: the setup steps were describing work that's now done.
Not addressed: the Modrinth project is currently tagged fabric/quilt only. Uploading the Forge and NeoForge files tags those automatically, so nothing to do up front.
🤖 Generated with Claude Code