Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
name: Release Checklist Template
about: Checklist of versioning to create a taggable commit for Zebra
title: ''
labels:
assignees: ''
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 and use the last modified dates of each crate. Alternatively you can use the github compare tool and check the
main
branch against the last tag (Example).git diff --stat <previous-release-tag> origin/main
is also useful to see what's changed.zebrad
crate version in thezebra-network
user agent string(currently the constant
USER_AGENT
inzebra-network/src/constants.rs
)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
PRE-RELEASE
version for the crate.Optionally, if a
MINOR
feature pre-release breaksMAJOR
API compatibility:MAJOR
version, and reset all the other versions to zeroUnstable Crates
Unstable versions have a
MAJOR
version of zero. For example:0.1.0
MINOR
version for breaking changesStable Crates
For example:
1.0.0
Increment the first version component in this list, and reset the other components to zero:
Version Locations
Once you know which versions you want to increment, you can find them in the:
Cargo.toml
sCargo.toml
szebra-network
protocol user agent: https://github.com/ZcashFoundation/zebra/blob/main/zebra-network/src/constants.rsREADME.md
Cargo.lock
: automatically generated bycargo build
Merge all these version increments as one commit, by squashing and rebasing the PR onto the main branch.
After you have your changes pushed start a PR with them using this template by adding
&template=release-checklist.md
to the comparing url (Example).Version Tooling
You can use
fastmod
to interactively find and replace versions.For example, for
zebra-1.0.0-alpha.12
, we did:Reviewing Version Bump Pull Requests
Check for missed changes by going to:
https://github.com/ZcashFoundation/zebra/tree/<commit-hash>/
Where
<commit-hash>
is the hash of the last commit in the version bump PR.If any Zebra or Tower crates have commit messages that are not a version bump, we have missed an update.
Also check for crates that depend on crates that have changed. They should get a version bump as well.
Initial Testing
cargo install
command in works. Usee.g.
cargo install --locked --path zebrad
.Change Log
Important: Any merge into
main
deletes any edits to the draft changelog. Once you are ready to tag a release, copy the draft changelog intoCHANGELOG.md
.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:
CHANGELOG.md
CHANGELOG.md
Change Categories
From "Keep a Changelog":
Added
for new features.Changed
for changes in existing functionality.Deprecated
for soon-to-be removed features.Removed
for now removed features.Fixed
for any bug fixes.Security
in case of vulnerabilities.After merging the version update PR
CHANGELOG.md
and push any updates if necessaryCHANGELOG.md
as "Ready for Review"Zebra
followed by the version tag, for example:Zebra 1.0.0-alpha.0
1.0.0-alpha.0
main
branchFinal Testing
cargo install
command inREADME.md
works (--git
behaves a bit differently to--path
)If the build fails after tagging:
README.md
with a new git tagCHANGELOG.md
with details about the fix