Skip to content

Update release process (proposal) #278

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

Draft
wants to merge 1 commit into
base: master
Choose a base branch
from
Draft
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
103 changes: 51 additions & 52 deletions .github/ISSUE_TEMPLATE/minor_release.md
Original file line number Diff line number Diff line change
@@ -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: ''

Expand All @@ -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`.

<!-- These steps assume the current `master` branch **development** version is *MAJOR.MINOR.0*. -->

#### 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 🎉

Expand Down
Loading