diff --git a/docs/data-stores.md b/docs/data-stores.md new file mode 100644 index 00000000000..554efb15889 --- /dev/null +++ b/docs/data-stores.md @@ -0,0 +1,9 @@ +# Data stores + +### Update stores + +With every release we include the latest snapshot of Mainnet and Testnet data from the P2P network within the client. + +* Start your Bisq client on Mainnet and Testnet and let it run until it is fully synced. +* Run [copy_dbs.sh](https://github.com/bisq-network/bisq/blob/master/desktop/package/macosx/copy_dbs.sh) to copy the +required files into the [p2p resources directory](https://github.com/bisq-network/bisq/blob/master/p2p/src/main/resources). diff --git a/docs/release-process.md b/docs/release-process.md new file mode 100644 index 00000000000..33461ff6c38 --- /dev/null +++ b/docs/release-process.md @@ -0,0 +1,177 @@ +# Release Process + +* Update translations [translation-process.md](translation-process.md#synchronising-translations). +* Update data stores [data-stores.md](data-stores.md#update-stores). +* 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) + * [downloads.html](https://github.com/bisq-network/bisq-website/blob/master/downloads.html) + + * 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). + * Update [roadmap](https://github.com/bisq-network/bisq-website/blob/master/roadmap.md) with new release notes. + + +### 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 + +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 +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. + +#### VirtualBox recommended configuration +Although performance of VMs might vary based on your hardware configuration following setup works pretty well on macOS. + +Use VirtualBox < 5.2.22: Using a more recent version makes VMs hardly usable on a MacBook Pro (15-inch, 2016) +with following configuration: + * System > Motherboard > Base Memory: 2048 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: 15 GB + +##### macOS VM +* macOS X 10.11 (El Capitan) 64bit +* Recommended virtual disk size: 40 GB + +#### For every OS + +* Install latest security updates + +#### For Windows + +* Update AntiVirus Software and virus definitions +* Install unicode version of [Inno Tools](http://www.jrsoftware.org/isdl.php) +* Run full AV system scan + +### Build release + +#### macOS + +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/bisq/desktop/package/macosx/replace_version_number.sh)). +2. Set environment variable e.g. export BISQ_GPG_USER=manfred@bitsquare.io to ~/.profile file or the like... (one time effort) +3. Update [vmPath variable](https://github.com/bisq-network/bisq/blob/b4b5d0bb12c36afbe1aa6611dd8451378df6db8c/desktop/package/macosx/create_app.sh#L42) if necessary +4. Run [create_app.sh](https://github.com/bisq-network/bisq/blob/master/desktop/package/macosx/create_app.sh) + +Build output expected in deploy directory (opened after successful build process): + + 1. `Bisq-${NEW-VERSION}.dmg` macOS signed installer + 2. `Bisq-${NEW-VERSION}.jar` Ddterministic fat jar + 3. `Bisq-${NEW-VERSION}.jar.txt` sha256 sum of deterministic fat jar + +The build scripts also copies over the deterministic fat jar into the shared folders for the other VMs (Windows & Linux). +Before building the other binaries install the generated Bisq app on macOS and verify that everything works as expected. + +#### Linux + +* Run `desktop/package/linux/package.sh` from the shared VM folder + +Build output expected: + + 1. `Bisq-${NEW-VERSION}.deb` package for distributions that derive from Debian + 2. `Bisq-${NEW-VERSION}.rpm` package for distributions that derive from Redhat based distros + +* Install and run generated package + +#### Windows + +* Run `desktop/package/windows/package.bat` from the shared VM folder + +Build output expected: + + 1. `Bisq-${NEW-VERSION}.exe` Windows unsigned installer + 2. `Bisq-${NEW-VERSION}.exe.txt` sha256 sum of installer + +### Sign release on macOS + +* Run [finalize.sh](https://github.com/bisq-network/bisq/blob/master/bisq/desktop/package/macosx/finalize.sh) + +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 this builds + 5. `Bisq-${NEW-VERSION}.jar.txt` Sha256 sum of deterministic fat jar + 6. `Bisq-${NEW-VERSION}.dmg` macOS installer + 7. `Bisq-${NEW-VERSION}.dmg.asc` Signature for macOS installer + 8. `Bisq-${NEW-VERSION}.deb` Debian package + 9. `Bisq-${NEW-VERSION}.deb.asc` Signature for Debian package + 10. `Bisq-${NEW-VERSION}.rpm` Redhat based distro package + 11. `Bisq-${NEW-VERSION}.rpm.asc` Signature for Redhat based distro package + 12. `Bisq-${NEW-VERSION}.exe` Windows installer + 13. `Bisq-${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. v0.9.4) + * create tag for the release +``` + git tag -s v(new version, e.g. 0.9.4) -m"Release v(new version, e.g. 0.9.4)" +``` + * Revert back to SNAPSHOT where necessary (change version variable (e.g. 0.9.4) 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. + * 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](https://www.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 + +### Announce the release + + * Forum + * Slack (#general channel) + * Twitter + * Optionally reddit /r/Bisq + * Notify @freimair so that he can start updating [the Arch User Repository](https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=bisq-git) + * Celebrate diff --git a/docs/translation-process.md b/docs/translation-process.md new file mode 100644 index 00000000000..14d5351cc2a --- /dev/null +++ b/docs/translation-process.md @@ -0,0 +1,20 @@ +# Translation Process + +### Installing the Transifex client command-line tool + +You'll find a detailed guide [how to install the Transifex client](https://docs.transifex.com/client/installing-the-client) on the Transifex page. + +The Transifex Bisq project config file is included as part of the repository. It can be found at `core/.tx/config`. + +### Synchronising translations + +We've prepared a script to update the translation files with the Transifex client command-line tool. + + * Run [update_translations.sh](https://github.com/bisq-network/bisq/blob/master/core/update_translations.sh) + +Synchronization output expected: + + * All translation files in [i18n directory](https://github.com/bisq-network/bisq/blob/master/core/src/main/resources/i18n) have been updated. + +Go over the changes if there are any obvious issues (Transifex had once a problem which caused a rewrite of certain keys) +and commit and push them to master.