Merged
Conversation
Contributor
Author
Excluded TODO: put this in a PR comment, not the CHANGELOG
Excluded manually:
|
Member
|
#10398 fixes the failing CI. |
upbqdn
reviewed
Mar 12, 2026
upbqdn
reviewed
Mar 12, 2026
upbqdn
reviewed
Mar 12, 2026
Member
There was a problem hiding this comment.
The changelogs look good. It might be worth changing "Breaking Changes" to "Changed" for consistency with what we already have.
It would also be good to have @conradoplg's review of them.
conradoplg
previously requested changes
Mar 12, 2026
Co-authored-by: Marek <m@rek.onl> Co-authored-by: Conrado <conradoplg@gmail.com>
Co-authored-by: Conrado <conrado@zfnd.org>
requested changes not needed in the end
mpguerra
approved these changes
Mar 13, 2026
40 tasks
Contributor
Merge Queue Status
This pull request spent 2 minutes 26 seconds in the queue, including 1 second running CI. Required conditions to merge
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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 to create and publish a Zebra release'
title: 'Release Zebra (version)'
labels: 'A-release, C-exclude-from-changelog, P-Critical 🚑'
assignees: ''
Prepare for the Release
Checkpoints
For performance and security, we want to update the Zebra checkpoints in every release.
Missed Dependency Updates
Sometimes
dependabotmisses some dependency updates, or we accidentally turned them off.This step can be skipped if there is a large pending dependency upgrade. (For example, shared ECC crates.)
Here's how we make sure we got everything:
cargo updateon the latestmainbranch, and keep the outputdeny.tomlcargo updateto that PR as a commentSummarise Release Changes
These steps can be done a few days before the release, in the same PR:
Change Log
Important: Any merge into
maindeletes any edits to the draft changelog.Once you are ready to tag a release, copy the draft changelog into
CHANGELOG.md.We use the Release Drafter workflow to automatically create a draft changelog. We follow the Keep a Changelog format.
To create the final change log:
changelog into
CHANGELOG.md(there can be multiple draft releases)README
README updates can be skipped for urgent releases.
Update the README to:
Check for changes in the
Dockerfilesince the last tag:git diff <previous-release-tag> docker/Dockerfile.Cargo.tomlsYou can use a command like:
Create the Release PR
for example:
bump-v1.0.0- this needs to be different to the tag name&template=release-checklist.mdto the comparing url (Example).batchedqueue using Mergify.Criticalpriority, so they go in theurgentMergify queue.do-not-merge, because Mergify checks approved PRs against every commit, even when a queue is frozen.A-releasetag to the release pull request in order for thecheck-no-git-dependenciesto run.Zebra git sources dependencies
check-no-git-dependenciescheck passes.This check runs automatically on pull requests with the
A-releaselabel. It must pass for crates to be published to crates.io. If the check fails, you should either halt the release process or proceed with the understanding that the crates will not be published on crates.io.Update Versions and End of Support
Update Zebra Version
Zebra follows semantic versioning. Semantic versions look like: MAJOR.MINOR.PATCH[-TAG.PRE-RELEASE]
Choose a release level for
zebrad. Release levels are based on user-visible changes from the changelog:majorreleasesminorreleasespatchreleaseUpdate Crate Versions and Crate Change Logs
If you're publishing crates for the first time, log in to crates.io,
and make sure you're a member of owners group.
Check that the release will work:
git diff --stat <previous_tag>and enumerate the crates that had changes.
semver-checks:cargo +stable install cargo-semver-checks --lockedpublic-api:cargo +stable install cargo-public-api --lockedsemver-checksto list APIchanges:
cargo semver-checks -p <crate> --default-features. If there arebreaking API changes, do a major release, or try to revert the API change
if it was accidental. Otherwise do a minor or patch release depending on
whether a new API was added. Note that
semver-checkswon't workif the previous realase was yanked; you will have to determine the
type of release manually.
CHANGELOG.mdlisting the API changes or otherrelevant information for a crate consumer. Use
public-apito list allAPI changes:
cargo public-api diff latest -p <crate> -sss. You can usee.g. copilot to turn it into a human-readable list, e.g. (write the output
to
api.txtbeforehand):copilot -p "Transform @api.txt which is a API diff into a human-readable description of the API changes. Be terse. Write output api-readable.txt. Use backtick quotes for identifiers. Use '### Breaking Changes' header for changes and removals, and '### Added' for additions. Make each item start with a verb e.g, Added, Changed" --allow-tool writeIt might also make sense to copy entries from the
zebradchangelog.Update End of Support
The end of support height is calculated from the current blockchain height:
ESTIMATED_RELEASE_HEIGHTinend_of_support.rswith the height you estimate the release will be tagged.Optional: calculate the release tagging height
1152blocks for each day until the release1152 * 3to the current Mainnet block heightUpdate the Release PR
Publish the Zebra Release
Create the GitHub Pre-Release
for example:
v1.0.0mainbranchZebrafollowed by the version tag,for example:
Zebra 1.0.0starting just after the title
## [Zebra ...of the current version being released,and ending just before the title of the previous release.
Test the Pre-Release
main, and the quick tests have passed:Publish Release
Publish Crates
cargo loginthe repo, to avoid accidentally publishing files like e.g. logs that might
be lingering around
have been changed, but keep their overall order:
crates.io:cargo install --locked --force --version <version> zebrad && ~/.cargo/bin/zebradand put the output in a comment on the PR.
Publish Docker Images
batchedqueue using Mergify.do-not-mergefrom the PRs you added it toRelease Failures
If building or running fails after tagging:
Tag a new release, following these instructions...
patchreleaseCHANGELOG.mdwith details about the fix