Tablicious Release Checklist
Here’s the process for doing a Tablicious release.
- Run all the tests.
addpath(fullfile(getenv('HOME'),'repos', 'octave-tablicious', 'inst'))
__run_test_suite__ ({fullfile(getenv('HOME'),'/repos/octave-tablicious/inst')}, {})
tblish_test_tablicious
- Wouldn’t hurt to do
make clean && git status && make test
and manual-cleanup, just to be sure.
- Update the version info in the repo.
- Update the version number and date in
DESCRIPTION
.- Remove the
-SNAPSHOT
suffix from the version number.
- Remove the
- Update the
CHANGES.txt
file with the release date.- Use the current calendar date in UTC time, not your local time. Or use your local time; who really cares.
- And check that it has a complete change list for the release. This should be done as changes are committed, but we’re not great about that.
- Update the version number and date in
- Update the installation instructions in README to use the upcoming release tarball URL.
- Format is:
https://github.com/apjanke/octave-tablicious/releases/download/v<version>/tablicious-<version>.tar.gz
- As of 2024-10, this is just in the “Quick start” section.
- Format is:
- Update the generated doco.
- Regenerate the doco:
make doc; make gh-pages
- Make a versioned copy for this release:
ver=$(grep ^Version DESCRIPTION | cut -d ' ' -f 2); mkdir -p docs/release/v${ver}/user-guide; cd doc; cp -R html tablicious.html tablicious.pdf ../docs/release/v${ver}/user-guide
- What is wrong with you, Andrew? Make this a
make
target instead of a 200-character-long bash cut-and-paste command.
- What is wrong with you, Andrew? Make this a
- Add a section for the new release’s doco to
docs/index.md
, and update the links in the main paragraph to point to it.
- Regenerate the doco:
- Commit all the files changed by the above steps.
- Use form:
git add -A; git commit -a -m '[release] v<version>'
- Use form:
- Make sure your repo is clean:
git status
should show no local changes. - Run
make dist
first to make sure it works.- This has to be done after the commit, because it extracts from git history.
- Create a git tag and push it and the above changes to GitHub.
git tag v<version>; git push; git push --tags
- Create a new GitHub release from the tag.
- Just use
<version>
as the name for the release, notv<version>
orv <version>
. - Copy and paste the changes for this release from the
CHANGES.txt
file into the GitHub Release description field. - Upload the dist tarball as a file for the release.
- Just use
- Test installing the release using
pkg install
against the new release URL.- On macOS.
- On Ubuntu.
- sigh I suppose, on Windows.
- Do this by copy-and-pasting the
pkg install
example from the live README page on the GitHub repo. This makes sure the current install instructions are correct.- Don’t short-circuit this and just edit an entry from your Octave command history! Open GitHub in a browser and actually copy-and-paste it!
pkg test tablicious
should do it.
- Open development for next version
- Update version number and date in
DESCRIPTION
to next patch or minor version, as appropriate.- Include a
-SNAPSHOT
suffix to indicate this is a work in progress.
- Include a
- Add a section to
CHANGES.txt
for the new upcoming release, at the top. Use(unreleased)
for its release date. - Rebuild the doco
make doc; make gh-pages
git add -A; git commit -a -m 'Open development for next version'; git push
- Update version number and date in
- Close the GitHub Issues Milestone for this release.
- Create a new Milestone for the next release, if one doesn’t already exist.
- Announce the release.
- Update the OF packages index info in the gnu-octave/packages repo.
- Put in a PR to the
gnu-octave/packages
repo to updatepackages/tablicious.yaml
.- Add a new item to its
versions
section for this new release. - See example: Tablicious index update for 0.3.7 - 0.4.2.
- Add a new item to its
- Put in a PR to the
- Add a comment to the Tablicious News issue with a link to the new release.
- Post an announcement on the Savannah bug for datetime support if this is a significant release with respect to the date/time classes.
- Update the OF packages index info in the gnu-octave/packages repo.
If there were any problems following these instructions exactly as written, please report it as a bug.