fluxa-desktop/.github/workflows/build.yml
KhooLy 2037aaa7e8 fix: install libmpv's gpu-next runtime deps on the Linux build runner
The KhooLy/mpv fork's libmpv.so.2 links libass, libavfilter, and
libplacebo (needed for the gpu-next render path) -- none of which were
in the apt install list, so the post-fetch ldd check failed.
2026-06-17 20:11:33 +03:00

209 lines
8.4 KiB
YAML

name: Build
on:
push:
tags: ["v*"]
workflow_dispatch:
# libmpv comes from KhooLy/mpv -- see that repo's FORK.md.
env:
MPV_FORK_TAG: "v0.41.0-gpu-next.5"
NODE_VERSION: "22"
RUST_VERSION: "stable"
permissions:
contents: write
jobs:
# ═══════════════════════════════════════════════════════════════════════════
# WINDOWS
# libmpv + its MSYS2 runtime deps come prebuilt from KhooLy/mpv.
# ═══════════════════════════════════════════════════════════════════════════
build-windows:
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v4
with:
repository: KhooLy/fluxa-core
path: fluxa-core
- name: Link sibling repos
shell: bash
run: |
PARENT="$(dirname "$GITHUB_WORKSPACE")"
cmd //c mklink //J "$PARENT\\fluxa-core" "$GITHUB_WORKSPACE\\fluxa-core"
- name: Set up Node
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
cache: npm
- name: Set up Rust
uses: dtolnay/rust-toolchain@master
with:
toolchain: ${{ env.RUST_VERSION }}
- name: Cache Rust build
uses: Swatinem/rust-cache@v2
with:
workspaces: src-tauri
- name: Fetch libmpv (KhooLy/mpv gpu-next fork)
shell: bash
run: ./src-tauri/fetch-libmpv.sh "${{ env.MPV_FORK_TAG }}"
- name: npm install
run: npm ci
- name: Build Tauri (Windows installer)
uses: tauri-apps/tauri-action@v0
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY }}
TAURI_SIGNING_PRIVATE_KEY_PASSWORD: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY_PASSWORD }}
FLUXA_TRAKT_CLIENT_ID: ${{ secrets.FLUXA_TRAKT_CLIENT_ID }}
FLUXA_TRAKT_CLIENT_SECRET: ${{ secrets.FLUXA_TRAKT_CLIENT_SECRET }}
FLUXA_MAL_CLIENT_ID: ${{ secrets.FLUXA_MAL_CLIENT_ID }}
FLUXA_SIMKL_CLIENT_ID: ${{ secrets.FLUXA_SIMKL_CLIENT_ID }}
FLUXA_SIMKL_CLIENT_SECRET: ${{ secrets.FLUXA_SIMKL_CLIENT_SECRET }}
FLUXA_NUVIO_SUPABASE_URL: ${{ secrets.FLUXA_NUVIO_SUPABASE_URL }}
FLUXA_NUVIO_SUPABASE_KEY: ${{ secrets.FLUXA_NUVIO_SUPABASE_KEY }}
with:
tagName: ${{ github.ref_name }}
releaseName: "Fluxa Desktop ${{ github.ref_name }}"
releaseDraft: false
generateReleaseNotes: true
args: --target x86_64-pc-windows-msvc
# ═══════════════════════════════════════════════════════════════════════════
# macOS
# libmpv comes prebuilt from KhooLy/mpv, already dylibbundler'd.
# ═══════════════════════════════════════════════════════════════════════════
build-macos:
runs-on: macos-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v4
with:
repository: KhooLy/fluxa-core
path: fluxa-core
- name: Link sibling repos
run: ln -sfn "$GITHUB_WORKSPACE/fluxa-core" "$(dirname "$GITHUB_WORKSPACE")/fluxa-core"
- name: Set up Node
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
cache: npm
- name: Set up Rust
uses: dtolnay/rust-toolchain@master
with:
toolchain: ${{ env.RUST_VERSION }}
targets: aarch64-apple-darwin,x86_64-apple-darwin
- name: Cache Rust build
uses: Swatinem/rust-cache@v2
with:
workspaces: src-tauri
- name: Fetch libmpv (KhooLy/mpv gpu-next fork)
run: ./src-tauri/fetch-libmpv.sh "${{ env.MPV_FORK_TAG }}"
- name: npm install
run: npm ci
- name: Build Tauri (macOS DMG — universal binary)
uses: tauri-apps/tauri-action@v0
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY }}
TAURI_SIGNING_PRIVATE_KEY_PASSWORD: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY_PASSWORD }}
FLUXA_TRAKT_CLIENT_ID: ${{ secrets.FLUXA_TRAKT_CLIENT_ID }}
FLUXA_TRAKT_CLIENT_SECRET: ${{ secrets.FLUXA_TRAKT_CLIENT_SECRET }}
FLUXA_MAL_CLIENT_ID: ${{ secrets.FLUXA_MAL_CLIENT_ID }}
FLUXA_SIMKL_CLIENT_ID: ${{ secrets.FLUXA_SIMKL_CLIENT_ID }}
FLUXA_SIMKL_CLIENT_SECRET: ${{ secrets.FLUXA_SIMKL_CLIENT_SECRET }}
FLUXA_NUVIO_SUPABASE_URL: ${{ secrets.FLUXA_NUVIO_SUPABASE_URL }}
FLUXA_NUVIO_SUPABASE_KEY: ${{ secrets.FLUXA_NUVIO_SUPABASE_KEY }}
with:
tagName: ${{ github.ref_name }}
releaseName: "Fluxa Desktop ${{ github.ref_name }}"
releaseDraft: false
generateReleaseNotes: true
args: --target universal-apple-darwin
# ═══════════════════════════════════════════════════════════════════════════
# LINUX
# libmpv comes prebuilt from KhooLy/mpv (built on ubuntu-24.04, must match).
# ═══════════════════════════════════════════════════════════════════════════
build-linux:
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v4
with:
repository: KhooLy/fluxa-core
path: fluxa-core
- name: Link sibling repos
run: ln -sfn "$GITHUB_WORKSPACE/fluxa-core" "$(dirname "$GITHUB_WORKSPACE")/fluxa-core"
- name: Set up Node
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
cache: npm
- name: Set up Rust
uses: dtolnay/rust-toolchain@master
with:
toolchain: ${{ env.RUST_VERSION }}
- name: Cache Rust build
uses: Swatinem/rust-cache@v2
with:
workspaces: src-tauri
- name: Install system dependencies
run: |
sudo apt-get update
sudo apt-get install -y \
libavcodec-dev libavformat-dev libavutil-dev \
libswscale-dev libswresample-dev libavfilter-dev \
libass9 libplacebo-dev \
pkg-config \
libwebkit2gtk-4.1-dev libgtk-3-dev \
libayatana-appindicator3-dev librsvg2-dev \
patchelf
- name: Fetch libmpv (KhooLy/mpv gpu-next fork)
run: ./src-tauri/fetch-libmpv.sh "${{ env.MPV_FORK_TAG }}"
- name: Verify libmpv.so is intact
run: |
ldd src-tauri/lib/libmpv.so.2 | grep 'not found' && exit 1 || true
echo "OK: all libmpv deps resolvable on this runner"
- name: npm install
run: npm ci
- name: Build Tauri (AppImage + deb)
uses: tauri-apps/tauri-action@v0
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY }}
TAURI_SIGNING_PRIVATE_KEY_PASSWORD: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY_PASSWORD }}
FLUXA_TRAKT_CLIENT_ID: ${{ secrets.FLUXA_TRAKT_CLIENT_ID }}
FLUXA_TRAKT_CLIENT_SECRET: ${{ secrets.FLUXA_TRAKT_CLIENT_SECRET }}
FLUXA_MAL_CLIENT_ID: ${{ secrets.FLUXA_MAL_CLIENT_ID }}
FLUXA_SIMKL_CLIENT_ID: ${{ secrets.FLUXA_SIMKL_CLIENT_ID }}
FLUXA_SIMKL_CLIENT_SECRET: ${{ secrets.FLUXA_SIMKL_CLIENT_SECRET }}
FLUXA_NUVIO_SUPABASE_URL: ${{ secrets.FLUXA_NUVIO_SUPABASE_URL }}
FLUXA_NUVIO_SUPABASE_KEY: ${{ secrets.FLUXA_NUVIO_SUPABASE_KEY }}
with:
tagName: ${{ github.ref_name }}
releaseName: "Fluxa Desktop ${{ github.ref_name }}"
releaseDraft: false
generateReleaseNotes: true
args: --target x86_64-unknown-linux-gnu