From 2ee285b475bab0263466344efec95bcb262bf697 Mon Sep 17 00:00:00 2001 From: Julia Longtin Date: Sun, 24 Dec 2023 13:48:42 +0000 Subject: [PATCH] Add changelog and release process. (#14) * add a Changelog. * add a release process. --- CHANGELOG.md | 6 +++++ Release.md | 63 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 69 insertions(+) create mode 100644 CHANGELOG.md create mode 100644 Release.md diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..f2ba1f9 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,6 @@ +# Version [0.3.1.0](https://github.com/Haskell-Things/floating-bits/compare/v0.3.0.0...v0.3.1.0) (2023-12-23) + + * Changelog started. Previous release was `0.3.0.0`. + * Fixes compatibility with GHC 9.2 and 9.4. + * HLint can now be run against this code successfully. + diff --git a/Release.md b/Release.md new file mode 100644 index 0000000..6c932e6 --- /dev/null +++ b/Release.md @@ -0,0 +1,63 @@ +# Release Processes: + +Purpose of this document: to make sure we follow a consistent pattern, when making releases of floating-bits. + +## Version Logic: +1. The first digit is always 0. Maybe we'll change this when we're ready for the masses. ;) +2. The second digit changes with "major" releases. + * Major releases change: + * the Haskell interface (in a non-additive fashion) +3. The third digit changes with the "minor" releases. + * Minor releases DO NOT change: + * the Haskell interface (in a non-additive fashion) + * Minor releases may change anything else. +4. The fourth digit changes with the "trivial" releases. + * Trivial releases change nothing except the documentation. + + +## Tests for a Minor Release +1. Make sure 'cabal build' succeeds. +2. Make sure 'cabal test' succeeds. +3. Make sure 'cabal bench' succeeds. + +## Performing a release + +### Create a Release branch +On your git machine: +1. Run 'git checkout -b release/' +2. Update the Version field in floating-bits.cabal. +3. Update the Version in the README.md. +4. Change the most recent Version line in CHANGELOG.md from 'next', updating the following fields on that line. +5. Push the branch to github, and file a pull request. + +### Tagging a release +On your git machine: +``` +export VERSION= +git checkout master +git tag -a v$VERSION -m "Release $VERSION" +git push origin v$VERSION +``` + +### Publishing the release to GitHub + +1. Open Github. +2. Click on the 'Releases' link from the code page for the implicitcad repo. +3. Click on 'Draft a new release' +4. Select the tag created in the previous step. +5. Paste the CHANGELOG.md entries from this release into the release description. +6. Title the release 'Release ' +7. Click on 'Publish release' + +### Publishing the release to Hackage + +1. Use github's 'download zip' to download a zip of the package. +2. Extract it to a temporary directory +3. Move the container directory to floating-bits- +4. Make a tar file from it. make sure to add the --format=ustar option. + * tar --format=ustar -cvzf floating-bits-.tar.gz floating-bits-/ +5. Upload the package candidate to https://hackage.haskell.org/packages/candidates/upload +6. Look over the resulting page. +7. Scroll down to 'edit package information' +8. click on 'publish candidate' +9. hit the 'publish package' button.