Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Release Zebra 1.0.0-rc.0 #5383

Merged
merged 4 commits into from
Oct 12, 2022
Merged

Release Zebra 1.0.0-rc.0 #5383

merged 4 commits into from
Oct 12, 2022

Conversation

arya2
Copy link
Contributor

@arya2 arya2 commented Oct 11, 2022

Close #3050

Versioning

How to Increment Versions

Zebra follows semantic versioning.
Semantic versions look like: MAJOR.MINOR.PATCH[-TAG.PRE-RELEASE]

The draft zebrad changelog will have an automatic version bump. This version is based on the labels on the PRs in the release.

Check that the automatic zebrad version increment is correct:

If we're releasing a mainnet network upgrade, it is a major release:

  1. Increment the major version of all the Zebra crates.
  2. Increment the patch version of the tower crates.

If we're not releasing a mainnet network upgrade, check for features, major changes, deprecations, and removals. If this release has any, it is a minor release:

  1. Increment the minor version of zebrad.
  2. Increment the pre-release version of the other crates.
  3. Increment the patch version of the tower crates.

Otherwise, it is a patch release:

  1. Increment the patch version of zebrad.
  2. Increment the pre-release version of the other crates.
  3. Increment the patch version of the tower crates.

Zebra's Rust API is not stable or supported, so we keep all the crates on the same beta pre-release version.

Version Locations

Once you know which versions you want to increment, you can find them in the:

zebrad (rc):

crates (pre-release):

  • zebra-* Cargo.tomls

tower (patch):

  • tower-* Cargo.tomls

auto-generated:

  • Cargo.lock: run cargo build after updating all the Cargo.tomls

Version Tooling

You can use fastmod to interactively find and replace versions.

For example, you can do something like:

fastmod --extensions rs,toml,md --fixed-strings '1.0.0-rc.0' '1.0.0-rc.1' zebrad README.md book/src/user/install.md zebra-network/src/constants.rs
fastmod --extensions rs,toml,md --fixed-strings '1.0.0-beta.15' '1.0.0-beta.16' zebra-*
fastmod --extensions rs,toml,md --fixed-strings '0.2.30' '0.2.31' tower-batch tower-fallback

If you use fastmod, don't update versions in CHANGELOG.md.

README

Update the README to:

  • Remove any "Known Issues" that have been fixed
  • Update the "Build and Run Instructions" with any new dependencies.
    Check for changes in the Dockerfile since the last tag: git diff <previous-release-tag> docker/Dockerfile.

Checkpoints

With every release and for performance reasons, we want to update the zebra checkpoints. More information on how to do this can be found in the zebra-checkpoints README.

To do this you will need a synchronized zcashd node. You can request help from other zebra team members to submit this PR if you can't make it yourself at the moment of the release.

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 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:

  • Copy the draft changelog into CHANGELOG.md
  • Delete any trivial changes. Keep the list of those, to include in the PR
  • 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

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.

Create the Release

Create the Release PR

After you have the version increments, the updated checkpoints and the updated changelog:

  • Make sure the PR with the new checkpoint hashes is already merged, or make it part of the changelog PR
  • Push the version increments and the updated changelog into a branch
    (name suggestion, example: v100-rc0-release)
  • Create a release PR by adding &template=release-checklist.md to the
    comparing url (Example).
    • Add the list of deleted changelog entries as a comment to make reviewing easier.
  • Turn on Merge Freeze.
  • Once the PR is ready to be merged, unfreeze it here.
    Do not unfreeze the whole repository.

Create the Release

  • Once the PR has been merged, create a new release using the draft release as a base,
    by clicking the Edit icon in the draft release
  • Set the tag name to the version tag,
    for example: v1.0.0-rc.0
  • Set the release to target the main branch
  • Set the release title to Zebra followed by the version tag,
    for example: Zebra 1.0.0-rc.0
  • Replace the prepopulated draft changelog in the release description by the final
    changelog you created; starting just after the title ## [Zebra ... of
    the current version being released, and ending just before the title of
    the previous release.
  • Mark the release as 'pre-release', until it has been built and tested
  • Publish the pre-release to GitHub using "Publish Release"

