Skip to content

Commit 3100d18

Browse files
committed
Update DEVELOPMENT_CYCLE.md to work with [patch.crates-io]
1 parent 0efbece commit 3100d18

File tree

1 file changed

+44
-20
lines changed

1 file changed

+44
-20
lines changed

DEVELOPMENT_CYCLE.md

+44-20
Original file line numberDiff line numberDiff line change
@@ -24,23 +24,47 @@ What follows are notes and procedures that maintainers can refer to when making
2424

2525
Pre-`v1.0.0` our "major" releases only affect the "minor" semver value. Accordingly, our "minor" releases will only affect the "patch" value.
2626

27-
1. Create a new branch called `release/x.y.z` from `master`. Double check that your local `master` is up-to-date with the upstream repo before doing so.
28-
2. Make a commit on the release branch to bump the version to `x.y.z-rc.1`. The message should be "Bump version to x.y.z-rc.1".
29-
3. Push the new branch to `bitcoindevkit/bdk` on GitHub.
30-
4. During the one week of feature freeze run additional tests on the release branch.
31-
5. If a bug is found:
32-
- If it's a minor issue you can just fix it in the release branch, since it will be merged back to `master` eventually
33-
- For bigger issues you can fix them on `master` and then *cherry-pick* the commit to the release branch
34-
6. Update the changelog with the new release version.
35-
7. Update `src/lib.rs` with the new version (line ~43)
36-
8. On release day, make a commit on the release branch to bump the version to `x.y.z`. The message should be "Bump version to x.y.z".
37-
9. Add a tag to this commit. The tag name should be `vx.y.z` (for example `v0.5.0`), and the message "Release x.y.z". Make sure the tag is signed, for extra safety use the explicit `--sign` flag.
38-
10. Push the new commits to the upstream release branch, wait for the CI to finish one last time.
39-
11. Publish **all** the updated crates to crates.io.
40-
12. Make a new commit to bump the version value to `x.y.(z+1)-dev`. The message should be "Bump version to x.y.(z+1)-dev".
41-
13. Merge the release branch back into `master`.
42-
14. If the `master` branch contains any unreleased changes to the `bdk-macros` crate, change the `bdk` Cargo.toml `[dependencies]` to point to the local path (ie. `bdk-macros = { path = "./macros"}`)
43-
15. Create the release on GitHub: go to "tags", click on the dots on the right and select "Create Release". Then set the title to `vx.y.z` and write down some brief release notes.
44-
16. Make sure the new release shows up on crates.io and that the docs are built correctly on docs.rs.
45-
17. Announce the release on Twitter, Discord and Telegram.
46-
18. Celebrate :tada:
27+
These steps assume the current unreleased `master` branch version is `x.y.0`.
28+
29+
### On feature freeze day
30+
31+
1. Double check that your local `master` is up-to-date with the upstream repo.
32+
1. Create a new branch called `release/x.y` from `master`.
33+
1. In the `release/x.y` branch update the changelog:
34+
- Add descriptions for PRs merged since the prior release that are relevant to users.
35+
- The commit message should be "Update changelog for release x.y.0".
36+
1. Push the new branch to `bitcoindevkit/bdk` on GitHub.
37+
1. In a new PR bump the `master` branch to the next unreleased MINOR version:
38+
- Change the`Cargo.toml` version value to `x.y+1.0`.
39+
- Update `src/lib.rs` with the new version (line ~43).
40+
- The commit message should be "Bump version to x.y+1.0".
41+
42+
### During the one week x.y.0 feature freeze or for x.y.z bug fix releases
43+
44+
1. Run additional tests on the `release/x.y` branch.
45+
1. If a bug is found:
46+
- If it's a minor issue fix it in the `release/x.y` branch, since it will be merged back to `master` eventually.
47+
- For bigger issues you can fix them on `master` and then *cherry-pick* the commit to the `release/x.y` branch.
48+
- Update the changelog with details of any significant fixes. The message should be "Update changelog for release x.y.z".
49+
50+
### On x.y.0 release day or for x.y.z bug fix releases
51+
52+
1. Add a tag to the `HEAD` commit in the `release/x.y` branch:
53+
- The tag name should be `vx.y.z`, and the message "Release x.y.z".
54+
- Make sure the tag is signed, for extra safety use the explicit `--sign` flag.
55+
1. Push the new tag to the upstream `release/x.y` branch, wait for the CI to finish one last time.
56+
1. Publish **all** the updated crates to crates.io.
57+
1. Merge the `release/x.y` branch CHANGELOG and any bug fixes back into `master`.
58+
The version on `master` should stay `x.y+1.0`.
59+
1. If the `master` branch contains any unreleased changes to the `bdk-macros` crate, change the
60+
`bdk` Cargo.toml `[dependencies]` to point to the local path (ie. `bdk-macros = { path = "./macros"}`)
61+
1. Create the release on GitHub:
62+
- Go to "tags", click on the dots on the right and select "Create Release".
63+
- Set the title to `vx.y.z` and add a brief release description.
64+
- Use the "+ Auto-generate release notes" button to add details from included PRs.
65+
1. Make sure the new release shows up on [crates.io] and that the docs are built correctly on [docs.rs].
66+
1. Announce the release on Discord, Twitter and Mastodon.
67+
1. Celebrate :tada:
68+
69+
[crates.io]: https://crates.io/crates/bdk
70+
[docs.rs]: https://docs.rs/bdk/latest/bdk

0 commit comments

Comments
 (0)