Deploy#
The addon ships as a signed zip on CurseForge and as a GitHub release. Both come from the same build.
Release a new version#
Build the changelog from the commits since the last tag:
git cliff --tag v0.2.0 -o CHANGELOG.md git commit -am "docs: changelog for v0.2.0"
Tag and push the signed tag:
git tag -s v0.2.0 -m "SideQuest v0.2.0" git push origin main v0.2.0
Pushing a v* tag starts the release workflow. It writes that version’s release notes with
git-cliff (a tool that builds a changelog from commit messages; only
feat, fix and perf commits are listed), builds the zip, uploads it to CurseForge, signs
build provenance and a software bill of materials (a signed list of exactly what went into the
build) for it, and publishes it as a GitHub release.
A published release’s files can’t be changed, and v* tags can’t be moved or deleted. A bad
release is fixed by shipping a new version, not by editing the old one.
Testing the release workflow without releasing#
Run the workflow by hand from the Actions tab with the tag field left blank. It builds and signs
the zip the same way, uploads nothing to CurseForge, and leaves a draft release named
dry-run-<run id> that you can delete afterward.
Running it by hand with an existing tag, such as v0.1.0, publishes that tag as a GitHub release
without uploading it to CurseForge again. This is for a version that’s already on CurseForge but
has no GitHub release.
main only accepts signed commits, and force pushes and deleting the branch are blocked.