Release Process
=begin rakudoc
Overview
Qwiratry releases are published in two places:
fez: the Raku module ecosystem release.GitHub: the source archive, tag, and release notes.
Do the shared prep once, then publish to fez and GitHub from the same clean commit and version tag.
Prep Steps
1. Confirm the working tree is clean.
git status
Release prep should happen from a committed working tree. If git status is
not clean, finish or intentionally discard those changes before continuing.
2. Choose the release version and update
META6.json.
The version field is the version fez will publish. Use a normal semver-style
version and make sure it has not already been published.
3. Run the test suite.
zef test .
4. Ensure there's a Changelog entry
...so that people know what happened.
5. Review changes since the previous release.
git log release-x.y.z..HEAD
git diff --stat release-x.y.z..HEAD
Use the log as the main release summary source. Use the diff against the previous release tag when you need to inspect implementation details.
6. Check the package metadata.
Confirm META6.json has the right name, auth, version,
description, depends, and provides entries.
7. Review the fez package.
fez review
raku tools/check-provides-in-package.raku
Check the files that will be uploaded and fix any metadata or packaging issues
before tagging. The package checker compares META6.json's provides
entries with Fez's dry-run bundle manifest, which catches ignored files before
they become broken release archives. To check an already-created archive, pass
--archive=sdist/name.tar.gz.
8. Test installation
zef install .
If it doesn't go, that also needs fixing
9. Confirm prep changes are committed.
git status
git diff
If testing, metadata checks, or fez review led to changes, commit them before
starting the release steps.
Release Steps
Fez Release Steps
1. Upload the release from the repository root.
fez upload
If this fails, try the following for more info:
fez --version
fez login
GitHub Release Steps
1. Tag the release commit.
git tag release-x.y.z
2. Push the release commit and tag.
git push && git push --tags
3. Extract release notes from the changelog.
raku docs/rakudoc/Developing/changelog-release-notes.raku x.y.z > /tmp/qwiratry-release-notes.md
4. Create the GitHub release from the tag.
gh release create release-x.y.z --title "Qwiratry x.y.z" --notes-file /tmp/qwiratry-release-notes.md
Release Verification
1. Verify fez can see the new release.
fez list Qwiratry
If fez list is unavailable or does not show the expected result, check the
module page or install from fez in a clean environment.
2. Verify the Github release.
gh release view release-x.y.z
Confirm the tag, title, notes, source archives, and published commit are correct.
After Release
Announce or document the release wherever project users expect updates.
Start the next development cycle by bumping or planning the next
META6.jsonversion only when the project chooses to track unreleased development versions.
=end rakudoc