3.6 KiB
| name | about | title | labels | assignees |
|---|---|---|---|---|
| Release Checklist Template | Checklist of versioning to create a taggable commit for Zebra |
Initial Testing
- After any changes, test that the
cargo installcommand inREADME.mdworks (use--pathinstead of--gitlocally)
Versioning
Which Crates to Increment
To check if any of the top-level crates need version increments, go to the zebra GitHub code page: https://github.com/ZcashFoundation/zebra
- Increment the crates that have new commits since the last version update
- Increment any crates that depend on crates that have changed
- Use the
zebradcrate version in thezebradapp code andzebra-networkuser agent - Use the latest git tag in
README.md
How to Increment Versions
Zebra follows semantic versioning.
Semantic versions look like:
MAJOR.MINOR.PATCH[-TAG.PRE-RELEASE]
Pre-Release Crates
Pre-Release versions have a TAG like "alpha" or "beta".
For example: "1.0.0-alpha.0"
- Increment the
PRE-RELEASEversion for the crate.
Optionally, if a MINOR feature pre-release breaks MAJOR API compatibility:
2. Increment the MAJOR version, and reset all the other versions to zero
Unstable Crates
Unstable versions have a MAJOR version of zero.
For example: "0.1.0"
- Follow stable crate versioning, but increment the
MINORversion for breaking changes
Stable Crates
For example: "1.0.0"
Increment the first version component in this list, and reset the other components to zero:
- MAJOR versions for breaking public API changes and removals
- check for types from dependencies that appear in the public API
- MINOR versions for new features
- PATCH versions for bug fixes
- includes dependency updates that don't impact the public API
Version Locations
Once you know which versions you want to increment, you can find them in the:
- zebra*
Cargo.tomls - tower-*
Cargo.tomls zebradapp code: https://github.com/ZcashFoundation/zebra/blob/main/zebrad/src/components/tracing/component.rszebra-networkprotocol user agent: https://github.com/ZcashFoundation/zebra/blob/main/zebra-network/src/constants.rsREADME.md
Merge all these version increments as one commit, by squashing and rebasing the PR onto the main branch.
Change Log
We follow the Keep a Changelog format.
We use the Release Drafter workflow to automatically create a draft changelog.
To create the final change log:
- Delete any trivial changes
- Combine duplicate changes
- Edit change descriptions so they are consistent, and make sense to non-developers
- Check the category for each change
- prefer the "Fix" category if you're not sure
- Point the GitHub changelog to the version increment commit
Change Categories
From "Keep a Changelog":
Addedfor new features.Changedfor changes in existing functionality.Deprecatedfor soon-to-be removed features.Removedfor now removed features.Fixedfor any bug fixes.Securityin case of vulnerabilities.
Final Testing
- After tagging the release, test that the exact
cargo installcommand works (--gitbehaves a bit differently to--path)
If the build fails after tagging:
- fix the build
- check if the fixes changed any extra crates, and do the required version increments
- update
README.mdwith a new git tag - tag another release