Files
seanime-docker/seanime-2.9.10/.github/workflows/electron-build.yml.new
2025-09-20 14:08:38 +01:00

152 lines
5.4 KiB
Plaintext

name: Build Electron App
on:
workflow_call:
outputs:
appVersion:
description: "The version of the app"
value: ${{ jobs.build-electron.outputs.app_version }}
jobs:
build-electron:
strategy:
fail-fast: false
matrix:
# IDs:
# - seanime-denshi-darwin-arm
# - seanime-denshi-darwin-intel
# - seanime-denshi-linux
# - seanime-denshi-windows
include:
# For Mac Universal
- os: 'macos-latest'
id: 'seanime-denshi-darwin-arm64'
go_binary_id: 'seanime-server-darwin' # Artifact: go-seanime-server-darwin (contains both arm64 and x86_64)
electron_args: '--mac --arm64'
# For Intel-based macs
- os: 'macos-latest'
id: 'seanime-denshi-darwin-x64'
go_binary_id: 'seanime-server-darwin' # Artifact: go-seanime-server-darwin (contains both arm64 and x86_64)
electron_args: '--mac --x64'
# For Linux
- os: 'ubuntu-latest'
id: 'seanime-denshi-linux-x64'
go_binary_id: 'seanime-server-linux' # Artifact: go-seanime-server-linux (contains x86_64)
electron_args: '--linux'
# For Windows
- os: 'windows-latest'
id: 'seanime-denshi-windows-x64'
go_binary_id: 'seanime-server-windows' # Artifact: go-seanime-server-windows (contains x86_64)
electron_args: '--win'
runs-on: ${{ matrix.os }}
outputs:
app_version: ${{ steps.get-version.outputs.version }}
steps:
- name: Checkout code 📂
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Setup Node.js 📦
uses: actions/setup-node@v4
with:
node-version: '20'
- name: Get package version 📦
id: get-version
run: |
NODE_VERSION=$(node -p "require('./seanime-denshi/package.json').version")
echo "version=$NODE_VERSION" >> $GITHUB_OUTPUT
shell: bash
# Install dependencies
- name: Install dependencies (Ubuntu) 📦
if: matrix.os == 'ubuntu-latest'
run: |
sudo apt-get update
sudo apt-get install -y libgtk-3-dev libnss3-dev libxss-dev libasound2-dev
# Download the web folders
- name: Download web folder artifact 📥
uses: actions/download-artifact@v4
with:
name: web-denshi
path: web-denshi
# Move web-denshi folder into seanime-denshi
- name: Move web-denshi folder 🚚
run: mv web-denshi seanime-denshi/
shell: bash
- name: Ensure binaries folder exists (UNIX)
if: matrix.os == 'macos-latest' || matrix.os == 'ubuntu-latest'
run: mkdir -p ./seanime-denshi/binaries
- name: Ensure binaries folder exists (Windows)
if: matrix.os == 'windows-latest'
run: mkdir .\seanime-denshi\binaries
# Download the server binaries based on matrix.go_binary_id
- name: Download server binaries 📥
uses: actions/download-artifact@v4
with:
name: go-${{ matrix.go_binary_id }}
path: ./seanime-denshi/binaries
# Extract server binaries
- name: Extract server binaries (macOS x64) 📂
if: matrix.os == 'macos-latest' && matrix.id == 'seanime-denshi-darwin-x64'
# Extracts seanime-server-darwin-arm64 and seanime-server-darwin-amd64
# Only keep seanime-server-darwin-amd64
run: |
tar -xf ./seanime-denshi/binaries/binaries-${{ matrix.go_binary_id }}.tar -C ./seanime-denshi/binaries
# Remove the other binary
rm -rf ./seanime-denshi/binaries/seanime-server-darwin-arm64
- name: Extract server binaries (macOS arm64) 📂
if: matrix.os == 'macos-latest' && matrix.id == 'seanime-denshi-darwin-arm64'
# Extracts seanime-server-darwin-arm64 and seanime-server-darwin-amd64
# Only keep seanime-server-darwin-arm64
run: |
tar -xf ./seanime-denshi/binaries/binaries-${{ matrix.go_binary_id }}.tar -C ./seanime-denshi/binaries
# Remove the other binary
rm -rf ./seanime-denshi/binaries/seanime-server-darwin-amd64
- name: Extract server binaries (Linux) 📂
if: matrix.os == 'ubuntu-latest' && matrix.id == 'seanime-denshi-linux-x64'
# Extracts seanime-server-linux-amd64
run: tar -xf ./seanime-denshi/binaries/binaries-${{ matrix.go_binary_id }}.tar -C ./seanime-denshi/binaries
- name: Extract server binaries (Windows) 📂
if: matrix.os == 'windows-latest'
# Extracts seanime-server-windows-amd64
run: 7z x ".\seanime-denshi\binaries\binaries-${{ matrix.go_binary_id }}.zip" "-o./seanime-denshi/binaries/"
# Copy app icon
- name: Copy app icon 📝
run: |
mkdir -p ./seanime-denshi/assets
cp ./seanime-desktop/src-tauri/app-icon.png ./seanime-denshi/assets/
shell: bash
# Install and build
- name: Install and build 📦️
run: |
cd seanime-denshi
npm install
npm run build -- ${{ matrix.electron_args }}
shell: bash
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# Upload the artifacts
- name: Upload Electron artifacts 📤
uses: actions/upload-artifact@v4
with:
name: electron-${{ matrix.id }}
path: |
./seanime-denshi-*
./seanime-denshi/dist/*.yml