Skip to content
Caleb Maclennan edited this page Dec 12, 2024 · 43 revisions
  1. Make sure the Test Suite passes. ⚠️

    If the current master branch is not passing any of the required remote CI tests or fails locally you should not be even starting the release steps.

    At this stage you are encouraged to use the make prerelease target at will to make sure everything runs as expected.

  2. Start clean. 🆕

    These steps are drastic but recommended. Don't run them if you have uncommitted work in your repository!

    git checkout master
    git fetch --all
    git reset --hard upstream/master
  3. Fetch the tooling used for cutting releases. 🔧

    You need this Javascript baggage to generate the ChangeLog and other stuff that will happen automatically while making the release. No you may not fake it by hand.

    npm install
  4. Make autoconf tools happy. 👢

    ./bootstrap.sh
    ./configure
  5. Cut the release. 🏷️

    This will bump the release version, update the ChangeLog, and tag the corresponding commit.

    make release-preview
    make release

    The release version number will be guessed automatically based on commit messages since the last release. To override this if the preview doesn't look good add RELTYPE=patch, RELTYPE=minor, or RELTYPE=major for other version bump types.

  6. Push tag. ⬆️

    Temporarily disable "include administrators" in master branch protection

    # Pushes both branch and tags at once
    git push upstream --tags :
  7. Update website. 📰

    • Copy PDF manual to website repository, symlink to latest, update link in menu, commit, push.
    • Copy changelog and massage the significant bits into a blog post about the release.
  8. Update any distros we can. 🔨

  9. Let the world know. 📢

    Twitter, etc.

  10. Pave the way for the next release. 🏁

    • Review milestones, move any postponed issues to next release, close current release, rename next *.x milestone to next version number, add new *.x milestone for non-planned issues.
  11. Eat cake. 🍰


See full release checklist for howto, this is just a checklist version:


Previous: release vX.Y.Z, checklist #NNNN. Packaging status

  • Shuffle any issues being put off to future milestones
  • Close all issues in current milestone (except this one)
  • Spring clean
    • Re-fetch tooling
  • Configure and build
  • Pass all tests
    • Remote CI
    • Local
  • Cut release
  • Push release commit & tag to master
  • Download release artifacts, GPG sign, and upload signatures
  • Publish release build to craties.io
  • Publish rusile library to craties.io
  • Update website
    • Copy and post manual, update 'latest' symlink and menu links
    • Copy changelog and prefix with a summary as a blog post
    • Tweak summary for gfm and edit into GitHub release notes
  • Update downstream distro packages
    • Arch Linux: extra/sile
    • Homebrew: Formula
    • NixOS: nixpkgs
      • Drop devel flag from any website examples that were using it
    • Ubuntu: ppa
    • Docker Hub: tags
    • GHCR: versions
    • openSUSE:
    • Fedora:
    • NetBSD:
    • Void Linux:
    • OpenBSD:
  • Bump downstream projects
    • FontProof (Docker image base plus CI matrix)
    • CaSILE (check, consider patch release)
  • Eat cake
Clone this wiki locally