docs/src/how-to-release.md
This is my checklist for making new releases.
In this example I am using version 6.2.0 to 6.3.0; of course that will change for subsequent revisions.
Much of the mechanical work below is automated by tools/release.sh, which has three subcommands mirroring the checklist:
./tools/release.sh v6.3.0 pre-release --notes-file NOTES.md -- version bumps, make dev, commit/push, release tarball, SRPM, and GitHub pre-release with assets uploaded../tools/release.sh v6.3.0 docs -- creates the 6.3.0 docs branch and edits docs/mkdocs.yml. Refuses to run while the GitHub release is still marked pre-release../tools/release.sh v6.3.0 afterwork -- flips pkg/version/version.go back to 6.3.0-dev, commits/pushes, and prints the brew/macports/ReadTheDocs reminders with a pre-filled brew bump-formula-pr command.rpmbuild is mandatory for pre-release (the SRPM is a required release artifact); rpmlint is optional and is run only if installed. The ReadTheDocs admin steps and the flip from pre-release to public remain manual. Each subcommand is idempotent, so a partial run can be re-invoked safely.
Update version found in mlr --version and man mlr:
pkg/version/version.go from 6.2.0-dev to 6.3.0.miller.spec: Version, and changelog entrymake dev in the Miller repo base directorymlr; the second runs mlr to create manpage.txt; the third includes manpage.txt into one of its outputs.If Go version is being updated: edit all three of
go.mod.github/workflows/go.yml.github/workflows/release.ymlCreate the release tarball:
make release_tarballmiller-6.3.0.tar.gz which we'll upload to GitHub, the URL of which will be in our miller.specCreate the GitHub release tag:
v in v6.3.0main) PR commit containing the new version, or, main after that PR is merged back to main. (Otherwise, the release will be tagging the commit before the changes, and mlr version will not show the new release number.)mlr version prints what you expect -- else, restart this process. MacOS: xattr -d com.apple.quarantine ./mlr first.Build the release-specific docs:
v6.3.0 which is correct. Here we'll create a branch named 6.3.0 which is also correct.6.3.0 (not v6.3.0). Locally: git checkout -b 6.3.0, then git push.docs/mkdocs.yml, replacing "Miller Dev Documentation" with "Miller 6.3.0 Documentation". Commit and push.Notify:
Submit brew pull request; notify any other distros which don't appear to have autoupdated since the previous release (notes below)
Similarly for macports: https://github.com/macports/macports-ports/blob/master/textproc/miller/Portfile
See also README-versions.md -- distros usually catch up over time but some contacts/pings never hurt to kick-start processes after owners move on from a project they started.
Social-media updates.
Brew notes:
brew bump-formula-pr --force --strict miller --url https://github.com/johnkerl/miller/releases/download/v6.2.0/miller-6.2.0.tar.gz --sha256 xxx with xxx from shasum -a 256 miller-6.2.0.tar.gz.Afterwork:
pkg/version/version.go to change version from 6.3.0 to 6.3.0-dev.make dev