bdk-ffi/.github/ISSUE_TEMPLATE/patch_release.md
2023-04-28 08:56:58 -04:00

4.2 KiB

name about title labels assignees
Patch Release Create a new patch release [for release managers only] Release MAJOR.MINOR.PATCH+1 release

Creating a new patch release

Bumping 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.
    • Once the new bdk release is out, update the PR to replace the release candidate with the full release and merge.

Specific Libraries' Workflows

Android

    • Update the API docs to reflect the changes in the API
    • Delete the target directory in bdk-ffi and all previous artifacts to make sure you're building the library from scratch.
    • Build the library and run the tests, and adjust if necessary.
# start an emulator prior to running the tests
cd ./bdk-android/
./gradlew buildAndroidLib
./gradlew connectedAndroidTest
    • 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 all previous artifacts to make sure you're building the library from scratch
    • Build the library and run the tests, and adjust if necessary
cd ./bdk-jvm/
./gradlew buildJvmLib
./gradlew test
    • Update the readme if necessary

Swift

    • Run the tests and adjust if necessary
./bdk-swift/build-local-swift.sh
cd ./bdk-swift/
swift test
    • Update the readme if necessary

Python

    • 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
    • Build the library
cd ./bdk-python/
pip3 install --requirement requirements.txt
bash ./generate.sh
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 tests/test_bdk.py
    • Update the readme and setup.py if necessary

Release Workflow

    • 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.
  • Create a new branch off of master called release/version
    • Open a PR to that branch to update the Android, JVM, and Python libraries' versions. See example PR here.
  • 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
    • Merge the PR updating all the languages to their release versions
    • 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.
git tag v0.6.0 --sign --edit
git push upstream v0.6.0
    • Aggregate all the changelog notices from the PRs and add them to the changelog file
    • Open a PR on master with the changes to the changelog file and the development versions bump. See example PR here.
    • Make release on GitHub (set as pre-release and generate auto release notes between the previous tag and the new one)
    • 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)
    • Bump the versions on master from 0.9.0-SNAPSHOT to 0.10.0-SNAPSHOT, 0.6.0.dev0 to 0.7.0.dev0
    • Build and publish API docs for JVM, Android, and Java on the website
./gradlew dokkaHtml    # bdk-jvm (Dokka)
./gradlew dokkaJavadoc # bdk-jvm (java-style documentation)
./gradlew dokkaHtml    # bdk-android (Dokka)
    • Tweet about the library
    • Post in the announcement channel