2019-02-20 20:55:57 +01:00
# Release Process
* Update translations [translation-process.md ](translation-process.md#synchronising-translations ).
* Update data stores [data-stores.md ](data-stores.md#update-stores ).
2019-09-02 15:14:42 +02:00
* Update bitcoinj checkpoint [bitcoinj-checkpoint ](bitcoinj-checkpoint.md#update-checkpoint ).
2019-02-20 20:55:57 +01:00
* Write release notes (see below).
* Webpage (Prepare PR)
* Update version number in:
* [_config.yml ](https://github.com/bisq-network/bisq-website/blob/master/_config.yml )
2020-11-11 10:55:00 +01:00
2021-04-22 09:36:51 +02:00
* Update currency list
in [market_currency_selector.html ](https://github.com/bisq-network/bisq-website/blob/master/_includes/market_currency_selector.html ) (
use [MarketsPrintTool ](https://github.com/bisq-network/bisq/blob/master/desktop/src/test/java/bisq/desktop/MarketsPrintTool.java )
to create HTML content).
2019-02-20 20:55:57 +01:00
### Bisq maintainers, suggestion for writing release notes
2021-04-22 09:36:51 +02:00
2019-02-20 20:55:57 +01:00
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
2020-11-11 10:55:00 +01:00
2019-02-20 20:55:57 +01:00
1. Prepare the release notes with major changes from user perspective.
2. Prepare a short version of the release notes for the in-app update popup
### Basic preparations
2021-04-22 09:36:51 +02:00
For releasing a new Bisq version you'll need Linux, Windows and macOS. You can use a virtualization solution
like [VirtualBox ](https://www.virtualbox.org/wiki/Downloads ) for this purpose.
2019-02-20 20:55:57 +01:00
#### VirtualBox recommended configuration
2021-04-22 09:36:51 +02:00
2019-02-20 20:55:57 +01:00
Although performance of VMs might vary based on your hardware configuration following setup works pretty well on macOS.
2021-04-22 09:36:51 +02:00
Use VirtualBox > 6.1 with following configuration:
2021-04-21 10:45:55 +02:00
* System > Motherboard > Base Memory: 4096 MB
* System > Processor > Processor(s): 2 CPUs
2021-04-22 09:36:51 +02:00
* 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)
2019-02-20 20:55:57 +01:00
##### Windows VM
2021-04-22 09:36:51 +02:00
2019-02-20 20:55:57 +01:00
* Windows 10 64bit
* Recommended virtual disk size: 55 GB
##### Linux VM
2021-04-22 09:36:51 +02:00
2019-02-20 20:55:57 +01:00
* Ubuntu 16.04.4 64bit
2020-11-11 10:55:00 +01:00
* Recommended virtual disk size: 25 GB
2019-02-20 20:55:57 +01:00
##### macOS VM
2021-04-22 09:36:51 +02:00
2019-02-20 20:55:57 +01:00
* macOS X 10.11 (El Capitan) 64bit
* Recommended virtual disk size: 40 GB
#### For every OS
2021-11-25 10:49:51 +01:00
* 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
2019-02-20 20:55:57 +01:00
#### For Windows
* Update AntiVirus Software and virus definitions
2021-04-21 10:45:55 +02:00
* Install [WiX toolset ](https://wixtoolset.org/releases/ )
2019-02-20 20:55:57 +01:00
* Run full AV system scan
### Build release
#### macOS
2021-04-21 10:45:55 +02:00
1. Make sure all version numbers are updated (update version variables and
run [replace_version_number.sh ](https://github.com/bisq-network/bisq/blob/master/desktop/package/macosx/replace_version_number.sh ))
.
2021-04-22 09:36:51 +02:00
2021-04-21 10:45:55 +02:00
2. Set environment variables to ~/.profile file or the like... (one time effort)
2021-05-31 11:58:42 +02:00
* `BISQ_GPG_USER` : e.g. export BISQ_GPG_USER=manfred@bitsquare .io
* `BISQ_SHARED_FOLDER` : shared folder that is used between your VM host and client system
2021-04-22 09:36:51 +02:00
2021-05-25 16:35:12 +02:00
3. Run `./gradlew packageInstallers`
2019-02-20 20:55:57 +01:00
2021-04-21 10:45:55 +02:00
Build output expected in shared folder:
2020-11-11 10:55:00 +01:00
2022-09-15 09:41:15 +02:00
1. `Bisq-${NEW_VERSION}.dmg` macOS installer
2021-05-25 16:35:12 +02:00
2. `desktop-${NEW_VERSION}-all-mac.jar.SHA-256` sha256 sum of fat jar
2021-04-21 10:45:55 +02:00
3. `jar-lib-for-raspberry-pi-${NEW_VERSION}.zip` Jar libraries for Raspberry Pi
2020-11-11 10:55:00 +01:00
2021-04-21 10:45:55 +02:00
* Before building the other binaries install the generated Bisq app on macOS and verify that everything works as
expected.
2019-02-20 20:55:57 +01:00
#### Linux
2021-04-21 10:45:55 +02:00
1. Checkout the release tag in your VM
2021-04-22 09:36:51 +02:00
2021-04-21 10:45:55 +02:00
2. Set environment variables to ~/.profile file or the like... (one time effort)
2021-05-25 16:35:12 +02:00
* `BISQ_SHARED_FOLDER` : shared folder that is used between your VM host and client system
2021-04-22 09:36:51 +02:00
2021-05-25 16:35:12 +02:00
3. Run `./gradlew packageInstallers`
2019-02-20 20:55:57 +01:00
Build output expected:
2020-11-11 10:55:00 +01:00
2021-04-21 10:45:55 +02:00
1. `bisq_${NEW_VERSION}-1_amd64.deb` package for distributions that derive from Debian
2. `bisq-${NEW_VERSION}-1.x86_64.rpm` package for distributions that derive from Redhat based distros
2021-05-25 16:35:12 +02:00
3. `desktop-${NEW_VERSION}-all-linux.jar.SHA-256` sha256 sum of fat jar
2019-02-20 20:55:57 +01:00
* Install and run generated package
#### Windows
2021-04-21 10:45:55 +02:00
1. Checkout the release tag in your VM
2021-04-22 09:36:51 +02:00
2021-04-21 10:45:55 +02:00
2. Set environment variables to ~/.profile file or the like... (one time effort)
2021-04-22 09:36:51 +02:00
* `BISQ_SHARED_FOLDER` : shared folder that is used between your VM host and client system
2021-05-25 16:35:12 +02:00
3. Run `./gradlew packageInstallers`
2019-02-20 20:55:57 +01:00
Build output expected:
2020-11-11 10:55:00 +01:00
2022-09-15 09:41:15 +02:00
1. `Bisq-${NEW_VERSION}.exe` Windows installer
2021-05-25 16:35:12 +02:00
2. `desktop-${NEW_VERSION}-all-windows.jar.SHA-256` sha256 sum of fat jar
2021-04-21 10:45:55 +02:00
* Install and run generated package
2019-02-20 20:55:57 +01:00
2024-09-17 16:51:38 +10:00
### Sign release & generate/include daemon and cli binaries
2019-02-20 20:55:57 +01:00
2020-11-11 10:55:00 +01:00
* Run [finalize.sh ](https://github.com/bisq-network/bisq/blob/master/desktop/package/macosx/finalize.sh )
2019-02-20 20:55:57 +01:00
2024-09-17 16:51:38 +10:00
**PLEASE NOTE**:
- **Important**: even though finalize.sh script is on a macOS folder, **it should be ran for every platform**
- `finalize.sh` was designed to be ran from its own directory, so first make sure you cd into `./desktop/package/macosx` and set the environment variables it describes
2019-02-20 20:55:57 +01:00
Build output expected:
2022-09-29 09:38:59 +02:00
1. `E222AA02.asc` Sig key of Alejandro García
2. `4A133008.asc` Sig key of Gabriel Bernard
3. `signingkey.asc` Fingerprint of key that was used for these builds
4. `Bisq-${NEW_VERSION}.dmg` macOS installer
5. `Bisq-${NEW_VERSION}.dmg.asc` Signature for macOS installer
6. `Bisq-64bit-${NEW_VERSION}.deb` Debian package
7. `Bisq-64bit-${NEW_VERSION}.deb.asc` Signature for Debian package
8. `Bisq-64bit-${NEW_VERSION}.rpm` Redhat based distro package
9. `Bisq-64bit-${NEW_VERSION}.rpm.asc` Signature for Redhat based distro package
10. `Bisq-64bit-${NEW_VERSION}.exe` Windows installer
11. `Bisq-64bit-${NEW_VERSION}.exe.asc` Signature for Windows installer
2020-11-11 10:55:00 +01:00
2022-09-15 09:41:15 +02:00
* Run an AV scan over all files on the Windows VM where the files got copied over.
2020-11-11 10:55:00 +01:00
2019-02-20 20:55:57 +01:00
### Final test
2020-11-11 10:55:00 +01:00
2022-09-15 09:41:15 +02:00
* Make at least one Mainnet test trade with some exotic currency to not interfere with real traders.
2020-11-11 10:55:00 +01:00
2019-02-20 20:55:57 +01:00
### Tag and push release to master
2020-11-11 10:55:00 +01:00
If all was successful:
2019-02-20 20:55:57 +01:00
2021-04-22 09:36:51 +02:00
* commit changes of new version number (update version number for release of e.g. v1.5.0)
* create tag for the release
2019-02-20 20:55:57 +01:00
```
2020-11-11 10:55:00 +01:00
git tag -s v(new version, e.g. 1.5.0) -m"Release v(new version, e.g. 1.5.0)"
2019-02-20 20:55:57 +01:00
```
2021-04-22 09:36:51 +02:00
* Revert back to SNAPSHOT where necessary (change version variable (e.g. 1.5.0) in shell
script [insert_snapshot_version.sh ](https://github.com/bisq-network/bisq/blob/master/desktop/package/macosx/insert_snapshot_version.sh )
and run it) and commit these changes.
2021-04-22 10:01:24 +02:00
2021-04-22 09:36:51 +02:00
* Push all commits to master including the new tag
2019-02-20 20:55:57 +01:00
```
git push --tags origin master
```
### GitHub
#### Upload preparations
2022-09-29 09:38:59 +02:00
* Check the fingerprint of the pgp key which was used for signing in signingkey.asc (e.g. E222AA02 for Alejandro García)
2021-04-22 10:01:24 +02:00
2021-04-22 09:36:51 +02:00
* Add all files including signingkey.asc and the gpg pub keys to GitHub release page
2021-04-22 10:01:24 +02:00
2021-04-22 09:36:51 +02:00
* Check all uploaded files with [virustotal.com ](https://www.virustotal.com )
2021-04-22 10:01:24 +02:00
2021-04-22 09:36:51 +02:00
* Select the release tag as the source for the GitHub release.
2021-04-22 10:01:24 +02:00
2021-04-22 09:36:51 +02:00
* Release on GitHub
2019-02-20 20:55:57 +01:00
#### Post GitHub release
2021-04-22 09:36:51 +02:00
* Apply “A newer version is already available! Please don’ t use this version anymore.” to old GitHub releases.
2021-04-22 09:52:22 +02:00
2021-04-22 09:36:51 +02:00
* Merge the webpage PR and check if they got deployed properly.
2021-04-22 09:52:22 +02:00
2021-04-22 09:36:51 +02:00
* 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.
2021-04-22 09:52:22 +02:00
2021-04-22 09:36:51 +02:00
* After sending the Update message leave it running for about 1 minute to give time for good propagation.
2021-04-22 09:52:22 +02:00
2021-04-22 09:36:51 +02:00
* Make a backup of that alert sender app data directory
2021-04-22 09:52:22 +02:00
2021-04-22 09:36:51 +02:00
* To support source code signature verification for Arch Linux download `Source code (tar.gz)` , sign it and upload
signature.
2021-02-25 16:37:20 +01:00
```
# sign source code bundle
2021-03-11 09:20:29 +01:00
gpg --digest-algo SHA256 --local-user $BISQ_GPG_USER --output bisq-${NEW_VERSION}.tar.gz.asc --detach-sig --armor bisq-${NEW_VERSION}.tar.gz
2021-02-25 16:37:20 +01:00
# verify signature of source code bundle
2021-03-11 09:20:29 +01:00
gpg --digest-algo SHA256 --verify bisq-${NEW_VERSION}.tar.gz{.asc*,}
2021-02-25 16:37:20 +01:00
```
2019-02-20 20:55:57 +01:00
### Announce the release
2021-04-22 09:36:51 +02:00
* Forum
2021-04-22 10:01:24 +02:00
2022-01-28 16:21:28 +01:00
* Matrix space (_General_ room)
2021-04-22 10:01:24 +02:00
2021-04-22 09:36:51 +02:00
* Twitter
2021-04-22 10:01:24 +02:00
2021-04-22 09:36:51 +02:00
* Optionally reddit /r/Bisq
2021-04-22 10:01:24 +02:00
2021-04-22 09:36:51 +02:00
* Celebrate