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

zebrad 1.0.0-alpha.3 Release #1804

Merged
merged 1 commit into from
Feb 23, 2021

Conversation

teor2345
Copy link
Contributor

@teor2345 teor2345 commented Feb 23, 2021

Initial Testing

  • After any changes, test that the cargo install command in README.md works (use --path instead of --git locally)

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

  • 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 zebrad app code and zebra-network user agent
  • 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:
2. 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
  1. MINOR versions for new features
  2. 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.

Version Tooling

You can use fastmod to interactively find and replace versions.

For example, for zebra-1.0.0-alpha-3, we did:

fastmod --extensions rs,toml,md --fixed-strings '1.0.0-alpha.3' '1.0.0-alpha.4'
fastmod --extensions rs,toml,md --fixed-strings '1.0.0-alpha.2' '1.0.0-alpha.3'
fastmod --extensions rs,toml,md --fixed-strings '0.2.0' '0.2.1' tower-batch

We skipped tower-fallback, because it hadn't changed since the last tag.

Change Log

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:

  • 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

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 this PR

  • Update the draft release with the final changelog
  • Point the draft release at the commit resulting from merging this PR, using the correct version tag name
  • 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 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. tag another release

@teor2345 teor2345 added A-docs Area: Documentation A-dependencies Area: Dependency file updates A-rust Area: Updates to Rust code P-Medium labels Feb 23, 2021
@teor2345 teor2345 self-assigned this Feb 23, 2021
@teor2345 teor2345 added this to Review in progress in 🦓 via automation Feb 23, 2021
@teor2345
Copy link
Contributor Author

* Point the GitHub changelog to the version increment commit

@dconnolly I can't remember what this means 😳

@teor2345
Copy link
Contributor Author

teor2345 commented Feb 23, 2021

Draft Release Notes

Zebra's latest alpha brings multiple reliability and stability improvements for node startup, long-running syncs, and testing.

Some notable changes include:

Added

Changed

Removed

Fixed

Hangs and Panics

Testing

Logging and Metrics

@dconnolly
Copy link
Contributor

* Point the GitHub changelog to the version increment commit

@dconnolly I can't remember what this means 😳

Aha, when this commit is merged, point the draft release, with our edited release notes pasted in, at the new commit, and mark as 'pre-release', not draft, anymore.

@dconnolly dconnolly added this to the 2021 Sprint 3 milestone Feb 23, 2021
@dconnolly dconnolly marked this pull request as ready for review February 23, 2021 15:36
@dconnolly
Copy link
Contributor

* Point the GitHub changelog to the version increment commit

@dconnolly I can't remember what this means 😳

Aha, when this commit is merged, point the draft release, with our edited release notes pasted in, at the new commit, and mark as 'pre-release', not draft, anymore.

Made edits to this PR and a new one to update the template with them

@dconnolly dconnolly merged commit 7558f74 into ZcashFoundation:main Feb 23, 2021
🦓 automation moved this from Review in progress to Done Feb 23, 2021
@dconnolly
Copy link
Contributor

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

Tested successfully on macOS, built v1.0.0-alpha.3, ran a good sync

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-dependencies Area: Dependency file updates A-docs Area: Documentation A-rust Area: Updates to Rust code
Projects
No open projects
🦓
  
Done
Development

Successfully merging this pull request may close these issues.

None yet

2 participants