mirror of
https://github.com/Haskell-Things/ImplicitCAD.git
synced 2024-09-11 04:55:41 +03:00
3.3 KiB
3.3 KiB
Release Processes:
Purpose of this document: to make sure we follow a consistent pattern, when making releases of ImplicitCAD.
Version Logic:
- The first digit is always 0. Maybe we'll change this when we're ready for the masses. ;)
- The second digit changes with "major" releases.
- Major releases change:
- the CSG representation (the MD5sum of generated output files)
- the Haskell interface (in a non-additive fashion)
- or the SCAD interface (in a non-additive fashion)
- The third digit changes with the "minor" releases.
- Minor releases DO NOT change:
- the CSG representation (the MD5sum of generated output files)
- the Haskell interface (in a non-additive fashion)
- or the SCAD interface (in a non-additive fashion)
- Minor releases may change anything else.
- The fourth digit changes with the "trivial" releases.
- Trivial releases change nothing except the documentation.
Tests for a Minor Release
- make sure the output of the test-implicit binary is all green.
- make sure the output of the docgen executable hasn't changed too greatly since the last release.
- run
make docs
- examine the difference in the docs/escad.md
- make sure the output of the parser-bench binary does not show any unacceptable speed reductions.
- make sure the output of the Benchmark binary does not show any unacceptable speed reductions.
- make sure the md5sum of the stl files resulting from running 'make examples' have not changed.
Performing a release
Create a Release branch
git checkout -b release/<VERSION>
- update the Version field in implicit.cabal.
- update the Version in the README.md.
- change the most recent Version line in CHANGELOG.md from 'next', updating the following fields on that line.
- push the branch to github, and file a pull request.
Merge to master
In the github interface, after all of the tests are green, merge to the master branch.
Tagging a release
On your git machine:
export VERSION=<VERSION_NUMBER>
git checkout master
git tag -a v$VERSION -m "Release $VERSION"
git push origin v$VERSION
Publishing the release to GitHub
- Open Github.
- Click on the 'Releases' link from the code page for the implicitcad repo.
- Click on 'Draft a new release'
- Select the tag created in the previous step.
- Paste the CHANGELOG.md entries from this release into the release description.
- Title the release 'Release '
- Click on 'Publish release'
Publishing the release to Hackage
- Use github's 'download zip' to download a zip of the package.
- Extract it to a temporary directory
- Move the container directory to
implicit-<VERSION>
- Make a tar file from it. make sure to add the --format=ustar option.
tar --format=ustar -cvzf implicit-<VERSION>.tar.gz implicit-<VERSION>/
- Upload the package candidate to https://hackage.haskell.org/packages/candidates/upload
- Look over the resulting page.
- Scroll down to 'edit package information'
- click on 'publish candidate'
- hit the 'publish package' button.
Update ImplicitCAD.org
- Use the output of docgen to update implicitcad.org (FIXME: how?)
Re-Anchor the ChangeLog.
File a new PR for adding a clean '# Version next (202Y-MM-DD)' to the top of the Changelog, with a single empty bullet point.