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 v1.0.0-beta.3 #3256

Merged
merged 10 commits into from
Dec 21, 2021
Merged

Release Zebra v1.0.0-beta.3 #3256

merged 10 commits into from
Dec 21, 2021

Conversation

conradoplg
Copy link
Collaborator

@conradoplg conradoplg commented Dec 17, 2021


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.

  • Increment the crates that have new commits since the last version update
  • Increment any crates that depend on crates that have changed
  • Use the zebrad crate version in the zebra-network user agent string
    (currently the constant USER_AGENT in zebra-network/src/constants.rs)
  • Use the latest git tag in 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

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

Optionally, if a MINOR feature pre-release breaks MAJOR API compatibility:

  1. Increment the MAJOR version, and reset all the other versions to zero

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

Version Locations

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

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:

fastmod --extensions rs,toml,md --fixed-strings '1.0.0-alpha.12' '1.0.0-alpha.13'
fastmod --extensions rs,toml,md --fixed-strings '1.0.0-alpha.11' '1.0.0-alpha.12'
fastmod --extensions rs,toml,md --fixed-strings '1.0.0-alpha.10' '1.0.0-alpha.11'
fastmod --extensions rs,toml,md --fixed-strings '0.2.9' '0.2.10' tower-batch
fastmod --extensions rs,toml,md --fixed-strings '0.2.8' '0.2.9' tower-fallback

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

  • After any changes, test that the cargo install command in works. Use
    e.g. cargo install --locked --path zebrad.

README

As we resolve various outstanding known issues and implement new functionality with each release, we should double check the README for any necessary updates.

We should check and update if necessary:

  • The "Beta Release" section
  • The "Known Issues" section

to ensure that any items that are resolved in the latest release are no longer listed in the README.

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
  • 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
  • Create a draft PR to update 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

  • Check for any PRs that have been merged since you created the draft PR to update CHANGELOG.md and push any updates if necessary
  • Mark the PR to update CHANGELOG.md as "Ready for Review"
  • Once the changelog PR has been approved and merged, update the draft release with the final changelog
  • Set the release title to Zebra followed by the version tag, for example: Zebra 1.0.0-alpha.0
  • Set the tag name to the version tag, for example: v1.0.0-alpha.0
  • Set the release to target the main branch
  • Mark the release as 'pre-release' (until we are no longer alpha/beta)

Final Testing

  • After tagging the release, test that the exact cargo install command in
    README.md works (--git behaves a bit differently to --path)

If the build fails after tagging:

  1. fix the build
  2. check if the fixes changed any extra crates, and do the required version increments
  3. update README.md with a new git tag
  4. update CHANGELOG.md with details about the fix
  5. tag a new release

@conradoplg conradoplg force-pushed the v1.0.0-beta.3-release branch from e3b4200 to 45143cb Compare December 17, 2021 14:50
@mpguerra mpguerra linked an issue Dec 17, 2021 that may be closed by this pull request
@teor2345
Copy link
Contributor

@conradoplg I'd like to merge the syncer bug fixes before tagging the release. What do you think?

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.

Just missing a few minor details, and a security disclosure credit

Co-authored-by: teor <teor@riseup.net>
Copy link
Contributor

@mpguerra mpguerra left a comment

Choose a reason for hiding this comment

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

Looks good to me so far, let's remember to change the date when we tag

@conradoplg
Copy link
Collaborator Author

@conradoplg I'd like to merge the syncer bug fixes before tagging the release. What do you think?

Agreed, they have all been merged, right?

@teor2345
Copy link
Contributor

@conradoplg I'd like to merge the syncer bug fixes before tagging the release. What do you think?

Agreed, they have all been merged, right?

The sync bug was introduced by a358c41 Stop closing connections on unexpected messages.

So we still need to revert that change to restore sync speeds.

@teor2345
Copy link
Contributor

teor2345 commented Dec 21, 2021

It's a bit more complicated than that - we already reverted part of PR #3120 in #3124. Now PR #3274 reverts another part of that PR.

See #3275 for details.

I think #3274 should fix the sync issues though.

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.

Looks good, once we've made a few tweaks, let's merge and tag the release!

conradoplg and others added 3 commits December 21, 2021 17:56
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.

Still looks good!

@conradoplg conradoplg merged commit a5713da into main Dec 21, 2021
@conradoplg conradoplg deleted the v1.0.0-beta.3-release branch December 21, 2021 22:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Tag Zebra v1.0.0-beta.3 release
3 participants