bdk-ffi/.github/ISSUE_TEMPLATE/minor_release.md
2023-09-12 11:38:18 -04:00

4.5 KiB

name about title labels assignees
Minor Release Create a new minor release [for release managers only] Release MAJOR.MINOR+1.0 release

Create a new minor 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 ./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 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
    • 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
    • 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.
    • 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, trigger the release on master and 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)
    • 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 to 0.10.0-SNAPSHOT, 0.6.0.dev0 to 0.7.0.dev0
    • 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)
    • 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)
    • Post in the announcement channel
    • Tweet about the library