docs: update release workflow

This commit is contained in:
thunderbiscuit 2024-04-19 11:12:42 -04:00
parent 6bc974ed2e
commit edea8e8c80
No known key found for this signature in database
GPG Key ID: 88253696EB836462

View File

@ -6,82 +6,90 @@ labels: 'release'
assignees: '' assignees: ''
--- ---
## Create a new minor release # Part 1: Bump BDK Rust Version
## Bumping BDK Rust Version
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. 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. 2. - [ ] Once the new bdk release is out, update the PR to replace the release candidate with the full release and merge.
### Specific Libraries' Workflows # Part 2: Prepare Libraries for Release Branch
#### _Android_
### _Android_
3. - [ ] Update the API docs to reflect the changes in the API 3. - [ ] Update the API docs to reflect the changes in the API
4. - [ ] Delete the `target` directory in bdk-ffi and all previous artifacts to make sure you're building the library from scratch. 4. - [ ] Delete the `target` directory in bdk-ffi and all `build` directories (in root, `lib`, and `plugins`) in the bdk-android directory to make sure you're building the library from scratch.
5. - [ ] Delete the `target` directory in bdk-ffi and all `build` directories (in root, `lib`, and `plugins`) in bdk-android directory to make sure you're building the library from scratch. 5. - [ ] Build the library and run the offline and live tests, and adjust them if necessary (note that you'll need an Android emulator running).
6. - [ ] Build the library and run the offline and live tests, and adjust them if necessary (note that you'll need an Android emulator running).
```shell ```shell
# start an emulator prior to running the tests # start an emulator prior to running the tests
cd ./bdk-android/ cd ./bdk-android/
./gradlew buildAndroidLib just clean
./gradlew connectedAndroidTest just build
just test
``` ```
7. - [ ] Update the readme if necessary 6. - [ ] Update the readme if necessary
#### _JVM_ ### _JVM_
8. - [ ] Update the API docs to reflect the changes in the API
9. - [ ] Delete the `target` directory in bdk-ffi and all `build` directories (in root, `lib`, and `plugins`) in bdk-jvm directory to make sure you're building the library from scratch. 7. - [ ] Update the API docs to reflect the changes in the API
10. - [ ] Build the library and run the tests, and adjust if necessary 8. - [ ] Delete the `target` directory in bdk-ffi and all `build` directories (in root, `lib`, and `plugins`) in bdk-jvm directory to make sure you're building the library from scratch.
9. - [ ] Build the library and run the tests, and adjust if necessary
```shell ```shell
cd ./bdk-jvm/ cd ./bdk-jvm/
./gradlew buildJvmLib just clean
./gradlew test just build
just test
``` ```
11. - [ ] Update the readme if necessary 10. - [ ] Update the readme if necessary
#### _Swift_ ### _Swift_
12. - [ ] Delete the `target` directory in bdk-ffi
13. - [ ] Run the tests and adjust if necessary
11. - [ ] Delete the `target` directory in bdk-ffi
12. - [ ] Run the tests and adjust if necessary
```shell ```shell
./bdk-swift/build-local-swift.sh
cd ./bdk-swift/ cd ./bdk-swift/
swift test just clean
just build
just test
``` ```
14. - [ ] Update the readme if necessary 13. - [ ] Update the readme if necessary
#### _Python_ ### _Python_
15. - [ ] Delete the `dist`, `build`, and `bdkpython.egg-info` and rust `target` directories to make sure you are building the library from scratch without any caches
16. - [ ] Build the library 14. - [ ] Delete the `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 ```shell
cd ./bdk-python/ cd ./bdk-python/
just clean
pip3 install --requirement requirements.txt pip3 install --requirement requirements.txt
bash ./scripts/generate-macos-arm64.sh # run the script for your particular platform bash ./scripts/generate-macos-arm64.sh # run the script for your particular platform
python3 setup.py --verbose bdist_wheel python3 setup.py --verbose bdist_wheel
``` ```
17. - [ ] Run the tests and adjust if necessary 16. - [ ] Run the tests and adjust if necessary
```shell ```shell
pip3 install ./dist/bdkpython-<yourversion>-py3-none-any.whl --force-reinstall pip3 install ./dist/bdkpython-<yourversion>-py3-none-any.whl --force-reinstall
python -m unittest --verbose python -m unittest --verbose
``` ```
18. - [ ] Update the readme and `setup.py` if necessary 17. - [ ] Update the readme and `setup.py` if necessary
18. - [ ] Update the Android, JVM, Python, and Swift libraries as per the _Specific Libraries' Workflows_ section above. Open a single PR on master for all of these changes called `Prepare language bindings libraries for 0.X release`. See [example PR here](https://github.com/bitcoindevkit/bdk-ffi/pull/315).
### Release Workflow ## Part 3: Release Workflow
19. - [ ] Update the Android, JVM, Python, and Swift libraries as per the _Specific Libraries' Workflows_ section above. Open a single PR on master for all of these changes called `Prepare language bindings libraries for 0.X release`. See [example PR here](https://github.com/bitcoindevkit/bdk-ffi/pull/315).
20.. - [ ] Create a new branch off of `master` called `release/<feature version>`, e.g. `release/0.31` 19. - [ ] Create a new branch off of `master` called `release/<feature version>`, e.g. `release/0.31`
21. - [ ] Update bdk-android version from `SNAPSHOT` version to release version 20. - [ ] Update bdk-android version from `SNAPSHOT` version to release version
22. - [ ] Update bdk-jvm version from `SNAPSHOT` version to release version 21. - [ ] Update bdk-jvm version from `SNAPSHOT` version to release version
23. - [ ] Update bdk-python version from `.dev` version to release version 22. - [ ] Update bdk-python version from `.dev` version to release version
24. - [ ] Open a PR to that release branch that updates the Android, JVM, and Python libraries' versions in step 19, 20, and 21. See [example PR here](https://github.com/bitcoindevkit/bdk-ffi/pull/316). 23. - [ ] Open a PR to that release branch that updates the Android, JVM, and Python libraries' versions in the three steps above. See [example PR here](https://github.com/bitcoindevkit/bdk-ffi/pull/316).
25. - [ ] Get a review and ACK and merge the PR updating all the languages to their release versions 24. - [ ] Get a review and ACK and merge the PR updating all the languages to their release versions
26. - [ ] Create the tag for the release 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). Push the tag to GitHub. 25. - [ ] Create the tag for the release 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). Push the tag to GitHub.
```shell ```shell
git tag v0.6.0 --sign --edit git tag v0.6.0 --sign --edit
git push upstream v0.6.0 git push upstream v0.6.0
``` ```
27. - [ ] Trigger manual releases for all 4 libraries (for Swift, go on the [bdk-swift](https://github.com/bitcoindevkit/bdk-swift) trigger the release on `master` and simply add the version number and tag name in the text fields when running the workflow manually. Note that the version number must not contain the `v`, i.e. `0.26.0`, but the tag will have it, i.e. `v0.26.0`). 26. - [ ] Trigger manual releases for all 4 libraries (for Swift, go on the [bdk-swift](https://github.com/bitcoindevkit/bdk-swift) trigger the release on `master` and simply add the version number and tag name in the text fields when running the workflow manually. Note that the version number must not contain the `v`, i.e. `0.26.0`, but the tag will have it, i.e. `v0.26.0`).
28. - [ ] Make sure the released libraries work and contain the artifacts you would expect 27. - [ ] Make sure the released libraries work and contain the artifacts you would expect
29. - [ ] Aggregate all the changelog notices from the PRs and add them to the changelog file 28. - [ ] Aggregate all the changelog notices from the PRs and add them to the changelog file
30. - [ ] Bump the versions on master from `0.9.0-SNAPSHOT` to `0.10.0-SNAPSHOT`, `0.6.0.dev0` to `0.7.0.dev0` 29. - [ ] Bump the versions on master from `0.9.0-SNAPSHOT` to `0.10.0-SNAPSHOT`, `0.6.0.dev0` to `0.7.0.dev0`
31. - [ ] Apply changes to the minor_release and patch_release issue templates if they need any 30. - [ ] Apply changes to the minor_release and patch_release issue templates if they need any
32. - [ ] Open a PR on master with the changes in steps 29, 30, and 31. See [example PR here](https://github.com/bitcoindevkit/bdk-ffi/pull/317). Get a review and merge the PR. 31. - [ ] Open a PR on master with the changes in steps 29, 30, and 31. See [example PR here](https://github.com/bitcoindevkit/bdk-ffi/pull/317). Get a review and merge the PR.
33. - [ ] Make release on GitHub (set as pre-release and generate auto release notes between the previous tag and the new one) 32. - [ ] Make release on GitHub (set as pre-release and generate auto release notes between the previous tag and the new one)
34. - [ ] Post in the announcement channel 33. - [ ] Post in the announcement channel
35. - [ ] Tweet about the library 34. - [ ] Tweet about the library