8.8 KiB
Release Process
- Update translations translation-process.md.
- Update data stores data-stores.md.
- Update bitcoinj checkpoint bitcoinj-checkpoint.
- Write release notes (see below).
- Webpage (Prepare PR)
-
Update version number in:
-
Update currency list in market_currency_selector.html ( use MarketsPrintTool to create HTML content).
-
Bisq maintainers, suggestion for writing release notes
To be able to create release notes before you make the final release tag, you can temporarily create a local tag and remove it afterwards again.
git tag v(new version, e.g. 0.9.4) #create tag
git tag -d v(new version, e.g. 0.9.4) #delete tag
Write release notes. git shortlog helps a lot, for example:
git shortlog --no-merges v(current version, e.g. 0.9.3)..v(new version, e.g. 0.9.4)
Generate list of authors:
git log --format='- %aN' v(current version, e.g. 0.9.3)..v(new version, e.g. 0.9.4) | sort -fiu
- Prepare the release notes with major changes from user perspective.
- Prepare a short version of the release notes for the in-app update popup
Basic preparations
For releasing a new Bisq version you'll need Linux, Windows and macOS. You can use a virtualization solution like VirtualBox for this purpose.
VirtualBox recommended configuration
Although performance of VMs might vary based on your hardware configuration following setup works pretty well on macOS.
Use VirtualBox > 6.1 with following configuration:
- System > Motherboard > Base Memory: 4096 MB
- System > Processor > Processor(s): 2 CPUs
- System > Processor > Execution Cap: 90%
- Display > Screen > Video Memory: 128 MB
- Display > Screen > Scale Factor: 200%
- Display > Screen > HiDPI Support: Use unscaled HiDPI Output (checked)
- Display > Screen > Acceleration: Enable 3D acceleration (checked)
Windows VM
- Windows 10 64bit
- Recommended virtual disk size: 55 GB
Linux VM
- Ubuntu 16.04.4 64bit
- Recommended virtual disk size: 25 GB
macOS VM
- macOS X 10.11 (El Capitan) 64bit
- Recommended virtual disk size: 40 GB
For every OS
- Install the latest security updates
- Install/Upgrade to the latest Java 15 SDK
- macOS (brew option):
brew upgrade zulu15
- Ubuntu (brew option):
sudo apt-get install zulu15-jdk
- Windows: Download the latest version from https://www.azul.com/downloads/?version=java-15-mts&os=windows&architecture=x86-64-bit&package=jdk
- macOS (brew option):
For Windows
- Update AntiVirus Software and virus definitions
- Install WiX toolset
- Run full AV system scan
Build release
macOS
To be able to generate a signed and notarized binary you have to have an Apple developer account and create the required certificate and provisioning file before running the build.
-
Make sure all version numbers are updated (update version variables and run replace_version_number.sh) .
-
Set environment variables to ~/.profile file or the like... (one time effort)
BISQ_GPG_USER
: e.g. export BISQ_GPG_USER=manfred@bitsquare.ioBISQ_SHARED_FOLDER
: shared folder that is used between your VM host and client systemBISQ_PACKAGE_SIGNING_IDENTITY
: e.g. "Developer ID Application: Christoph Atteneder (WQT93T6D6C)"BISQ_PRIMARY_BUNDLE_ID
: e.g. "network.bisq.CAT"BISQ_PACKAGE_NOTARIZATION_AC_USERNAME
: your Apple developer email addressBISQ_PACKAGE_NOTARIZATION_ASC_PROVIDER
: Your developer ID (e.g. WQT93T6D6C)
- Run
./gradlew packageInstallers
Build output expected in shared folder:
Bisq-${NEW_VERSION}.dmg
macOS notarized and signed installerdesktop-${NEW_VERSION}-all-mac.jar.SHA-256
sha256 sum of fat jarjar-lib-for-raspberry-pi-${NEW_VERSION}.zip
Jar libraries for Raspberry Pi
- Before building the other binaries install the generated Bisq app on macOS and verify that everything works as expected.
Linux
-
Checkout the release tag in your VM
-
Set environment variables to ~/.profile file or the like... (one time effort)
BISQ_SHARED_FOLDER
: shared folder that is used between your VM host and client system
-
Run
./gradlew packageInstallers
Build output expected:
bisq_${NEW_VERSION}-1_amd64.deb
package for distributions that derive from Debianbisq-${NEW_VERSION}-1.x86_64.rpm
package for distributions that derive from Redhat based distrosdesktop-${NEW_VERSION}-all-linux.jar.SHA-256
sha256 sum of fat jar
- Install and run generated package
Windows
To be able to generate a signed binary you have to apply and install a developer certificate before running the build.
-
Checkout the release tag in your VM
-
Set environment variables to ~/.profile file or the like... (one time effort)
BISQ_SHARED_FOLDER
: shared folder that is used between your VM host and client system
-
Run
./gradlew packageInstallers
Build output expected:
Bisq-${NEW_VERSION}.exe
Windows signed installerdesktop-${NEW_VERSION}-all-windows.jar.SHA-256
sha256 sum of fat jar
- Install and run generated package
Sign release on macOS
- Run finalize.sh
Build output expected:
F379A1C6.asc
Sig key of Manfred Karrer5BC5ED73.asc
Sig key of Chris Beams29CDFD3B.asc
Sig key of Christoph Attenedersigningkey.asc
Fingerprint of key that was used for these buildsBisq-${NEW_VERSION}.dmg
macOS installerBisq-${NEW_VERSION}.dmg.asc
Signature for macOS installerBisq-64bit-${NEW_VERSION}.deb
Debian packageBisq-64bit-${NEW_VERSION}.deb.asc
Signature for Debian packageBisq-64bit-${NEW_VERSION}.rpm
Redhat based distro packageBisq-64bit-${NEW_VERSION}.rpm.asc
Signature for Redhat based distro packageBisq-64bit-${NEW_VERSION}.exe
Windows installerBisq-64bit-${NEW_VERSION}.exe.asc
Signature for Windows installer
- Run a AV scan over all files on the Windows VM where the files got copied over.
Final test
- Make at least one mainnet test trade with some exotic currency to not interfere with real traders.
Tag and push release to master
If all was successful:
- commit changes of new version number (update version number for release of e.g. v1.5.0)
- create tag for the release
git tag -s v(new version, e.g. 1.5.0) -m"Release v(new version, e.g. 1.5.0)"
-
Revert back to SNAPSHOT where necessary (change version variable (e.g. 1.5.0) in shell script insert_snapshot_version.sh and run it) and commit these changes.
-
Push all commits to master including the new tag
git push --tags origin master
GitHub
Upload preparations
-
Check the fingerprint of the pgp key which was used for signing in signingkey.asc (e.g. 29CDFD3B for Christoph Atteneder)
-
Add all files including signingkey.asc and the gpg pub keys to GitHub release page
-
Check all uploaded files with virustotal.com
-
Select the release tag as the source for the GitHub release.
-
Release on GitHub
Post GitHub release
-
Apply “A newer version is already available! Please don’t use this version anymore.” to old GitHub releases.
-
Merge the webpage PR and check if they got deployed properly.
-
Start the Alert sender app (CMD + M) remove the old version and send the update message. Check the checkbox for update, set the version number (e.g. 0.9.4) and add the short version of the release notes.
-
After sending the Update message leave it running for about 1 minute to give time for good propagation.
-
Make a backup of that alert sender app data directory
-
To support source code signature verification for Arch Linux download
Source code (tar.gz)
, sign it and upload signature.
# sign source code bundle
gpg --digest-algo SHA256 --local-user $BISQ_GPG_USER --output bisq-${NEW_VERSION}.tar.gz.asc --detach-sig --armor bisq-${NEW_VERSION}.tar.gz
# verify signature of source code bundle
gpg --digest-algo SHA256 --verify bisq-${NEW_VERSION}.tar.gz{.asc*,}
Announce the release
-
Forum
-
Keybase (#general channel)
-
Twitter
-
Optionally reddit /r/Bisq
-
Notify @freimair so that he can start updating the Arch User Repository
-
Celebrate