Mining/.github/workflows/desktop-release.yml
snider 80d2c56047 feat: Add Wails desktop app with cross-platform GitHub Actions build
Create native desktop application using Wails v3 with Angular frontend.
The app wraps the mining CLI backend and exposes functionality via
TypeScript bindings for system info, miner control, profiles, and stats.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-30 01:55:14 +00:00

113 lines
3.1 KiB
YAML

name: Desktop Release
on:
push:
tags:
- 'v*.*.*'
workflow_dispatch:
permissions:
contents: write
jobs:
build:
name: Build ${{ matrix.platform }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
include:
- os: ubuntu-latest
platform: linux
artifact: mining-dashboard
- os: windows-latest
platform: windows
artifact: mining-dashboard.exe
- os: macos-latest
platform: darwin
artifact: mining-dashboard
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: '1.23'
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
- name: Install Wails CLI
run: go install github.com/wailsapp/wails/v3/cmd/wails3@latest
- name: Install Linux dependencies
if: matrix.platform == 'linux'
run: |
sudo apt-get update
sudo apt-get install -y libgtk-3-dev libwebkit2gtk-4.1-dev
- name: Install Task
uses: arduino/setup-task@v2
with:
version: 3.x
- name: Build Desktop App
working-directory: cmd/desktop/mining-desktop
env:
PLATFORM: ${{ matrix.platform }}
run: |
task ${PLATFORM}:build PRODUCTION=true
- name: Create macOS App Bundle
if: matrix.platform == 'darwin'
working-directory: cmd/desktop/mining-desktop
run: task darwin:create:app:bundle
- name: Upload Artifact
uses: actions/upload-artifact@v4
with:
name: mining-dashboard-${{ matrix.platform }}
path: |
cmd/desktop/mining-desktop/bin/${{ matrix.artifact }}
cmd/desktop/mining-desktop/bin/*.app
release:
name: Create Release
needs: build
runs-on: ubuntu-latest
if: github.ref_type == 'tag'
steps:
- name: Download all artifacts
uses: actions/download-artifact@v4
with:
path: artifacts
- name: Prepare release assets
run: |
mkdir -p release
cp artifacts/mining-dashboard-linux/mining-dashboard release/mining-dashboard-linux-amd64
chmod +x release/mining-dashboard-linux-amd64
cp artifacts/mining-dashboard-windows/mining-dashboard.exe release/mining-dashboard-windows-amd64.exe
cp artifacts/mining-dashboard-darwin/mining-dashboard release/mining-dashboard-darwin-amd64
chmod +x release/mining-dashboard-darwin-amd64
- name: Create Release
uses: softprops/action-gh-release@v2
with:
files: release/*
generate_release_notes: true
append_body: true
body: |
## Desktop App Downloads
| Platform | Download |
|----------|----------|
| Linux | `mining-dashboard-linux-amd64` |
| Windows | `mining-dashboard-windows-amd64.exe` |
| macOS | `mining-dashboard-darwin-amd64` |