Binary Testing

If building or running fails after tagging:

  1. Fix the bug that caused the failure
  2. Increment versions again, following these instructions from the start
  3. Update the code and documentation with a new git tag
  4. Update CHANGELOG.md with details about the fix
  5. Tag a new release

@arya2 arya2 added P-Medium ⚡ C-trivial Category: A trivial change that is not worth mentioning in the CHANGELOG labels Oct 11, 2022
@arya2 arya2 self-assigned this Oct 11, 2022
@arya2 arya2 changed the title Release Zebra 1.0.0-rc.0 Release Zebra 1.0.0-rc.0 crate version updates Oct 11, 2022
@codecov
Copy link

codecov bot commented Oct 11, 2022

Codecov Report

Merging #5383 (4ee9b42) into main (a28350e) will decrease coverage by 0.05%.
The diff coverage is n/a.

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #5383      +/-   ##
==========================================
- Coverage   79.16%   79.11%   -0.06%     
==========================================
  Files         308      308              
  Lines       39752    39752              
==========================================
- Hits        31470    31449      -21     
- Misses       8282     8303      +21     

@teor2345 teor2345 self-assigned this Oct 11, 2022
@teor2345
Copy link
Contributor

fake_peer_set::mempool_requests_for_transactions failed with:

internal error: entered unreachable code: MempoolTransactionIds requests should always respond Ok(Vec<UnminedTxId>), got Ok(Nil)

https://github.com/ZcashFoundation/zebra/actions/runs/3229701831/jobs/5287294141#step:14:9950

@teor2345
Copy link
Contributor

