4.6 KiB
4.6 KiB
name | about | title | labels | assignees |
---|---|---|---|---|
Release | Create a new release [for release managers only] | Release MAJOR.MINOR.PATCH | release |
Part 1: Bump BDK Rust Version
-
- 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.
- Open a PR with an update to
-
- Once the new bdk release is out, update the PR to replace the release candidate with the full release and merge.
Part 2: Prepare Libraries for Release Branch
Android
-
- Update the API docs to reflect the changes in the API
-
- Delete the
target
directory in bdk-ffi and allbuild
directories (in root,lib
, andplugins
) in the bdk-android directory to make sure you're building the library from scratch.
- Delete the
-
- Build the library and run the offline and live tests, and adjust them if necessary (note that you'll need an Android emulator running).
# start an emulator prior to running the tests
cd ./bdk-android/
just clean
just build
just test
-
- Update the readme if necessary
JVM
-
- Update the API docs to reflect the changes in the API
-
- Delete the
target
directory in bdk-ffi and allbuild
directories (in root,lib
, andplugins
) in bdk-jvm directory to make sure you're building the library from scratch.
- Delete the
-
- Build the library and run the tests, and adjust if necessary
cd ./bdk-jvm/
just clean
just build
just test
-
- Update the readme if necessary
Swift
-
- Delete the
target
directory in bdk-ffi
- Delete the
-
- Run the tests and adjust if necessary
cd ./bdk-swift/
just clean
just build
just test
-
- Update the readme if necessary
Python
-
- Delete the
dist
,build
, andbdkpython.egg-info
and rusttarget
directories to make sure you are building the library from scratch without any caches
- Delete the
-
- Build the library
cd ./bdk-python/
just clean
pip3 install --requirement requirements.txt
bash ./scripts/generate-macos-arm64.sh # run the script for your particular platform
python3 setup.py --verbose bdist_wheel
-
- Run the tests and adjust if necessary
pip3 install ./dist/bdkpython-<yourversion>-py3-none-any.whl --force-reinstall
python -m unittest --verbose
-
- Update the readme and
setup.py
if necessary
- Update the readme and
-
- 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.
- 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
Part 3: Release Workflow
-
- Create a new branch off of
master
calledrelease/<feature version>
, e.g.release/0.31
- Create a new branch off of
-
- Update bdk-android version from
SNAPSHOT
version to release version
- Update bdk-android version from
-
- Update bdk-jvm version from
SNAPSHOT
version to release version
- Update bdk-jvm version from
-
- Update bdk-python version from
.dev
version to release version
- Update bdk-python version from
-
- 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.
-
- Get a review and ACK and merge the PR updating all the languages to their release versions
-
- 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.
git tag v0.6.0 --sign --edit
git push upstream v0.6.0
-
- Trigger manual releases for all 4 libraries (for Swift, go on the 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 thev
, i.e.0.26.0
, but the tag will have it, i.e.v0.26.0
).
- Trigger manual releases for all 4 libraries (for Swift, go on the bdk-swift trigger the release on
-
- Make sure the released libraries work and contain the artifacts you would expect
-
- Aggregate all the changelog notices from the PRs and add them to the changelog file
-
- Bump the versions on master from
0.9.0-SNAPSHOT
to0.10.0-SNAPSHOT
,0.6.0.dev0
to0.7.0.dev0
- Bump the versions on master from
-
- Apply changes to the minor_release and patch_release issue templates if they need any
-
- Open a PR on master with the changes in steps 29, 30, and 31. See example PR here. Get a review and merge the PR.
-
- Make release on GitHub (set as pre-release and generate auto release notes between the previous tag and the new one)
-
- Post in the announcement channel
-
- Tweet about the library