You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
@@ -16,7 +16,7 @@ They can be skipped for urgent releases.
16
16
17
17
To check consensus correctness, we want to test that the state format is valid after a full sync. (Format upgrades are tested in CI on each PR.)
18
18
19
-
-[ ] Make sure there has been [at least one successful full sync test](https://github.com/ZcashFoundation/zebra/actions/workflows/ci-integration-tests-gcp.yml?query=event%3Aschedule) since the last state change, or
19
+
-[ ] Make sure there has been [at least one successful full sync test](https://github.com/ZcashFoundation/zebra/actions/workflows/ci-tests.yml?query=event%3Aschedule) since the last state change, or
20
20
-[ ] Start a manual workflow run with a Zebra and `lightwalletd` full sync.
21
21
22
22
State format changes can be made in `zebra-state` or `zebra-chain`. The state format can be changed by data that is sent to the state, data created within the state using `zebra-chain`, or serialization formats in `zebra-state` or `zebra-chain`.
Copy file name to clipboardExpand all lines: .github/ISSUE_TEMPLATE/usability_testing_plan.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -31,7 +31,7 @@ assignees: ''
31
31
32
32
### Method
33
33
34
-
<!-- Explain whether the tests will be co-located or reomte, moderated or unmoderated, and who will attend the sessions (e.g a moderator and a note-taker) -->
34
+
<!-- Explain whether the tests will be co-located or remote, moderated or unmoderated, and who will attend the sessions (e.g a moderator and a note-taker) -->
35
35
36
36
### Test environment, equipment and logistics
37
37
@@ -56,7 +56,7 @@ assignees: ''
56
56
57
57
## Session Outline and timing
58
58
59
-
<!-- The following sections provide some space to plan out the script and and tasks for your participants -->
59
+
<!-- The following sections provide some space to plan out the script and tasks for your participants -->
A hotfix release should only be created when a bug or critical issue is discovered in an existing release, and waiting for the next scheduled release is impractical or unacceptable.
11
+
12
+
## Create the Release PR
13
+
14
+
-[ ] Create a branch to fix the issue based on the tag of the release being fixed (not the main branch).
15
+
for example: `hotfix-v2.3.1` - this needs to be different to the tag name
16
+
-[ ] Make the required changes
17
+
-[ ] Create a hotfix release PR by adding `&template=hotfix-release-checklist.md` to the comparing url ([Example](https://github.com/ZcashFoundation/zebra/compare/bump-v1.0.0?expand=1&template=hotfix-release-checklist.md)).
18
+
-[ ] Add the `C-exclude-from-changelog` label so that the PR is omitted from the next release changelog
19
+
-[ ] Add the `A-release` tag to the release pull request in order for the `check_no_git_refs_in_cargo_lock` to run.
20
+
-[ ] Ensure the `check_no_git_refs_in_cargo_lock` check passes.
21
+
-[ ] Add a changelog entry for the release summarizing user-visible changes.
22
+
23
+
## Update Versions
24
+
25
+
The release level for a hotfix should always follow semantic versioning as a `patch` release.
26
+
27
+
<details>
28
+
<summary>Update crate versions, commit the changes to the release branch, and do a release dry-run:</summary>
29
+
30
+
```sh
31
+
# Update everything except for alpha crates and zebrad:
-[ ] Wait until the [pre-release deployment machines have successfully launched](https://github.com/ZcashFoundation/zebra/actions/workflows/cd-deploy-nodes-gcp.yml?query=event%3Arelease)
69
+
70
+
## Publish Release
71
+
72
+
-[ ][Publish the release to GitHub](https://github.com/ZcashFoundation/zebra/releases) by disabling 'pre-release', then clicking "Set as the latest release"
-[ ] Wait for the [the Docker images to be published successfully](https://github.com/ZcashFoundation/zebra/actions/workflows/release-binaries.yml?query=event%3Arelease).
87
+
-[ ] Wait for the new tag in the [dockerhub zebra space](https://hub.docker.com/r/zfnd/zebra/tags)
88
+
89
+
## Merge hotfix into main
90
+
91
+
-[ ] Review and merge the hotfix branch into the main branch. The changes and the update to the changelog must be included in the next release from main as well.
92
+
-[ ] If there are conflicts between the hotfix branch and main, the conflicts should be resolved after the hotfix release is tagged and published.
93
+
94
+
## Release Failures
95
+
96
+
If building or running fails after tagging:
97
+
98
+
<details>
99
+
1. Create a new hotfix release, starting from the top of this document.
-[ ] Make sure there has been [at least one successful full sync test](https://github.com/ZcashFoundation/zebra/actions/workflows/ci-integration-tests-gcp.yml?query=event%3Aschedule) since the last state change, or start a manual full sync.
13
-
-[ ] Make sure the PRs with the new checkpoint hashes and missed dependencies are already merged.
14
-
(See the release ticket checklist for details)
12
+
-[ ] Make sure there has been [at least one successful full sync test in the main branch](https://github.com/ZcashFoundation/zebra/actions/workflows/ci-tests.yml?query=branch%3Amain) since the last state change, or start a manual full sync.
15
13
14
+
# Checkpoints
15
+
16
+
For performance and security, we want to update the Zebra checkpoints in every release.
17
+
-[ ] You can copy the latest checkpoints from CI by following [the zebra-checkpoints README](https://github.com/ZcashFoundation/zebra/blob/main/zebra-utils/README.md#zebra-checkpoints).
18
+
19
+
# Missed Dependency Updates
20
+
21
+
Sometimes `dependabot` misses some dependency updates, or we accidentally turned them off.
22
+
23
+
This step can be skipped if there is a large pending dependency upgrade. (For example, shared ECC crates.)
24
+
25
+
Here's how we make sure we got everything:
26
+
-[ ] Run `cargo update` on the latest `main` branch, and keep the output
27
+
-[ ] If needed, [add duplicate dependency exceptions to deny.toml](https://github.com/ZcashFoundation/zebra/blob/main/book/src/dev/continuous-integration.md#fixing-duplicate-dependencies-in-check-denytoml-bans)
28
+
-[ ] If needed, remove resolved duplicate dependencies from `deny.toml`
29
+
-[ ] Open a separate PR with the changes
30
+
-[ ] Add the output of `cargo update` to that PR as a comment
16
31
17
32
# Summarise Release Changes
18
33
@@ -26,7 +41,9 @@ Once you are ready to tag a release, copy the draft changelog into `CHANGELOG.md
26
41
We use [the Release Drafter workflow](https://github.com/marketplace/actions/release-drafter) to automatically create a [draft changelog](https://github.com/ZcashFoundation/zebra/releases). We follow the [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) format.
27
42
28
43
To create the final change log:
29
-
-[ ] Copy the **latest** draft changelog into `CHANGELOG.md` (there can be multiple draft releases)
44
+
-[ ] Copy the [**latest** draft
45
+
changelog](https://github.com/ZcashFoundation/zebra/releases) into
46
+
`CHANGELOG.md` (there can be multiple draft releases)
30
47
-[ ] Delete any trivial changes
31
48
-[ ] Put the list of deleted changelog entries in a PR comment to make reviewing easier
-[ ] Freeze the [`batched` queue](https://dashboard.mergify.com/github/ZcashFoundation/repo/zebra/queues) using Mergify.
58
75
-[ ] Mark all the release PRs as `Critical` priority, so they go in the `urgent` Mergify queue.
59
76
-[ ] Mark all non-release PRs with `do-not-merge`, because Mergify checks approved PRs against every commit, even when a queue is frozen.
77
+
-[ ] Add the `A-release` tag to the release pull request in order for the `check-no-git-dependencies` to run.
78
+
79
+
## Zebra git sources dependencies
60
80
81
+
-[ ] Ensure the `check-no-git-dependencies` check passes.
82
+
83
+
This check runs automatically on pull requests with the `A-release` label. 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.
61
84
62
85
# Update Versions and End of Support
63
86
@@ -72,38 +95,39 @@ Choose a release level for `zebrad`. Release levels are based on user-visible ch
72
95
- significant new features or behaviour changes; changes to RPCs, command-line, or configs; and deprecations or removals are `minor` releases
73
96
- otherwise, it is a `patch` release
74
97
75
-
Zebra's Rust API doesn't have any support or stability guarantees, so we keep all the `zebra-*` and `tower-*` crates on a beta `pre-release` version.
76
-
77
-
### Update Crate Versions
98
+
### Update Crate Versions and Crate Change Logs
78
99
79
-
If you're publishing crates for the first time, [log in to crates.io](https://github.com/ZcashFoundation/zebra/blob/doc-crate-own/book/src/dev/crate-owners.md#logging-in-to-cratesio),
100
+
If you're publishing crates for the first time, [log in to crates.io](https://zebra.zfnd.org/dev/crate-owners.html#logging-in-to-cratesio),
80
101
and make sure you're a member of owners group.
81
102
82
103
Check that the release will work:
83
-
-[ ] Update crate versions, commit the changes to the release branch, and do a release dry-run:
104
+
105
+
-[ ] Determine which crates require release. Run `git diff --stat <previous_tag>`
106
+
and enumerate the crates that had changes.
107
+
-[ ] Determine which type of release to make. Run `semver-checks` to list API
108
+
changes: `cargo semver-checks -p <crate> --default-features`. If there are
109
+
breaking API changes, do a major release, or try to revert the API change
110
+
if it was accidental. Otherwise do a minor or patch release depending on
111
+
whether a new API was added. Note that `semver-checks` won't work
112
+
if the previous realase was yanked; you will have to determine the
113
+
type of release manually.
114
+
-[ ] Update the crate `CHANGELOG.md` listing the API changes or other
115
+
relevant information for a crate consumer. It might make sense to copy
116
+
entries from the `zebrad` changelog.
117
+
-[ ] Update crate versions:
84
118
85
119
```sh
86
-
# Update everything except for alpha crates and zebrad:
Crate publishing is [automatically checked in CI](https://github.com/ZcashFoundation/zebra/actions/workflows/release-crates-io.yml) using "dry run" mode, however due to a bug in `cargo-release` we need to pass exact versions to the alpha crates:
99
-
100
-
-[ ] Update `zebra-scan` and `zebra-grpc` alpha crates in the [release-crates-dry-run workflow script](https://github.com/ZcashFoundation/zebra/blob/main/.github/workflows/scripts/release-crates-dry-run.sh)
101
-
-[ ] Push the above version changes to the release branch.
124
+
-[ ] Update the crate `CHANGELOG.md`
125
+
-[ ] Commit and push the above version changes to the release branch.
102
126
103
127
## Update End of Support
104
128
105
129
The end of support height is calculated from the current blockchain height:
106
-
-[ ] Find where the Zcash blockchain tip is now by using a [Zcash explorer](https://zcashblockexplorer.com/blocks) or other tool.
130
+
-[ ] Find where the Zcash blockchain tip is now by using a [Zcash Block Explorer](https://mainnet.zcashexplorer.app/) or other tool.
107
131
-[ ] Replace `ESTIMATED_RELEASE_HEIGHT` in [`end_of_support.rs`](https://github.com/ZcashFoundation/zebra/blob/main/zebrad/src/components/sync/end_of_support.rs) with the height you estimate the release will be tagged.
108
132
109
133
<details>
@@ -141,8 +165,7 @@ The end of support height is calculated from the current blockchain height:
141
165
## Test the Pre-Release
142
166
143
167
-[ ] Wait until the Docker binaries have been built on `main`, and the quick tests have passed:
-[ ] Wait until the [pre-release deployment machines have successfully launched](https://github.com/ZcashFoundation/zebra/actions/workflows/cd-deploy-nodes-gcp.yml?query=event%3Arelease)
147
170
148
171
## Publish Release
@@ -151,15 +174,25 @@ The end of support height is calculated from the current blockchain height:
-[ ] Wait for the [the Docker images to be published successfully](https://github.com/ZcashFoundation/zebra/actions/workflows/release-binaries.yml?query=event%3Arelease).
195
+
-[ ] Wait for the new tag in the [dockerhub zebra space](https://hub.docker.com/r/zfnd/zebra/tags)
163
196
-[ ] Un-freeze the [`batched` queue](https://dashboard.mergify.com/github/ZcashFoundation/repo/zebra/queues) using Mergify.
164
197
-[ ] Remove `do-not-merge` from the PRs you added it to
0 commit comments