kv-music/.github/workflows/desktop-build.yml
2026-02-14 22:53:15 +03:00

100 lines
No EOL
2.7 KiB
YAML

name: Desktop Build
on:
push:
branches: [main, neutralino]
workflow_dispatch:
permissions:
contents: write
jobs:
build:
runs-on: ${{ matrix.os }}
strategy:
matrix:
include:
- os: windows-latest
platform: windows
binary_source: Monochrome-win_x64.exe
binary_dest: Monochrome.exe
archive_name: monochrome-windows.zip
- os: ubuntu-latest
platform: linux
binary_source: Monochrome-linux_x64
binary_dest: Monochrome
archive_name: monochrome-linux.zip
- os: macos-latest
platform: macos
binary_source: Monochrome-mac_universal
binary_dest: Monochrome
archive_name: monochrome-mac.zip
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 1
- name: Setup Bun
uses: oven-sh/setup-bun@v1
with:
bun-version: latest
- name: Install dependencies
run: bun install
- name: Download Neutralino binaries
run: bun x neu update
- name: Build application
run: bun run build
- name: Prepare Release Folder
run: |
mkdir release
cp dist/Monochrome/resources.neu release/
cp neutralino.config.json release/
cp -r dist/Monochrome/extensions release/
cp dist/Monochrome/${{ matrix.binary_source }} release/${{ matrix.binary_dest }}
shell: bash
- name: Set Permissions (Linux/macOS)
if: matrix.platform != 'windows'
run: chmod +x release/${{ matrix.binary_dest }}
- name: Zip for R2 (Windows)
if: matrix.platform == 'windows'
run: Compress-Archive -Path release/* -DestinationPath ${{ matrix.archive_name }} -Force
shell: pwsh
- name: Zip for R2 (Linux/macOS)
if: matrix.platform != 'windows'
run: |
cd release
zip -r ../${{ matrix.archive_name }} .
shell: bash
- name: Isolate Zip File
run: |
mkdir out_delivery
mv ${{ matrix.archive_name }} out_delivery/
shell: bash
- name: Upload to R2
uses: ryand56/r2-upload-action@latest
with:
r2-account-id: ${{ secrets.R2_ACCOUNT_ID }}
r2-access-key-id: ${{ secrets.R2_ACCESS_KEY_ID }}
r2-secret-access-key: ${{ secrets.R2_SECRET_ACCESS_KEY }}
r2-bucket: ${{ secrets.R2_BUCKET }}
source-dir: 'out_delivery'
destination-dir: ''
- name: Upload Artifact (GH Internal)
uses: actions/upload-artifact@v4
with:
name: Monochrome-${{ matrix.platform }}
path: release/
retention-days: 30