diff --git a/.github/ISSUE_TEMPLATE/minor_release.md b/.github/ISSUE_TEMPLATE/minor_release.md index 83fc86ba..b14a2255 100644 --- a/.github/ISSUE_TEMPLATE/minor_release.md +++ b/.github/ISSUE_TEMPLATE/minor_release.md @@ -1,7 +1,7 @@ --- name: Minor Release about: Create a new minor release [for release managers only] -title: 'Release MAJOR.MINOR+1.0' +title: 'Release v{MAJOR}.{MINOR+1}.0' labels: 'release' assignees: '' @@ -23,73 +23,72 @@ assignees: '' ### Checklist -Release numbering must follow [Semantic Versioning]. These steps assume the current `master` -branch **development** version is *MAJOR.MINOR.0*. +Release numbering must follow [Semantic Versioning]. + +These steps assume that the remote pointing to `bitcoindevkit/bdk_wallet` is named `origin`. + + #### On the day of the feature freeze -Change the `master` branch to the next MINOR+1 version: +Change the `v{MAJOR}` branch to the next MAJOR.MINOR+1 version: -- [ ] Switch to the `master` branch. -- [ ] Create a new PR branch called `bump_dev_MAJOR_MINOR+1`, eg. `bump_dev_0_22`. -- [ ] Bump the `bump_dev_MAJOR_MINOR+1` branch to the next development MINOR+1 version. - - Change the `Cargo.toml` version value to `MAJOR.MINOR+1.0`. +- [ ] Make sure the remote `v{MAJOR}` branch is up to date: `git fetch origin v{MAJOR}`. +- [ ] Create and switch to a new local branch based on `origin/v{MAJOR}`: `git checkout -b bump/v{MAJOR}.{MINOR+1}.0 origin/v{MAJOR}`. +- [ ] Bump version in files to the next development MINOR+1 version. + - Change `Cargo.toml` version value to `{MAJOR}.{MINOR+1}.0`. - Update the `CHANGELOG.md` file. - - The commit message should be "Bump version to MAJOR.MINOR+1.0". -- [ ] Create PR and merge the `bump_dev_MAJOR_MINOR+1` branch to `master`. - - Title PR "Bump version to MAJOR.MINOR+1.0". - -Create a new release branch and release candidate tag: - -- [ ] Double check that your local `master` is up-to-date with the upstream repo. -- [ ] Create a new branch called `release/MAJOR.MINOR+1` from `master`. -- [ ] Bump the `release/MAJOR.MINOR+1` branch to `MAJOR.MINOR+1.0-rc.1` version. - - Change the `Cargo.toml` version value to `MAJOR.MINOR+1.0-rc.1`. - - The commit message should be "Bump version to MAJOR.MINOR+1.0-rc.1". -- [ ] Add a tag to the `HEAD` commit in the `release/MAJOR.MINOR+1` branch. - - The tag name should be `vMAJOR.MINOR+1.0-rc.1` - - Use message "Release MAJOR.MINOR+1.0 rc.1". - - Make sure the tag is signed, for extra safety use the explicit `--sign` flag. -- [ ] Push the `release/MAJOR.MINOR` branch and new tag to the `bitcoindevkit/bdk` repo. - - Use `git push --tags` option to push the new `vMAJOR.MINOR+1.0-rc.1` tag. - -If any issues need to be fixed before the *MAJOR.MINOR+1.0* version is released: + - Commit with message: "Bump version to {MAJOR}.{MINOR+1}.0". +- [ ] Create PR and merge the `bump/v{MAJOR}.{MINOR+1}.0` branch to `v{MAJOR}`. + - Title PR "Bump version to {MAJOR}.{MINOR+1}.0". + +Create a release candidate `rc.{x}`: + +- [ ] Make sure the remote `v{MAJOR}` branch is up to date: `git fetch origin v{MAJOR}`. +- [ ] Create and switch to a new local branch based on `origin/v{MAJOR}`: `git checkout -b release/v{MAJOR}.{MINOR+1}.0-rc.{x} origin/v{MAJOR}`. +- [ ] Bump version in files: + - Change `Cargo.toml` version value to `{MAJOR}.{MINOR+1}.0-rc.{x}`. + - Commit with message: "Bump version to {MAJOR}.{MINOR+1}.0-rc.{x}". +- [ ] Create PR and merge the `bump/v{MAJOR}.{MINOR+1}.0-rc.{x}` branch to `v{MAJOR}`. + - Title PR "Release {MAJOR}.{MINOR+1}.0-rc.{x}". + - Ensure `cargo publish --dry-run` succeeds. +- [ ] Tag the release after the PR is merged. + - Make sure remote is up to date: `git fetch origin v{MAJOR}`. + - `git tag -a v{MAJOR}.{MINOR+1}.0-rc.{x} origin/v{MAJOR} -m "Tag release {MAJOR}.{MINOR+1}.0-rc.{x}"`. + - Make sure the tag is signed (can use `--sign` flag). + - Push tag with `git push origin v{MAJOR}.{MINOR}.0-rc.{x}`. +- [ ] Cargo publish. + +If any issues need to be fixed before the *`{MAJOR}.{MINOR+1}.0`* version is released: - [ ] Merge fix PRs to the `master` branch. -- [ ] Git cherry-pick fix commits to the `release/MAJOR.MINOR+1` branch. -- [ ] Verify fixes in `release/MAJOR.MINOR+1` branch. -- [ ] Bump the `release/MAJOR.MINOR+1` branch to `MAJOR.MINOR+1.0-rc.x+1` version. - - Change the `Cargo.toml` version value to `MAJOR.MINOR+1.0-rc.x+1`. - - The commit message should be "Bump version to MAJOR.MINOR+1.0-rc.x+1". -- [ ] Add a tag to the `HEAD` commit in the `release/MAJOR.MINOR+1` branch. - - The tag name should be `vMAJOR.MINOR+1.0-rc.x+1`, where x is the current release candidate number. - - Use tag message "Release MAJOR.MINOR+1.0 rc.x+1". - - Make sure the tag is signed, for extra safety use the explicit `--sign` flag. -- [ ] Push the new tag to the `bitcoindevkit/bdk` repo. - - Use `git push --tags` option to push the new `vMAJOR.MINOR+1.0-rc.x+1` tag. +- [ ] Create PR that cherry-picks fixes into the `v{MAJOR}` branch. + - PR description: "Backport of #{TICKET_NUMBER} to `v{MAJOR}`". +- [ ] Release candidate version `rc.{x+1}`. #### On the day of the release Tag and publish new release: -- [ ] Bump the `release/MAJOR.MINOR+1` branch to `MAJOR.MINOR+1.0` version. - - Change the `Cargo.toml` version value to `MAJOR.MINOR+1.0`. - - The commit message should be "Bump version to MAJOR.MINOR+1.0". -- [ ] Add a tag to the `HEAD` commit in the `release/MAJOR.MINOR+1` branch. - - The tag name should be `vMAJOR.MINOR+1.0` - - The first line of the tag message should be "Release MAJOR.MINOR+1.0". - - In the body of the tag message put a copy of the **Summary** and **Changelog** for the release. - - Make sure the tag is signed, for extra safety use the explicit `--sign` flag. -- [ ] Wait for the CI to finish one last time. -- [ ] Push the new tag to the `bitcoindevkit/bdk` repo. -- [ ] Publish **all** the updated crates to crates.io. +- [ ] Create & merge PR into `v{MAJOR}` that bumps version to `{MAJOR}.{MINOR+1}.0`. + - Change `Cargo.toml` version value to `{MAJOR}.{MINOR}.0`. + - Commit message: "Bump version to {MAJOR}.{MINOR}.0". + - Ensure `cargo publish --dry-run` succeeds. + - Remember to merge PR before continuing. +- [ ] Tag the `HEAD` of the `origin/v{MAJOR}` branch. + - Tag name: `v{MAJOR}.{MINOR+1}.0`. + - Tag message: + - Title: `Release {MAJOR}.{MINOR+1}.0`. + - Body: Copy of the **Summary** and **Changelong**. + - Make sure the tag is signed (can use `--sign`). + - Push the tag to `origin`. - [ ] Create the release on GitHub. - Go to "tags", click on the dots on the right and select "Create Release". - - Set the title to `Release MAJOR.MINOR+1.0`. + - Set the title to `Release {MAJOR}.{MINOR+1}.0`. - In the release notes body put the **Summary** and **Changelog**. - Use the "+ Auto-generate release notes" button to add details from included PRs. - - Until we reach a `1.0.0` release check the "Pre-release" box. -- [ ] Make sure the new release shows up on [crates.io] and that the docs are built correctly on [docs.rs]. +- [ ] Cargo publish. + - Make sure the new release shows up on [crates.io] and that the docs are built correctly on [docs.rs]. - [ ] Announce the release, using the **Summary**, on Discord, Twitter and Mastodon. - [ ] Celebrate 🎉