Releases
mirlo.space deploys every change to main. Releases are tagged versions of main with a changelog, for self-hosted instances to update to. They're made with release-please.
How it works
- Commit messages follow Conventional Commits. commitlint checks them when you commit, and CI checks every commit in a pull request.
- The commit type decides the next version:
fix:bumps the patch number,feat:the minor number, andfeat!:(or aBREAKING CHANGE:footer) the major number. Onlyfeat,fix,perfandrevertcommits appear in the changelog. - On every push to
main, release-please keeps one release pull request open with the next version, the newCHANGELOG.mdentry and thepackage.jsonversion bump. - Merging that pull request tags
vX.Y.Zand publishes a GitHub Release with the changelog entry as its notes.
Use ! or a BREAKING CHANGE: footer for anything a self-hoster has to act on, like a new environment variable or a manual step, so it stands out in the changelog.
Cutting a release
- Wait until the changes on
mainhave run on mirlo.space for a while without problems. - Open the release pull request (labelled
autorelease: pending) and edit its description. Write a short summary between thesummarymarkers: the highlights, and anything self-hosters need to do. A workflow copies it to the top of the new entry inCHANGELOG.md. - Merge the pull request.
Write the summary just before merging. release-please rewrites the release pull request whenever something new lands on main, which drops the summary.