(This isn't a release blocker.)

@arya2 arya2 changed the title Release Zebra 1.0.0-rc.0 crate version updates Release Zebra 1.0.0-rc.0 Oct 11, 2022
@teor2345
Copy link
Contributor

teor2345 commented Oct 11, 2022

Removed changelog entries:

  • build(deps): Bump metrics and metrics-exporter-prometheus (#5256)
  • build(deps): bump actions/checkout from 3.0.2 to 3.1.0 (#5329)
  • build(deps): bump actions/github-script from 6.2.0 to 6.3.0 (#5271)
  • build(deps): bump actions/github-script from 6.3.0 to 6.3.1 (#5317)
  • build(deps): bump codecov/codecov-action from 3.1.0 to 3.1.1 (#5205)
  • build(deps): bump color-eyre from 0.6.1 to 0.6.2 (#5220)
  • build(deps): bump inferno from 0.11.7 to 0.11.8 (#5290)
  • build(deps): bump inferno from 0.11.8 to 0.11.9 (#5306)
  • build(deps): bump insta from 1.19.1 to 1.20.0 (#5198)
  • build(deps): bump insta from 1.20.0 to 1.21.0 (#5291)
  • build(deps): bump itertools from 0.10.4 to 0.10.5 (#5209)
  • build(deps): bump once_cell from 1.14.0 to 1.15.0 (#5216)
  • build(deps): bump reqwest from 0.11.11 to 0.11.12 (#5215)
  • build(deps): bump reviewdog/action-actionlint from 1.29.0 to 1.30.0 (#5195)
  • build(deps): bump reviewdog/action-actionlint from 1.30.0 to 1.31.0 (#5238)
  • build(deps): bump reviewdog/action-actionlint from 1.31.0 to 1.32.0 (#5318)
  • build(deps): bump reviewdog/action-actionlint from 1.32.0 to 1.33.0 (#5368)
  • build(deps): bump ripemd from 0.1.1 to 0.1.3 (#5248)
  • build(deps): bump serde from 1.0.144 to 1.0.145 (#5247)
  • build(deps): bump thiserror from 1.0.35 to 1.0.37 (#5285)
  • build(deps): bump tj-actions/changed-files from 29.0.7 to 31.0.1 (#5254)
  • build(deps): bump tj-actions/changed-files from 29.0.7 to 32.0.0 (#5354)
  • build(deps): bump tokio from 1.21.1 to 1.21.2 (#5289)
  • build(deps): bump tokio-stream from 0.1.9 to 0.1.10 (#5197)
  • build(deps): bump tracing from 0.1.31 to 0.1.35 (#5225)
  • build(deps): bump tracing from 0.1.35 to 0.1.36 (#5273)
  • build(deps): bump tracing-subscriber from 0.3.11 to 0.3.15 (#5223)
  • build(deps): bump uint from 0.9.3 to 0.9.4 (#5208)
  • build(deps): bump w9jds/firebase-action from 11.5.0 to 11.9.0 (#5196)
  • change(ci): Combine high and low Mergify queues into a batched queue (#5201)
  • change(ci): Create a new cached state image every 12 hours (#5191)
  • change(dev): Add CHANGELOG checks to PR review template (#5202)
  • change(doc): Require Rust 1.63 in the README (#5359)
  • change(release): Automatically split CHANGELOG entries into categories (#5203)
  • ci(deploy): retry gcloud ssh connections if it fails (#5292)
  • ci(lint): do not fail linter on push events (#5331)
  • ci(ssh): connect using ssh-compute action by Google (#5330)
  • ci(ssh): revert using ssh-compute action & increase sshd connection limit (#5367)
  • doc(ci): Explain how to fix Mergify and Zcash parameter download failures (#5240)
  • doc(ci): Fix incorrect docs about Docker build cache order (#5190)
  • doc(ci): List temporary CI errors that should be retried (#5281)
  • doc(release): Update release template for Docker releases (#5193)
  • fix(build): Prefer the PR cache for docker images (#5282)
  • fix(ci): Comment out empty major version list in release drafter (#5278)
  • fix(ci): Delete Google Cloud test instances after 3 days (#5192)
  • fix(ci): Reduce false positives for the C-trivial label (#5309)
  • fix(ci): Revert "bump tj-actions/changed-files from 29.0.7 to 31.0.1" to fix workflow configuration errors (#5264)
  • fix(clippy): Allow a clippy::bool_to_int_with_if (#5300)
  • fix(clippy): actually fix clippy::bool_to_int_with_if (#5350)
  • fix(docker): Add edge tag to Docker images, document when latest tag will appear (#5312)
  • fix(release): Fix the config for release-drafter (#5275)
  • fix(test): Add a timeout to the non_blocking_logger test (#5325)
  • fix(test): Allow more time between thread CPU slices in db_init_outside_future_executor (#5310)
  • fix(test): Wait for zebrad and lightwalletd to reach the tip in tests, to improve test coverage (#5164)
  • fix(test): resolve a timing issue in mempool test (#5322)
  • fix(test): resolve a timing issue in mempool test (#5347)

@teor2345 teor2345 marked this pull request as ready for review October 11, 2022 22:30
@teor2345 teor2345 requested review from a team as code owners October 11, 2022 22:30
@teor2345 teor2345 requested review from upbqdn and teor2345 and removed request for a team October 11, 2022 22:30
@teor2345
Copy link
Contributor

We have the changelog and version bumps, so I think we're ready for review here

CHANGELOG.md Show resolved Hide resolved
CHANGELOG.md Outdated Show resolved Hide resolved
teor2345
teor2345 previously approved these changes Oct 11, 2022
Copy link
Contributor

@teor2345 teor2345 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm happy with the version bumps, but I need someone to review the changelog.

Copy link
Contributor Author

@arya2 arya2 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Aside from the small typo and perhaps how we want to explain the release candidate status, the changelog looks good to me.

CHANGELOG.md Show resolved Hide resolved
Copy link
Contributor

@teor2345 teor2345 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's go!

@mergify mergify bot merged commit a4cb835 into main Oct 12, 2022
@mergify mergify bot deleted the v1.0.0-rc.0-release branch October 12, 2022 01:17
@teor2345
Copy link
Contributor

@arya2 feel free to turn off merge freeze once you've tested the docker image.

(I'm not in front of a device that can do that right now.)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
C-trivial Category: A trivial change that is not worth mentioning in the CHANGELOG
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Tag Zebra 1.0.0-rc.0 stable release candidate
2 participants