only save wallet on sync with progress if responsive (#1954) #5233
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# GitHub Releases requires a tag, e.g: | |
# git tag -s 1.0.19-1 -m "haveno-v1.0.19-1" | |
# git push origin 1.0.19-1 | |
name: CI | |
on: | |
workflow_dispatch: | |
push: | |
pull_request: | |
paths-ignore: | |
- '**/README.md' | |
jobs: | |
build: | |
strategy: | |
matrix: | |
os: [ubuntu-24.04, ubuntu-24.04-arm, macos-13, macos-15, windows-2025] | |
include: | |
- os: ubuntu-24.04 | |
arch: x86_64 | |
- os: ubuntu-24.04-arm | |
arch: aarch64 | |
- os: macos-13 | |
arch: x86_64 | |
- os: macos-15 | |
arch: aarch64 | |
- os: windows-2025 | |
arch: x86_64 | |
fail-fast: false | |
runs-on: ${{ matrix.os }} | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
lfs: true | |
- name: Set up JDK 21 | |
uses: actions/setup-java@v4 | |
with: | |
java-version: '21' | |
distribution: 'adopt' | |
cache: gradle | |
- name: Create local share directory | |
# ubuntu-24.04 Github runners do not have `~/.local/share` directory by default. | |
# This causes issues when testing `FileTransferSend` | |
if: runner.os == 'Linux' | |
run: mkdir -p ~/.local/share | |
- name: Build with Gradle with tests | |
if: ${{ !(runner.os == 'Linux' && matrix.arch == 'aarch64') }} | |
run: ./gradlew build --stacktrace --scan | |
- name: Build with Gradle, skip Desktop tests | |
# JavaFX `21.x.x` ships with `x86_64` versions of | |
# `libprism_es2.so` and `libprism_s2.so` shared objects. | |
# This causes desktop tests to fail on `linux/aarch64` | |
if: ${{ (runner.os == 'Linux' && matrix.arch == 'aarch64') }} | |
run: | | |
./gradlew build --stacktrace --scan -x desktop:test | |
echo "::warning title=Desktop Tests Skipped::Desktop tests (desktop:test) were \ | |
intentionally skipped for linux/aarch64 builds as JavaFX 21.x.x ships with x86_64 \ | |
shared objects, causing tests to fail. \ | |
This should be revisited when JavaFX is next updated." | |
- uses: actions/upload-artifact@v4 | |
if: failure() | |
with: | |
name: error-reports-${{ matrix.os }} | |
path: ${{ github.workspace }}/desktop/build/reports | |
- name: cache nodes dependencies | |
uses: actions/upload-artifact@v4 | |
with: | |
include-hidden-files: true | |
name: cached-localnet-${{ matrix.os }} | |
path: .localnet | |
overwrite: true | |
- name: Install dependencies | |
if: runner.os == 'Linux' | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y rpm libfuse2 flatpak flatpak-builder appstream | |
flatpak remote-add --if-not-exists --user flathub https://dl.flathub.org/repo/flathub.flatpakrepo | |
- name: Install WiX Toolset | |
if: runner.os == 'Windows' | |
run: | | |
Invoke-WebRequest -Uri 'https://github.com/wixtoolset/wix3/releases/download/wix314rtm/wix314.exe' -OutFile wix314.exe | |
.\wix314.exe /quiet /norestart | |
shell: powershell | |
- name: Build Haveno Installer with tests | |
if: ${{ !(runner.os == 'Linux' && matrix.arch == 'aarch64') }} | |
run: ./gradlew clean build --refresh-keys --refresh-dependencies | |
working-directory: . | |
- name: Build Haveno Installer, skip Desktop tests | |
# JavaFX `21.x.x` ships with `x86_64` versions of | |
# `libprism_es2.so` and `libprism_s2.so` shared objects. | |
# This causes desktop tests to fail on `linux/aarch64` | |
if: ${{ (runner.os == 'Linux' && matrix.arch == 'aarch64') }} | |
run: | | |
./gradlew clean build --refresh-keys --refresh-dependencies -x desktop:test | |
echo "::warning title=Desktop Tests Skipped::Desktop tests (desktop:test) were \ | |
intentionally skipped for linux/aarch64 builds as JavaFX 21.x.x ships with x86_64 \ | |
shared objects, causing tests to fail. \ | |
This should be revisited when JavaFX is next updated." | |
working-directory: . | |
- name: Package Haveno Installer | |
run: ./gradlew packageInstallers | |
working-directory: . | |
# get version from jar | |
- name: Set Version Unix | |
if: runner.os != 'Windows' | |
run: | | |
export VERSION=$(ls desktop/build/temp-*/binaries/desktop-*.jar.SHA-256 | grep -Eo 'desktop-[0-9]+\.[0-9]+\.[0-9]+' | sed 's/desktop-//') | |
echo "VERSION=$VERSION" >> $GITHUB_ENV | |
- name: Set Version Windows | |
if: runner.os == 'Windows' | |
run: | | |
$VERSION = (Get-ChildItem -Path desktop\build\temp-*/binaries\desktop-*.jar.SHA-256).Name -replace 'desktop-', '' -replace '-.*', '' | |
"VERSION=$VERSION" | Out-File -FilePath $env:GITHUB_ENV -Append | |
shell: powershell | |
- name: Move Release Files for Linux | |
if: runner.os == 'Linux' | |
run: | | |
mkdir ${{ github.workspace }}/release-linux-rpm | |
mkdir ${{ github.workspace }}/release-linux-deb | |
mkdir ${{ github.workspace }}/release-linux-flatpak | |
mkdir ${{ github.workspace }}/release-linux-appimage | |
mv desktop/build/temp-*/binaries/haveno-*.rpm ${{ github.workspace }}/release-linux-rpm/haveno-v${{ env.VERSION }}-linux-${{ matrix.arch }}-installer.rpm | |
mv desktop/build/temp-*/binaries/haveno_*.deb ${{ github.workspace }}/release-linux-deb/haveno-v${{ env.VERSION }}-linux-${{ matrix.arch }}-installer.deb | |
mv desktop/build/temp-*/binaries/*.flatpak ${{ github.workspace }}/release-linux-flatpak/haveno-v${{ env.VERSION }}-linux-${{ matrix.arch }}.flatpak | |
mv desktop/build/temp-*/binaries/haveno_*.AppImage ${{ github.workspace }}/release-linux-appimage/haveno-v${{ env.VERSION }}-linux-${{ matrix.arch }}.AppImage | |
cp desktop/build/temp-*/binaries/desktop-*.jar.SHA-256 ${{ github.workspace }}/release-linux-deb | |
cp desktop/build/temp-*/binaries/desktop-*.jar.SHA-256 ${{ github.workspace }}/release-linux-rpm | |
cp desktop/build/temp-*/binaries/desktop-*.jar.SHA-256 ${{ github.workspace }}/release-linux-appimage | |
cp desktop/build/temp-*/binaries/desktop-*.jar.SHA-256 ${{ github.workspace }}/release-linux-flatpak | |
cp desktop/build/temp-*/binaries/desktop-*.jar.SHA-256 ${{ github.workspace }}/haveno-v${{ env.VERSION }}-linux-${{ matrix.arch }}-SNAPSHOT-all.jar.SHA-256 | |
shell: bash | |
- name: Move Release Files for macOS | |
if: runner.os == 'MacOS' | |
run: | | |
mkdir ${{ github.workspace }}/release-macos-${{ matrix.arch }} | |
mv desktop/build/temp-*/binaries/Haveno-*.dmg ${{ github.workspace }}/release-macos-${{ matrix.arch }}/haveno-v${{ env.VERSION }}-macos-${{ matrix.arch }}-installer.dmg | |
cp desktop/build/temp-*/binaries/desktop-*.jar.SHA-256 ${{ github.workspace }}/release-macos-${{ matrix.arch }} | |
cp desktop/build/temp-*/binaries/desktop-*.jar.SHA-256 ${{ github.workspace }}/haveno-v${{ env.VERSION }}-macos-${{ matrix.arch }}-SNAPSHOT-all.jar.SHA-256 | |
shell: bash | |
- name: Move Release Files on Windows | |
if: runner.os == 'Windows' | |
run: | | |
mkdir ${{ github.workspace }}/release-windows | |
Move-Item -Path desktop\build\temp-*/binaries\Haveno-*.exe -Destination ${{ github.workspace }}/release-windows/haveno-v${{ env.VERSION }}-windows-${{ matrix.arch }}-installer.exe | |
Copy-Item -Path desktop\build\temp-*/binaries\desktop-*.jar.SHA-256 -Destination ${{ github.workspace }}/release-windows | |
Move-Item -Path desktop\build\temp-*/binaries\desktop-*.jar.SHA-256 -Destination ${{ github.workspace }}/haveno-v${{ env.VERSION }}-windows-SNAPSHOT-all.jar.SHA-256 | |
shell: powershell | |
# Windows artifacts | |
- uses: actions/upload-artifact@v4 | |
name: "Windows artifacts" | |
if: runner.os == 'Windows' | |
with: | |
name: haveno-windows-${{ matrix.arch }} | |
path: ${{ github.workspace }}/release-windows | |
# macOS artifacts | |
- uses: actions/upload-artifact@v4 | |
name: "macOS artifacts" | |
if: runner.os == 'MacOS' | |
with: | |
name: haveno-macos-${{ matrix.arch }} | |
path: ${{ github.workspace }}/release-macos-${{ matrix.arch }} | |
# Linux artifacts | |
- uses: actions/upload-artifact@v4 | |
name: "Linux - deb artifact" | |
if: runner.os == 'Linux' | |
with: | |
name: haveno-linux-${{ matrix.arch }}-deb | |
path: ${{ github.workspace }}/release-linux-deb | |
- uses: actions/upload-artifact@v4 | |
name: "Linux - rpm artifact" | |
if: runner.os == 'Linux' | |
with: | |
name: haveno-linux-${{ matrix.arch }}-rpm | |
path: ${{ github.workspace }}/release-linux-rpm | |
- uses: actions/upload-artifact@v4 | |
name: "Linux - AppImage artifact" | |
if: runner.os == 'Linux' | |
with: | |
name: haveno-linux-${{ matrix.arch }}-appimage | |
path: ${{ github.workspace }}/release-linux-appimage | |
- uses: actions/upload-artifact@v4 | |
name: "Linux - flatpak artifact" | |
if: runner.os == 'Linux' | |
with: | |
name: haveno-linux-${{ matrix.arch }}-flatpak | |
path: ${{ github.workspace }}/release-linux-flatpak | |
- name: Release | |
uses: softprops/action-gh-release@v2 | |
if: startsWith(github.ref, 'refs/tags/') | |
with: | |
files: | | |
# Linux x86_64 | |
${{ github.workspace }}/release-linux-deb/haveno-v${{ env.VERSION }}-linux-x86_64-installer.deb | |
${{ github.workspace }}/release-linux-rpm/haveno-v${{ env.VERSION }}-linux-x86_64-installer.rpm | |
${{ github.workspace }}/release-linux-appimage/haveno-v${{ env.VERSION }}-linux-x86_64.AppImage | |
${{ github.workspace }}/release-linux-flatpak/haveno-v${{ env.VERSION }}-linux-x86_64.flatpak | |
${{ github.workspace }}/haveno-v${{ env.VERSION }}-linux-x86_64-SNAPSHOT-all.jar.SHA-256 | |
# Linux aarch64 | |
${{ github.workspace }}/release-linux-deb/haveno-v${{ env.VERSION }}-linux-aarch64-installer.deb | |
${{ github.workspace }}/release-linux-rpm/haveno-v${{ env.VERSION }}-linux-aarch64-installer.rpm | |
${{ github.workspace }}/release-linux-appimage/haveno-v${{ env.VERSION }}-linux-aarch64.AppImage | |
${{ github.workspace }}/release-linux-flatpak/haveno-v${{ env.VERSION }}-linux-aarch64.flatpak | |
${{ github.workspace }}/haveno-v${{ env.VERSION }}-linux-aarch64-SNAPSHOT-all.jar.SHA-256 | |
# macOS x86_64 | |
${{ github.workspace }}/release-macos-x86_64/haveno-v${{ env.VERSION }}-macos-x86_64-installer.dmg | |
${{ github.workspace }}/haveno-v${{ env.VERSION }}-macos-x86_64-SNAPSHOT-all.jar.SHA-256 | |
# macOS aarch64 | |
${{ github.workspace }}/release-macos-aarch64/haveno-v${{ env.VERSION }}-macos-aarch64-installer.dmg | |
${{ github.workspace }}/haveno-v${{ env.VERSION }}-macos-aarch64-SNAPSHOT-all.jar.SHA-256 | |
# Windows | |
${{ github.workspace }}/release-windows/haveno-v${{ env.VERSION }}-windows-x86_64-installer.exe | |
${{ github.workspace }}/haveno-v${{ env.VERSION }}-windows-SNAPSHOT-all.jar.SHA-256 | |
# https://git-scm.com/docs/git-tag - git-tag Docu | |
# | |
# git tag - lists all local tags | |
# git tag -d 1.0.19-1 - delete local tag | |
# | |
# git ls-remote --tags - lists all remote tags | |
# git push origin --delete refs/tags/1.0.19-1 - delete remote tag |