Skip to content

Wire up Modrinth and CurseForge publishing - #36

Merged
Rongmario merged 1 commit into
masterfrom
ci/publishing-setup
Aug 1, 2026
Merged

Wire up Modrinth and CurseForge publishing#36
Rongmario merged 1 commit into
masterfrom
ci/publishing-setup

Conversation

@Rongmario

Copy link
Copy Markdown
Owner

Publishing was plumbed but inert — both project IDs were blank, so publishMods skipped 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.
  • The MODRINTH_TOKEN / CURSEFORGE_TOKEN secrets are already set on the repository, and publish.yml already passes them through.

Verified with a real dry run (PUBLISH_DRY_RUN=true) on fabric:1.20.1, forge:1.20.1 and neoforge:1.21.1. publishMods now resolves both publishCurseforge and publishModrinth, 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. Tagging v7.0.1 while gradle.properties still said 7.0.0 would publish 80 files as 7.0.0, and a CurseForge file can't be replaced after the fact. The targets job now fails the run before any upload if v<mod_version> doesn't match the tag. Release-only, so workflow_dispatch rehearsals are unaffected.

Serial uploads. max-parallel: 1 across 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

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>
@Rongmario
Rongmario merged commit 0b36a3d into master Aug 1, 2026
80 checks passed
@Rongmario
Rongmario deleted the ci/publishing-setup branch August 1, 2026 23:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant