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

v1.0.0-beta.14-release #5006

Merged
merged 13 commits into from
Aug 31, 2022
Merged

v1.0.0-beta.14-release #5006

merged 13 commits into from
Aug 31, 2022

Conversation

upbqdn
Copy link
Member

@upbqdn upbqdn commented Aug 30, 2022

Versioning

Which Crates to Increment

To check if any of the top-level crates need version increments:

  1. Go to the zebra GitHub code page: https://github.com/ZcashFoundation/zebra
  2. Check if the last commit was a Zebra version bump, or something else

Alternatively you can:

  • Use the github compare tool and check the main branch against the last tag (Example)
  • Use git diff --stat <previous-release-tag> origin/main

Once you know which crates have changed:

  • Increment the crates that have new commits since the last version update
  • Increment any crates that depend on crates that have changed
  • Keep a list of the crates that haven't been incremented, to include in the PR

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

  1. Increment the PRE-RELEASE version for the crate.

Unstable Crates

Unstable versions have a MAJOR version of zero. For example: 0.1.0

  1. Follow stable crate versioning, but increment the MINOR version 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:

  1. MAJOR versions for breaking public API changes and removals
    • check for types from dependencies that appear in the public API
  2. MINOR versions for new features
  3. PATCH versions for bug fixes
    • includes dependency updates that don't impact the public API

Reviewing Version Bumps

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.

Version Locations

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

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-beta.11' '1.0.0-beta.12'
fastmod --extensions rs,toml,md --fixed-strings '0.2.26' '0.2.27' tower-batch tower-fallback

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

README

We should 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 follow the Keep a Changelog format.

We use the Release Drafter workflow to automatically create a draft changelog.

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.
  • Push the version increments and the updated changelog into a branch
    (name suggestion, example: v1.0.0-alpha.0-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.
    • Also add the list of not-bumped crates as a comment (can use the same comment as the previous one).
  • 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-alpha.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-alpha.0
  • Copy the final changelog of this release to the release description
    (starting just after the title ## [Zebra ...)
  • Mark the release as 'pre-release' (until we are no longer alpha/beta)
  • Publish the release

Final Testing

  • After tagging the release, test that the exact cargo install command in README.md works
    (--git behaves a bit differently to --path)
  • Turn off Merge Freeze for the whole repository

If the build fails after tagging:

  1. Fix the build
  2. Increment versions again, following these instructions from the start
  3. Update README.md with a new git tag
  4. Update CHANGELOG.md with details about the fix
  5. Tag a new release

@upbqdn upbqdn added A-rust Area: Updates to Rust code C-enhancement Category: This is an improvement P-Medium ⚡ labels Aug 30, 2022
@upbqdn upbqdn self-assigned this Aug 30, 2022
@upbqdn upbqdn requested review from a team as code owners August 30, 2022 13:53
@upbqdn upbqdn requested review from arya2 and teor2345 and removed request for a team August 30, 2022 13:53
@upbqdn
Copy link
Member Author

upbqdn commented Aug 30, 2022

I bumped all crates, and I didn't omit any PRs.

@upbqdn
Copy link
Member Author

upbqdn commented Aug 30, 2022

Note for reviewers: Teor updated the checkpoints two days ago, so it wasn't worth updating them again.

@codecov
Copy link

codecov bot commented Aug 30, 2022

Codecov Report

Merging #5006 (14fd552) into main (3ff56c2) will increase coverage by 0.05%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##             main    #5006      +/-   ##
==========================================
+ Coverage   79.04%   79.10%   +0.05%     
==========================================
  Files         310      310              
  Lines       38883    38883              
==========================================
+ Hits        30736    30758      +22     
+ Misses       8147     8125      -22     

@upbqdn upbqdn changed the title V1.0.0 beta.14 v1.0.0-beta.14-release Aug 30, 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.

Thanks for this!

We probably want to highlight some breaking changes at the top of the release notes, let me know if you want help writing them.

CHANGELOG.md Outdated Show resolved Hide resolved
CHANGELOG.md Outdated Show resolved Hide resolved
CHANGELOG.md Outdated Show resolved Hide resolved
CHANGELOG.md Show resolved Hide resolved
CHANGELOG.md Outdated Show resolved Hide resolved
CHANGELOG.md Show resolved Hide resolved
Copy link
Contributor

@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.

A couple docs PRs (#4817 and #4972) are missing in the Changelog.

CHANGELOG.md Outdated Show resolved Hide resolved
@upbqdn
Copy link
Member Author

upbqdn commented Aug 31, 2022

A couple docs PRs (#4817 and #4973) are missing in the Changelog.

Out of curiosity, how did you spot that?

@upbqdn
Copy link
Member Author

upbqdn commented Aug 31, 2022

A couple docs PRs (#4817 and #4973) are missing in the Changelog.

Fixed.

@upbqdn
Copy link
Member Author

upbqdn commented Aug 31, 2022

We probably want to highlight some breaking changes at the top of the release notes

I tried to write the summary in a concise way, but I'm not sure about the phrasing. Please feel free to refactor it.

@upbqdn upbqdn requested review from arya2 and teor2345 August 31, 2022 15:00
@arya2
Copy link
Contributor

arya2 commented Aug 31, 2022

A couple docs PRs (#4817 and #4973) are missing in the Changelog.

Out of curiosity, how did you spot that?

I checked that every PR number in the releases draft was referenced, a lot of ctrl-f

arya2
arya2 previously approved these changes Aug 31, 2022
Copy link
Contributor

@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.

Thank you :)

@upbqdn
Copy link
Member Author

upbqdn commented Aug 31, 2022

I checked that every PR number in the releases draft was referenced, a lot of ctrl-f

Great job. Sorry about omitting those PRs, I don't know how I managed to delete them from the original list.

@teor2345
Copy link
Contributor

I checked that every PR number in the releases draft was referenced, a lot of ctrl-f

Great job. Sorry about omitting those PRs, I don't know how I managed to delete them from the original list.

I wouldn't worry about it too much, it's ok to leave out some minor PRs.

We did some unofficial test releases to test continuous deployment, that might have made release drafter delete some things.

CHANGELOG.md Outdated Show resolved Hide resolved
CHANGELOG.md Outdated 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.

I'm happy for anyone to approve once we've re-worded the breaking changes so they repeat the information that users need.

@upbqdn
Copy link
Member Author

upbqdn commented Aug 31, 2022

I'm happy for anyone to approve once we've re-worded the breaking changes so they repeat the information that users need.

I committed the changes in 14fd552.

Thanks for the rewording, I think it's much more user-friendly.

@upbqdn upbqdn requested a review from teor2345 August 31, 2022 19:49
@teor2345
Copy link
Contributor

I'm going to cheat and bump this to "critical" priority, so it starts merging in 2 minutes rather than 20.

@mergify mergify bot merged commit c322533 into main Aug 31, 2022
@mergify mergify bot deleted the v1.0.0-beta.14 branch August 31, 2022 22:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-rust Area: Updates to Rust code C-enhancement Category: This is an improvement
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants