From a75c868eb25cfcad59fd16a99a3091b5b5123185 Mon Sep 17 00:00:00 2001 From: thunderbiscuit Date: Wed, 22 Feb 2023 14:27:03 -0500 Subject: [PATCH] Update minor_release and patch_release templates --- .github/ISSUE_TEMPLATE/minor_release.md | 158 +++++++++++------------- .github/ISSUE_TEMPLATE/patch_release.md | 126 ++++++++++--------- 2 files changed, 140 insertions(+), 144 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/minor_release.md b/.github/ISSUE_TEMPLATE/minor_release.md index 0514d56..57d6584 100644 --- a/.github/ISSUE_TEMPLATE/minor_release.md +++ b/.github/ISSUE_TEMPLATE/minor_release.md @@ -4,98 +4,80 @@ about: Create a new minor release [for release managers only] title: 'Release MAJOR.MINOR+1.0' labels: 'release' assignees: '' - --- ## Create a new minor release +### _Main Workflow_ +1. - [ ] Open a PR with an update to `Cargo.toml` to the new bdk release candidate and ensure all CI workflows run correctly. Fix errors if necessary. +2. - [ ] Once the new bdk release is out, update the PR to replace the release candidate with the full release and merge. +3. - [ ] Update the Android, JVM, Python, and Swift libraries as per the ["**_Sub-Workflows_**" section below](#Sub-Workflows). Open a single PR on master for all of these changes called `Prepare language bindings libraries for 0.X release` +18. - [ ] Create a new branch off of `master` called `release/version` +19. - [ ] Checkout that branch and open a PR to update the Android, JVM, and Python libraries' versions + - [ ] Update bdk-android version from `SNAPSHOT` version to release version + - [ ] Update bdk-jvm version from `SNAPSHOT` version to release version + - [ ] Update bdk-python version from `.dev` version to release version +20. - [ ] Merge the PR updating all of the languages to their release versions +21. - [ ] Create the tag and make sure to add the changelog info to the tag (works better if you prepare the tag message on the side in a text editor) and push it to GitHub. +```sh +git tag v0.6.0 --sign --edit +git push upstream v0.6.0 +``` +22. - [ ] Make release on GitHub (set as pre-release and generate auto release notes between the previous tag and the new one) +23. - [ ] Trigger manual releases for all 4 libraries (for Swift, simply add the version number in the text field when running the workflow manually. Note that the version number must not contain the `v`, i.e. `0.26.0`) +24. - [ ] Bump the versions on master from `0.9.0-SNAPSHOT` to `0.10.0-SNAPSHOT`, `0.6.0.dev0` to `0.7.0.dev0` +25. - [ ] Build and publish API docs for JVM, Android, and Java on the website +```bash! +./gradlew dokkaHtml # bdk-jvm (Dokka) +./gradlew dokkaJavadoc # bdk-jvm (java-style documentation) +./gradlew dokkaHtml # bdk-android (Dokka) +``` +26. - [ ] Tweet about the library +27. - [ ] Post in the announcement channel -### Summary +### _Sub Workflows_ +#### _Android_ +4. - [ ] Update the API docs to reflect the changes in the API +5. - [ ] Delete the `target` directory in bdk-ffi and all previous artifacts to make sure you're building the library from scratch +6. - [ ] Build the library and run the tests, and adjust if necessary. +```sh +# start an emulator prior to running the tests +cd bdk-android +./gradlew buildAndroidLib +./gradlew connectedAndroidTest +``` +7. - [ ] Update the readme if necessary -<--release summary to be used in announcements--> +#### _JVM_ +8. - [ ] Update the API docs to reflect the changes in the API +9. - [ ] Delete the `target` directory in bdk-ffi and all previous artifacts to make sure you're building the library from scratch +10. - [ ] Build the library and run the tests, and adjust if necessary +```sh +cd bdk-jvm +./gradlew buildJvmLib +./gradlew test +``` +11. - [ ] Update the readme if necessary -### Commit +#### _Swift_ +12. - [ ] Run the tests and adjust if necessary +```sh +./bdk-swift/build-local-swift.sh +cd bdk-swift +swift test +``` +13. - [ ] Update the readme if necessary -<--latest commit ID to include in this release--> - -### Changelog - -<--add notices from PRs merged since the prior release, see ["keep a changelog"]--> - -### Checklist - -Release numbering must follow [Semantic Versioning]. 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: - -- [ ] 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`. - - 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: - -- [ ] 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`. - -Add a release candidate tag, this is optional and only needed for major `bdk-ffi` changes that -require a longer testing cycle: - -- [ ] 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: - -- [ ] 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. - -#### 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. -- [ ] 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`. - - 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. -- [ ] After downstream language repos are also updated announce the release, using the **Summary**, - on Discord, Twitter and Mastodon. -- [ ] Celebrate 🎉 - -[Semantic Versioning]: https://semver.org/ -[crates.io]: https://crates.io/crates/bdk -[docs.rs]: https://docs.rs/bdk/latest/bdk -["keep a changelog"]: https://keepachangelog.com/en/1.0.0/ +#### _Python_ +14. - [ ] Delete the `.tox`, `dist`, `build`, and `bdkpython.egg-info` and rust `target` directories to make sure you are building the library from scratch without any caches +15. - [ ] Build the library +```shell +pip3 install --requirement requirements.txt +bash ./generate.sh +python3 setup.py --verbose bdist_wheel +``` +16. - [ ] Run the tests and adjust if necessary +```shell +pip3 install ./dist/bdkpython--py3-none-any.whl +python -m unittest --verbose tests/test_bdk.py +``` +17. - [ ] Update the readme and `setup.py` if necessary diff --git a/.github/ISSUE_TEMPLATE/patch_release.md b/.github/ISSUE_TEMPLATE/patch_release.md index b292668..5c2db88 100644 --- a/.github/ISSUE_TEMPLATE/patch_release.md +++ b/.github/ISSUE_TEMPLATE/patch_release.md @@ -4,66 +4,80 @@ about: Create a new patch release [for release managers only] title: 'Release MAJOR.MINOR.PATCH+1' labels: 'release' assignees: '' - --- ## Create a new patch release +### _Main Workflow_ +1. - [ ] Open a PR with an update to `Cargo.toml` to the new bdk release candidate and ensure all CI workflows run correctly. Fix errors if necessary. +2. - [ ] Once the new bdk release is out, update the PR to replace the release candidate with the full release and merge. +3. - [ ] Update the Android, JVM, Python, and Swift libraries as per the ["**_Sub-Workflows_**" section below](#Sub-Workflows). Open a single PR on master for all of these changes called `Prepare language bindings libraries for 0.X release` +18. - [ ] Create a new branch off of `master` called `release/version` +19. - [ ] Checkout that branch and open a PR to update the Android, JVM, and Python libraries' versions +- [ ] Update bdk-android version from `SNAPSHOT` version to release version +- [ ] Update bdk-jvm version from `SNAPSHOT` version to release version +- [ ] Update bdk-python version from `.dev` version to release version +20. - [ ] Merge the PR updating all of the languages to their release versions +21. - [ ] Create the tag and make sure to add the changelog info to the tag (works better if you prepare the tag message on the side in a text editor) and push it to GitHub. +```sh +git tag v0.6.0 --sign --edit +git push upstream v0.6.0 +``` +22. - [ ] Make release on GitHub (set as pre-release and generate auto release notes between the previous tag and the new one) +23. - [ ] Trigger manual releases for all 4 libraries (for Swift, simply add the version number in the text field when running the workflow manually. Note that the version number must not contain the `v`, i.e. `0.26.0`) +24. - [ ] Bump the versions on master from `0.9.0-SNAPSHOT` to `0.10.0-SNAPSHOT`, `0.6.0.dev0` to `0.7.0.dev0` +25. - [ ] Build and publish API docs for JVM, Android, and Java on the website +```bash! +./gradlew dokkaHtml # bdk-jvm (Dokka) +./gradlew dokkaJavadoc # bdk-jvm (java-style documentation) +./gradlew dokkaHtml # bdk-android (Dokka) +``` +26. - [ ] Tweet about the library +27. - [ ] Post in the announcement channel -### Summary +### _Sub Workflows_ +#### _Android_ +4. - [ ] Update the API docs to reflect the changes in the API +5. - [ ] Delete the `target` directory in bdk-ffi and all previous artifacts to make sure you're building the library from scratch +6. - [ ] Build the library and run the tests, and adjust if necessary. +```sh +# start an emulator prior to running the tests +cd bdk-android +./gradlew buildAndroidLib +./gradlew connectedAndroidTest +``` +7. - [ ] Update the readme if necessary -<--release summary to be used in announcements--> +#### _JVM_ +8. - [ ] Update the API docs to reflect the changes in the API +9. - [ ] Delete the `target` directory in bdk-ffi and all previous artifacts to make sure you're building the library from scratch +10. - [ ] Build the library and run the tests, and adjust if necessary +```sh +cd bdk-jvm +./gradlew buildJvmLib +./gradlew test +``` +11. - [ ] Update the readme if necessary -### Commit +#### _Swift_ +12. - [ ] Run the tests and adjust if necessary +```sh +./bdk-swift/build-local-swift.sh +cd bdk-swift +swift test +``` +13. - [ ] Update the readme if necessary -<--latest commit ID to include in this release--> - -### Changelog - -<--add notices from PRs merged since the prior release, see ["keep a changelog"]--> - -### Checklist - -Release numbering must follow [Semantic Versioning]. These steps assume the current `master` -branch **development** version is *MAJOR.MINOR.PATCH*. - -### On the day of the patch release - -Change the `master` branch to the new PATCH+1 version: - -- [ ] Switch to the `master` branch. -- [ ] Create a new PR branch called `bump_dev_MAJOR_MINOR_PATCH+1`, eg. `bump_dev_0_22_1`. -- [ ] Bump the `bump_dev_MAJOR_MINOR` branch to the next development PATCH+1 version. - - Change the `Cargo.toml` version value to `MAJOR.MINOR.PATCH+1`. - - The commit message should be "Bump version to MAJOR.MINOR.PATCH+1". -- [ ] Create PR and merge the `bump_dev_MAJOR_MINOR_PATCH+1` branch to `master`. - - Title PR "Bump version to MAJOR.MINOR.PATCH+1". - -Cherry-pick, tag and publish new PATCH+1 release: - -- [ ] Merge fix PRs to the `master` branch. -- [ ] Git cherry-pick fix commits to the `release/MAJOR.MINOR` branch to be patched. -- [ ] Verify fixes in `release/MAJOR.MINOR` branch. -- [ ] Bump the `release/MAJOR.MINOR.PATCH+1` branch to `MAJOR.MINOR.PATCH+1` version. - - Change the `Cargo.toml` version value to `MAJOR.MINOR.MINOR.PATCH+1`. - - The commit message should be "Bump version to MAJOR.MINOR.PATCH+1". -- [ ] Add a tag to the `HEAD` commit in the `release/MAJOR.MINOR` branch. - - The tag name should be `vMAJOR.MINOR.PATCH+1` - - The first line of the tag message should be "Release MAJOR.MINOR.PATCH+1". - - 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. -- [ ] 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.PATCH+1`. - - 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. -- [ ] After downstream language repos are also updated announce the release, using the **Summary**, - on Discord, Twitter and Mastodon. -- [ ] Celebrate 🎉 - -[Semantic Versioning]: https://semver.org/ -[crates.io]: https://crates.io/crates/bdk -[docs.rs]: https://docs.rs/bdk/latest/bdk -["keep a changelog"]: https://keepachangelog.com/en/1.0.0/ +#### _Python_ +14. - [ ] Delete the `.tox`, `dist`, `build`, and `bdkpython.egg-info` and rust `target` directories to make sure you are building the library from scratch without any caches +15. - [ ] Build the library +```shell +pip3 install --requirement requirements.txt +bash ./generate.sh +python3 setup.py --verbose bdist_wheel +``` +16. - [ ] Run the tests and adjust if necessary +```shell +pip3 install ./dist/bdkpython--py3-none-any.whl +python -m unittest --verbose tests/test_bdk.py +``` +17. - [ ] Update the readme and `setup.py` if necessary