Skip to content

maintenance notes release

Lennart Spitzner edited this page Jun 20, 2019 · 2 revisions

Steps to a Release

Before

  • Ideally want all CI checks green, even the allowed-to-fail ones (this should include making sure all deps are on stackage).
  • Revisit open PRs
  • Revisit issues marked as revisit-before-next-release
  • Consider the PVP in respect to brittany-the-library to decide on next version number. Feel free to bump the B in A.B.C.D if there are significant changes in functionality, even if interface is unchanged.
  • Update copyright as necessary. Copyright hides in a) brittany.cabal b) Readme.md c) the executable, in the --version output.
  • Write the changelog (look at git log since last release) Look out for two special kinds of changes:
    • Anything that makes layouting work differently than before without opt-in
    • Changes to the config file
  • Prepare announcement
  • Make sure the current master and release branches are strictly behind HEAD.

Upload

This assumes that we still do the upload manually, not via CI.

  • Make sure you are at the correct commit that is green in CI, working dir clean
  • Use cabal sdist
  • Tag the commit; if necessary fast-forward master and release branches.
  • Upload directly; doing a candidate upload should not be necessary and usually does not help. Unless maybe to check layouting of the README on hackage.
  • push the tag, master, release to origin.

After

  • Send announcement to [email protected], reddit/r/haskell.
  • Update stackage build-contraints.yaml as necessary.
  • Update the brittany backend running on hexagoxel.de/brittany.

For a pure x-revision (less restrictive upper bound)

  • Apply the changes to brittany.cabal on a testing branch
  • If all green, merge (with ff) into release branch.
  • Tag the commit.
  • Publish the new x-revision to hackage.
  • Merge release branch into master.

If something goes wrong

  • Add a new x-revision to the relevant uploaded package, setting bound base<0.
  • Fix things, try again.