bisq/docs/release-process.md

249 lines
8.8 KiB
Markdown
Raw Normal View History

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)
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
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
* 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
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.
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
* `BISQ_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 address
* `BISQ_PACKAGE_NOTARIZATION_ASC_PROVIDER`: Your developer ID (e.g. WQT93T6D6C)
2021-04-22 09:36:51 +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:
2021-04-21 10:45:55 +02:00
1. `Bisq-${NEW_VERSION}.dmg` macOS notarized and signed installer
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
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)
* `BISQ_SHARED_FOLDER`: shared folder that is used between your VM host and client system
2021-04-22 09:36:51 +02:00
3. Run `./gradlew packageInstallers`
2019-02-20 20:55:57 +01:00
Build output expected:
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
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
To be able to generate a signed binary you have to apply and install a developer certificate before running the build.
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
3. Run `./gradlew packageInstallers`
2019-02-20 20:55:57 +01:00
Build output expected:
2021-04-21 10:45:55 +02:00
1. `Bisq-${NEW_VERSION}.exe` Windows signed installer
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
### Sign release on macOS
* Run [finalize.sh](https://github.com/bisq-network/bisq/blob/master/desktop/package/macosx/finalize.sh)
2019-02-20 20:55:57 +01:00
Build output expected:
1. `F379A1C6.asc` Sig key of Manfred Karrer
2. `5BC5ED73.asc` Sig key of Chris Beams
3. `29CDFD3B.asc`Sig key of Christoph Atteneder
4. `signingkey.asc` Fingerprint of key that was used for these builds
2021-04-21 10:45:55 +02:00
5. `Bisq-${NEW_VERSION}.dmg` macOS installer
6. `Bisq-${NEW_VERSION}.dmg.asc` Signature for macOS installer
7. `Bisq-64bit-${NEW_VERSION}.deb` Debian package
8. `Bisq-64bit-${NEW_VERSION}.deb.asc` Signature for Debian package
9. `Bisq-64bit-${NEW_VERSION}.rpm` Redhat based distro package
10. `Bisq-64bit-${NEW_VERSION}.rpm.asc` Signature for Redhat based distro package
11. `Bisq-64bit-${NEW_VERSION}.exe` Windows installer
12. `Bisq-64bit-${NEW_VERSION}.exe.asc` Signature for Windows installer
2021-04-22 09:36:51 +02:00
* Run a AV scan over all files on the Windows VM where the files got copied over.
2019-02-20 20:55:57 +01:00
### Final test
2021-04-22 09:36:51 +02:00
* Make at least one mainnet test trade with some exotic currency to not interfere with real traders.
2019-02-20 20:55:57 +01:00
### Tag and push release to master
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
```
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
2021-04-22 09:36:51 +02:00
* Check the fingerprint of the pgp key which was used for signing in signingkey.asc (e.g. 29CDFD3B for Christoph
Atteneder)
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 dont use this version anymore.” to old GitHub releases.
2021-04-22 09:36:51 +02:00
* Merge the webpage PR and check if they got deployed properly.
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: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:36:51 +02:00
* Make a backup of that alert sender app data directory
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.
```
# 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*,}
```
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
2021-04-22 09:36:51 +02:00
* Keybase (#general channel)
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
* Notify @freimair so that he can start
updating [the Arch User Repository](https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=bisq-git)
2021-04-22 10:01:24 +02:00
2021-04-22 09:36:51 +02:00
* Celebrate