152 lines
5.4 KiB
Plaintext
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
|