mirror of
https://github.com/haveno-dex/haveno.git
synced 2025-11-04 20:44:21 -05:00
233 lines
11 KiB
YAML
233 lines
11 KiB
YAML
# 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-15-intel, macos-15, windows-2025]
|
|
include:
|
|
- os: ubuntu-24.04
|
|
arch: x86_64
|
|
- os: ubuntu-24.04-arm
|
|
arch: aarch64
|
|
- os: macos-15-intel
|
|
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
|