update #85
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Release Draft | |
on: | |
workflow_dispatch: | |
push: | |
tags: | |
- 'v*' | |
permissions: | |
contents: write | |
jobs: | |
build-webapp: # TODO Uncomment if building web | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
# Web | |
- name: Set up Node.js | |
uses: actions/setup-node@v4 | |
with: | |
node-version: '20' | |
# outputs in "seanime-web/out/" and "seanime-web/out-desktop/" | |
- name: Install dependencies and build Next.js app | |
run: | | |
cd seanime-web/ | |
npm install | |
npm run build | |
npm run build:desktop | |
cd .. | |
# Upload the output to be used in the next job | |
- name: Upload web folder | |
uses: actions/upload-artifact@v4 | |
with: | |
name: web | |
path: seanime-web/out # output dir of build | |
- name: Upload web folder (desktop) | |
uses: actions/upload-artifact@v4 | |
with: | |
name: web-desktop | |
path: seanime-web/out-desktop # output dir of build:desktop | |
build-server: | |
needs: build-webapp # TODO Uncomment if building web | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
# 6 binaries: 2 for Windows, 2 for Linux, 2 for macOS | |
include: | |
# This is the systray version of the Windows binary used for the server build | |
- os: macos-latest # seanime-server-systray-windows.exe | |
id: seanime-server-systray-windows | |
go_flags: -trimpath -buildmode=exe -ldflags="-s -w -H=windowsgui -extldflags '-static'" | |
# This is the non-systray version of the Windows binary used for the Tauri Windows build | |
- os: windows-latest # seanime-server-windows.exe | |
id: seanime-server-windows | |
go_flags: -trimpath -ldflags="-s -w" -tags=nosystray | |
# These are the Linux binaries used for the server build and the Tauri Linux build | |
- os: ubuntu-latest # seanime-server-linux-arm64, seanime-server-linux-amd64 | |
id: seanime-server-linux | |
go_flags: -trimpath -ldflags="-s -w" | |
# These are the macOS binaries used for the server build and the Tauri macOS build | |
- os: macos-latest # seanime-server-darwin-arm64, seanime-server-darwin-amd64 | |
id: seanime-server-darwin | |
go_env: CGO_ENABLED=0 | |
go_flags: -trimpath -ldflags="-s -w" | |
steps: | |
- name: Checkout code ⬇️ | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 # Fetch all history | |
fetch-tags: true # Fetch all tags | |
set-safe-directory: true # Add repo path as safe.directory | |
- name: Fetch all tags # Fetch all tags (again? can't hurt) | |
run: git fetch --force --tags | |
# Go | |
- name: Set up Go ⬇️ | |
uses: actions/setup-go@v5 | |
with: | |
go-version: '1.23.4' | |
# Download the web folders | |
# TODO Uncomment if building web | |
- name: Download web folder artifact | |
uses: actions/download-artifact@v4 | |
with: | |
name: web | |
path: web | |
# Create the binary destination folder | |
# ./binaries | |
# |--- ... | |
- name: Create binary destination folder (UNIX) 🗃️ | |
if: matrix.os == 'macos-latest' || matrix.os == 'ubuntu-latest' | |
run: mkdir -p binaries | |
- name: Create binary destination folder (Windows) 🗃️ | |
if: matrix.os == 'windows-latest' | |
run: mkdir -p binaries | |
shell: bash | |
#--- | |
# ONLY for Windows systray build (seanime-server-systray-windows) | |
# For the Windows systray build (built on macOS runner), we need to install the necessary dependencies | |
- name: Install C dependencies ⬇️ # macos windows systray build | |
if: matrix.id == 'seanime-server-systray-windows' | |
run: | | |
brew install filosottile/musl-cross/musl-cross | |
brew install llvm | |
brew install mingw-w64 | |
# Build the Windows systray binary | |
# ./binaries/seanime-server-systray-windows.exe | |
- name: Build Windows Systray 📦️ | |
if: matrix.id == 'seanime-server-systray-windows' | |
env: | |
GOARCH: amd64 | |
GOOS: windows | |
CGO_ENABLED: 1 | |
CC: x86_64-w64-mingw32-gcc | |
CXX: x86_64-w64-mingw32-g++ | |
run: | | |
go build -o seanime-server-systray-windows.exe ${{ matrix.go_flags }} . | |
# Build the Windows non-systray binary | |
# ./seanime-server-windows.exe | |
- name: Build Windows Non-Systray 📦️ | |
if: matrix.id == 'seanime-server-windows' | |
env: | |
GOARCH: amd64 | |
GOOS: windows | |
CGO_ENABLED: 0 | |
run: | | |
go build -o seanime-server-windows.exe ${{ matrix.go_flags }} . | |
shell: bash | |
# Build the Linux binaries | |
# ./seanime-server-linux-amd64 | |
# ./seanime-server-linux-arm64 | |
- name: Build Linux 📦️ | |
if: matrix.id == 'seanime-server-linux' | |
run: | | |
CGO_ENABLED=0 GOARCH=amd64 go build -o seanime-server-linux-amd64 ${{ matrix.go_flags }} . | |
CGO_ENABLED=0 GOARCH=arm64 go build -o seanime-server-linux-arm64 ${{ matrix.go_flags }} . | |
# Build the macOS binaries | |
# ./seanime-server-darwin-amd64 | |
# ./seanime-server-darwin-arm64 | |
- name: Build macOS 📦️ | |
if: matrix.id == 'seanime-server-darwin' | |
run: | | |
CGO_ENABLED=0 GOARCH=amd64 go build -o seanime-server-darwin-amd64 ${{ matrix.go_flags }} . | |
CGO_ENABLED=0 GOARCH=arm64 go build -o seanime-server-darwin-arm64 ${{ matrix.go_flags }} . | |
# Tar the binaries | |
- name: Tar the binaries (UNIX) 🗃️ | |
if: matrix.os == 'macos-latest' || matrix.os == 'ubuntu-latest' | |
# binaries-seanime-server-darwin.tar | |
# binaries-seanime-server-linux.tar | |
# binaries-seanime-server-systray-windows.tar | |
run: | | |
tar -cf binaries-${{ matrix.id }}.tar seanime-server-* | |
# Zip the binaries | |
- name: Zip the binaries (Windows) 🗃️ | |
if: matrix.os == 'windows-latest' | |
# binaries-seanime-server-windows.zip | |
run: | | |
7z a "binaries-${{ matrix.id }}.zip" seanime-server-* | |
# Upload the binaries to be used in the next job | |
- name: Upload binary folder (UNIX) 📤 | |
uses: actions/upload-artifact@v4 | |
if: matrix.os == 'macos-latest' || matrix.os == 'ubuntu-latest' | |
with: | |
# go-seanime-server-linux | |
# go-seanime-server-darwin | |
# go-seanime-server-systray-windows | |
name: go-${{ matrix.id }} | |
path: binaries-${{ matrix.id }}.tar | |
- name: Upload binary folder (Windows) 📤 | |
uses: actions/upload-artifact@v4 | |
if: matrix.os == 'windows-latest' | |
with: | |
# go-seanime-server-windows | |
name: go-${{ matrix.id }} | |
path: binaries-${{ matrix.id }}.zip | |
build-tauri: | |
needs: build-server | |
strategy: | |
fail-fast: false | |
matrix: | |
# IDs: | |
# - seanime-desktop-darwin-arm | |
# - seanime-desktop-darwin-intel | |
# - seanime-desktop-linux | |
# - seanime-desktop-windows | |
include: | |
# For Arm-based macs (M1 and above). | |
- os: 'macos-latest' | |
id: 'seanime-desktop-darwin-arm' | |
go_binary_id: 'seanime-server-darwin' # Artifact: go-seanime-server-darwin (contains both arm64 and x86_64) | |
args: '--target aarch64-apple-darwin' | |
# For Intel-based macs. | |
- os: 'macos-latest' | |
id: 'seanime-desktop-darwin-intel' | |
go_binary_id: 'seanime-server-darwin' # Artifact: go-seanime-server-darwin (contains both arm64 and x86_64) | |
args: '--target x86_64-apple-darwin' | |
# For Linux | |
- os: 'ubuntu-22.04' # for Linux | |
id: 'seanime-desktop-linux' # Artifact: go-seanime-server-linux (contains both arm64 and x86_64) | |
go_binary_id: 'seanime-server-linux' | |
args: '' | |
# For Windows | |
- os: 'windows-latest' # for Windows | |
id: 'seanime-desktop-windows' # Artifact: go-seanime-server-windows (contains x86_64) | |
go_binary_id: 'seanime-server-windows' | |
args: '' | |
runs-on: ${{ matrix.os }} | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install dependencies (Ubuntu) ⬇️ | |
if: matrix.os == 'ubuntu-22.04' | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev patchelf | |
- name: Install Rust stable ⬇️ | |
uses: dtolnay/rust-toolchain@stable | |
with: | |
# Those targets are only used on macOS runners so it's in an `if` to slightly speed up windows and linux builds. | |
targets: ${{ matrix.id == 'seanime-desktop-darwin-intel' && 'x86_64-apple-darwin' || matrix.id == 'seanime-desktop-darwin-arm' && 'aarch64-apple-darwin' || '' }} | |
- name: Setup node ⬇️ | |
uses: actions/setup-node@v4 | |
with: | |
node-version: '20' | |
- name: Install Tauri CLI ⬇️ | |
run: | | |
cd seanime-desktop | |
npm install | |
- name: Rust cache ⬇️ | |
uses: swatinem/rust-cache@v2 | |
with: | |
workspaces: './seanime-desktop/src-tauri -> target' | |
# Download the web folder | |
# TODO Uncomment if building web | |
- name: Download web folder artifact | |
uses: actions/download-artifact@v4 | |
with: | |
name: web-desktop | |
path: web-desktop | |
# Download the server binaries depending on matrix.go_binary_id | |
- name: Download server binaries 📥 | |
uses: actions/download-artifact@v4 | |
with: | |
# go-seanime-server-windows or | |
# go-seanime-server-linux or | |
# go-seanime-server-darwin | |
name: go-${{ matrix.go_binary_id }} | |
path: ./seanime-desktop/src-tauri/binaries | |
- name: Extract server binaries (UNIX) 📂 | |
if: matrix.os == 'macos-latest' || matrix.os == 'ubuntu-22.04' | |
run: tar -xf ./seanime-desktop/src-tauri/binaries/binaries-${{ matrix.go_binary_id }}.tar -C ./seanime-desktop/src-tauri/binaries | |
- name: Extract server binaries (Windows) 📂 | |
if: matrix.os == 'windows-latest' | |
run: 7z x ".\seanime-desktop\src-tauri\binaries\binaries-${{ matrix.go_binary_id }}.zip" "-o./seanime-desktop/src-tauri/binaries/" | |
# ----------------------------------------------------------------- delete | |
- name: Print downloaded binaries (UNIX) | |
if: matrix.os == 'macos-latest' || matrix.os == 'ubuntu-22.04' | |
run: ls -la ./seanime-desktop/src-tauri/binaries | |
- name: Print downloaded binaries (Windows) | |
if: matrix.os == 'windows-latest' | |
run: dir ./seanime-desktop/src-tauri/binaries | |
# ----------------------------------------------------------------- delete | |
- name: Determine target triple (UNIX) 🎯 | |
# id: target_triple | |
if: matrix.os == 'macos-latest' || matrix.os == 'ubuntu-22.04' | |
run: | | |
TARGET_TRIPLE=$(rustc -Vv | grep host | cut -f2 -d' ') | |
echo "TARGET_TRIPLE=${TARGET_TRIPLE}" >> $GITHUB_ENV | |
- name: Determine target triple (Windows) 🎯 | |
# id: target_triple | |
if: matrix.os == 'windows-latest' | |
run: | | |
$TARGET_TRIPLE = rustc -Vv | Select-String "host:" | ForEach-Object {$_.Line.split(" ")[1]} | |
echo "TARGET_TRIPLE=$TARGET_TRIPLE" >> $env:GITHUB_ENV | |
shell: pwsh | |
# seanime-server-windows.exe -> seanime-x86_64-pc-windows-msvc.exe | |
- name: Rename sidecar binary (Windows) 📝 | |
if: matrix.id == 'seanime-desktop-windows' | |
run: | | |
powershell -Command "Rename-Item -Path ./seanime-desktop/src-tauri/binaries/seanime-server-windows.exe -NewName seanime-${{ env.TARGET_TRIPLE }}.exe" | |
# seanime-server-linux-amd64 -> seanime-unknown-linux-musl | |
- name: Rename sidecar binaries (Linux) 📝 | |
if: matrix.id == 'seanime-desktop-linux' | |
run: | | |
mv ./seanime-desktop/src-tauri/binaries/seanime-server-linux-amd64 ./seanime-desktop/src-tauri/binaries/seanime-${{ env.TARGET_TRIPLE }} | |
# seanime-server-darwin-amd64 -> seanime-x86_64-apple-darwin | |
- name: Rename sidecar binaries (MacOS Intel) 📝 | |
if: matrix.id == 'seanime-desktop-darwin-intel' | |
# Here we hardcode the target triple because the macOS runner is ARM based | |
run: | | |
mv ./seanime-desktop/src-tauri/binaries/seanime-server-darwin-amd64 ./seanime-desktop/src-tauri/binaries/seanime-x86_64-apple-darwin | |
# seanime-server-darwin-arm64 -> seanime-aarch64-apple-darwin | |
- name: Rename sidecar binaries (MacOS Arm) 📝 | |
if: matrix.id == 'seanime-desktop-darwin-arm' | |
run: | | |
mv ./seanime-desktop/src-tauri/binaries/seanime-server-darwin-arm64 ./seanime-desktop/src-tauri/binaries/seanime-${{ env.TARGET_TRIPLE }} | |
# ----------------------------------------------------------------- delete | |
- name: Print downloaded binaries | |
if: matrix.os == 'macos-latest' || matrix.os == 'ubuntu-22.04' | |
run: ls -la ./seanime-desktop/src-tauri/binaries | |
- name: Print downloaded binaries | |
if: matrix.os == 'windows-latest' | |
run: dir ./seanime-desktop/src-tauri/binaries | |
# ----------------------------------------------------------------- delete | |
# Build Tauri | |
- name: Run Tauri action 🚀 | |
id: tauri-action | |
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 }} | |
# APPLE_CERTIFICATE: ${{ secrets.APPLE_CERTIFICATE }} | |
# APPLE_CERTIFICATE_PASSWORD: ${{ secrets.APPLE_CERTIFICATE_PASSWORD }} | |
# APPLE_SIGNING_IDENTITY: ${{ secrets.APPLE_SIGNING_IDENTITY }} | |
# APPLE_ID: ${{ secrets.APPLE_ID }} | |
# APPLE_PASSWORD: ${{ secrets.APPLE_PASSWORD }} | |
# APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }} | |
with: | |
projectPath: './seanime-desktop' | |
args: ${{ matrix.args }} | |
updaterJsonPreferNsis: true | |
- name: Rename Tauri artifacts (UNIX) 📝 | |
# ./ | |
# |- seanime-desktop-darwin-arm.app.tar.gz | |
# |- seanime-desktop-darwin-arm.app.tar.gz.sig <- Signature | |
# |- seanime-desktop-darwin-intel.app.tar.gz | |
# |- seanime-desktop-darwin-intel.app.tar.gz.sig <- Signature | |
# |- seanime-desktop-linux.AppImage <- UNCOMPRESSED | |
# |- seanime-desktop-linux.AppImage.sig <- Signature UNCOMPRESSED | |
# |- seanime-desktop-windows-setup.exe <- UNCOMPRESSED | |
# |- seanime-desktop-windows-setup.exe.sig <- Signature UNCOMPRESSED | |
if: matrix.os == 'macos-latest' || matrix.os == 'ubuntu-22.04' | |
# We hardcode the macOS target triple because the macOS runner is ARM based and builds both arm64 and x86_64 | |
run: | | |
if [ -f ./seanime-desktop/src-tauri/target/aarch64-apple-darwin/release/bundle/macos/Seanime\ Desktop.app.tar.gz ]; then | |
mv ./seanime-desktop/src-tauri/target/aarch64-apple-darwin/release/bundle/macos/Seanime\ Desktop.app.tar.gz ./seanime-desktop-darwin-arm.app.tar.gz | |
mv ./seanime-desktop/src-tauri/target/aarch64-apple-darwin/release/bundle/macos/Seanime\ Desktop.app.tar.gz.sig ./seanime-desktop-darwin-arm.app.tar.gz.sig | |
elif [ -f ./seanime-desktop/src-tauri/target/x86_64-apple-darwin/release/bundle/macos/Seanime\ Desktop.app.tar.gz ]; then | |
mv ./seanime-desktop/src-tauri/target/x86_64-apple-darwin/release/bundle/macos/Seanime\ Desktop.app.tar.gz ./seanime-desktop-darwin-intel.app.tar.gz | |
mv ./seanime-desktop/src-tauri/target/x86_64-apple-darwin/release/bundle/macos/Seanime\ Desktop.app.tar.gz.sig ./seanime-desktop-darwin-intel.app.tar.gz.sig | |
elif [ -f ./seanime-desktop/src-tauri/target/release/bundle/appimage/Seanime\ Desktop_${{ steps.tauri-action.outputs.appVersion }}_amd64.AppImage ]; then | |
mv ./seanime-desktop/src-tauri/target/release/bundle/appimage/Seanime\ Desktop_${{ steps.tauri-action.outputs.appVersion }}_amd64.AppImage ./seanime-desktop-linux.AppImage | |
mv ./seanime-desktop/src-tauri/target/release/bundle/appimage/Seanime\ Desktop_${{ steps.tauri-action.outputs.appVersion }}_amd64.AppImage.sig ./seanime-desktop-linux.AppImage.sig | |
fi | |
- name: Rename Tauri artifacts (Windows) 📝 | |
if: matrix.os == 'windows-latest' | |
run: | | |
powershell -Command "Move-Item -Path './seanime-desktop/src-tauri/target/release/bundle/nsis/Seanime Desktop_${{ steps.tauri-action.outputs.appVersion }}_x64-setup.exe' -Destination './seanime-desktop-windows-setup.exe'" | |
powershell -Command "Move-Item -Path './seanime-desktop/src-tauri/target/release/bundle/nsis/Seanime Desktop_${{ steps.tauri-action.outputs.appVersion }}_x64-setup.exe.sig' -Destination './seanime-desktop-windows-setup.exe.sig'" | |
- name: Tar the Tauri artifacts (Linux) 🗃️ | |
if: matrix.os == 'ubuntu-22.04' | |
# Note: The macOS artifacts are already packaged, so we don't need to compress them | |
# Compress the Linux AppImage, not the signature | |
run: | | |
if [ -f ./seanime-desktop-linux.AppImage ]; then | |
tar -czf seanime-desktop-linux.AppImage.tar.gz seanime-desktop-linux.AppImage | |
fi | |
- name: Zip the Tauri artifacts (Windows) 🗃️ | |
if: matrix.os == 'windows-latest' | |
# Compress the Windows setup, not the signature | |
run: | | |
7z a seanime-desktop-windows-setup.exe.zip seanime-desktop-windows-setup.exe | |
# ----------------------------------------------------------------- delete | |
- name: Print all | |
if: matrix.os == 'macos-latest' || matrix.os == 'ubuntu-22.04' | |
run: ls -la . | |
- name: Print downloaded binaries | |
if: matrix.os == 'windows-latest' | |
run: dir . | |
# ----------------------------------------------------------------- delete | |
# Upload the Tauri artifacts to be used in the next job | |
- name: Upload tauri artifacts 📤 | |
uses: actions/upload-artifact@v4 | |
with: | |
# Artifact IDs: | |
# tauri-seanime-server-darwin-arm | |
# tauri-seanime-server-darwin-intel | |
# tauri-seanime-server-linux | |
# tauri-seanime-server-windows | |
name: tauri-${{ matrix.id }} | |
path: | | |
./seanime-desktop-darwin-arm.app.tar.gz | |
./seanime-desktop-darwin-arm.app.tar.gz.sig | |
./seanime-desktop-darwin-intel.app.tar.gz | |
./seanime-desktop-darwin-intel.app.tar.gz.sig | |
./seanime-desktop-linux.AppImage | |
./seanime-desktop-linux.AppImage.tar.gz | |
./seanime-desktop-linux.AppImage.sig | |
./seanime-desktop-windows-setup.exe | |
./seanime-desktop-windows-setup.exe.zip | |
./seanime-desktop-windows-setup.exe.sig | |
release: | |
runs-on: ubuntu-latest | |
needs: [ build-server, build-tauri ] | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Download tauri artifacts 📥 | |
uses: actions/download-artifact@v4 | |
with: | |
pattern: tauri-* | |
path: ./artifacts | |
merge-multiple: true | |
- name: Determine version from tag name 🔎 | |
run: | | |
if [[ "$GITHUB_REF" == refs/tags/v* ]]; then | |
VERSION=${GITHUB_REF/refs\/tags\/v/} | |
echo "Version extracted from tag: $VERSION" | |
elif [[ "$GITHUB_REF" == refs/tags/* ]]; then | |
VERSION=${GITHUB_REF/refs\/tags\//} | |
echo "Version extracted from tag: $VERSION" | |
else | |
echo "Warning: No tag associated with this run. Defaulting to version 0.1.0." | |
VERSION="0.1.0" | |
fi | |
echo "VERSION=$VERSION" >> $GITHUB_ENV | |
- name: Print version | |
run: echo "Version is ${{ env.VERSION }}" | |
- name: Download server binaries 📥 | |
uses: actions/download-artifact@v4 | |
with: | |
pattern: go-* | |
path: ./artifacts | |
# ./artifacts | |
# |- binaries-seanime-server-darwin.tar (contains 2) | |
# |- binaries-seanime-server-linux.tar (contains 2) | |
# |- binaries-seanime-server-systray-windows.tar (contains 1) | |
merge-multiple: true | |
- name: Print all artifacts | |
run: ls -la ./artifacts | |
- name: Extract - Rename - Archive server binaries 📂 | |
# ./artifacts | |
# |- ... | |
# \/ /binaries-seanime-server-darwin.tar | |
# |- seanime-server-darwin-amd64 -> ../seanime -> ../seanime-${{ env.VERSION }}_MacOS_arm64.tar.gz | |
# |- seanime-server-darwin-arm64 -> ../seanime -> ../seanime-${{ env.VERSION }}_MacOS_x86_64.tar.gz | |
# \/ /binaries-seanime-server-darwin.tar | |
# |- seanime-server-linux-amd64 -> ../seanime -> ../seanime-${{ env.VERSION }}_Linux_x86_64.tar.gz | |
# |- seanime-server-linux-arm64 -> ../seanime -> ../seanime-${{ env.VERSION }}_Linux_arm64.tar.gz | |
# \/ /binaries-seanime-server-systray-windows.tar | |
# |- seanime-server-systray-windows.exe -> ../seanime.exe -> ../seanime-${{ env.VERSION }}_Windows_x86_64.zip | |
run: | | |
if [ -f ./artifacts/binaries-seanime-server-darwin.tar ]; then | |
# Extract binaries | |
tar -xf ./artifacts/binaries-seanime-server-darwin.tar -C ./artifacts | |
# Rename & compress binaries | |
mv ./artifacts/seanime-server-darwin-amd64 ./seanime | |
tar czf ./seanime-${{ env.VERSION }}_MacOS_x86_64.tar.gz ./seanime | |
rm -rf ./seanime | |
mv ./artifacts/seanime-server-darwin-arm64 ./seanime | |
tar czf ./seanime-${{ env.VERSION }}_MacOS_arm64.tar.gz ./seanime | |
rm -rf ./seanime | |
fi | |
if [ -f ./artifacts/binaries-seanime-server-linux.tar ]; then | |
# Extract binaries | |
tar -xf ./artifacts/binaries-seanime-server-linux.tar -C ./artifacts | |
# Rename & compress binaries | |
mv ./artifacts/seanime-server-linux-amd64 ./seanime | |
tar czf ./seanime-${{ env.VERSION }}_Linux_x86_64.tar.gz ./seanime | |
rm -rf ./seanime | |
mv ./artifacts/seanime-server-linux-arm64 ./seanime | |
tar czf ./seanime-${{ env.VERSION }}_Linux_arm64.tar.gz ./seanime | |
rm -rf ./seanime | |
fi | |
if [ -f ./artifacts/binaries-seanime-server-systray-windows.tar ]; then | |
# Extract binaries | |
tar -xf ./artifacts/binaries-seanime-server-systray-windows.tar -C ./artifacts | |
# Rename & compress binaries | |
mv ./artifacts/seanime-server-systray-windows.exe ./seanime.exe | |
7z a ./seanime-${{ env.VERSION }}_Windows_x86_64.zip ./seanime.exe | |
rm -rf ./seanime.exe | |
fi | |
shell: bash | |
- name: Print all artifacts | |
run: ls -la ./artifacts | |
- name: Move & Rename Tauri assets 📝🗃️ | |
# Move Tauri assets to the root directory and rename them | |
# ./artifacts | |
# |- seanime-desktop-darwin-arm.app.tar.gz -> ../seanime-desktop-${{ env.VERSION }}_MacOS_arm64.app.tar.gz | |
# |- seanime-desktop-darwin-arm.app.tar.gz.sig -> ../seanime-desktop-${{ env.VERSION }}_MacOS_arm64.app.tar.gz.sig | |
# |- seanime-desktop-darwin-intel.app.tar.gz -> ../seanime-desktop-${{ env.VERSION }}_MacOS_x86_64.app.tar.gz | |
# |- seanime-desktop-darwin-intel.app.tar.gz.sig -> ../seanime-desktop-${{ env.VERSION }}_MacOS_x86_64.app.tar.gz.sig | |
# |- seanime-desktop-linux.AppImage -> ../seanime-desktop-${{ env.VERSION }}_Linux_x86_64.AppImage | |
# |- seanime-desktop-linux.AppImage.tar.gz -> ../seanime-desktop-${{ env.VERSION }}_Linux_x86_64.AppImage.tar.gz | |
# |- seanime-desktop-linux.AppImage.sig -> ../seanime-desktop-${{ env.VERSION }}_Linux_x86_64.AppImage.sig | |
# |- seanime-desktop-windows-setup.exe -> ../seanime-desktop-${{ env.VERSION }}_Windows_x86_64.exe | |
# |- seanime-desktop-windows-setup.exe.zip -> ../seanime-desktop-${{ env.VERSION }}_Windows_x86_64.exe.zip | |
# |- seanime-desktop-windows-setup.exe.sig -> ../seanime-desktop-${{ env.VERSION }}_Windows_x86_64.sig | |
run: | | |
if [ -f ./artifacts/seanime-desktop-darwin-arm.app.tar.gz ]; then | |
mv ./artifacts/seanime-desktop-darwin-arm.app.tar.gz ./seanime-desktop-${{ env.VERSION }}_MacOS_arm64.app.tar.gz | |
mv ./artifacts/seanime-desktop-darwin-arm.app.tar.gz.sig ./seanime-desktop-${{ env.VERSION }}_MacOS_arm64.app.tar.gz.sig | |
fi | |
if [ -f ./artifacts/seanime-desktop-darwin-intel.app.tar.gz ]; then | |
mv ./artifacts/seanime-desktop-darwin-intel.app.tar.gz ./seanime-desktop-${{ env.VERSION }}_MacOS_x86_64.app.tar.gz | |
mv ./artifacts/seanime-desktop-darwin-intel.app.tar.gz.sig ./seanime-desktop-${{ env.VERSION }}_MacOS_x86_64.app.tar.gz.sig | |
fi | |
if [ -f ./artifacts/seanime-desktop-linux.AppImage.tar.gz ]; then | |
mv ./artifacts/seanime-desktop-linux.AppImage ./seanime-desktop-${{ env.VERSION }}_Linux_x86_64.AppImage | |
mv ./artifacts/seanime-desktop-linux.AppImage.tar.gz ./seanime-desktop-${{ env.VERSION }}_Linux_x86_64.AppImage.tar.gz | |
mv ./artifacts/seanime-desktop-linux.AppImage.sig ./seanime-desktop-${{ env.VERSION }}_Linux_x86_64.AppImage.sig | |
fi | |
if [ -f ./artifacts/seanime-desktop-windows-setup.exe.zip ]; then | |
mv ./artifacts/seanime-desktop-windows-setup.exe ./seanime-desktop-${{ env.VERSION }}_Windows_x86_64.exe | |
mv ./artifacts/seanime-desktop-windows-setup.exe.zip ./seanime-desktop-${{ env.VERSION }}_Windows_x86_64.exe.zip | |
mv ./artifacts/seanime-desktop-windows-setup.exe.sig ./seanime-desktop-${{ env.VERSION }}_Windows_x86_64.sig | |
fi | |
- name: Print all | |
run: ls -la . | |
# Go | |
- name: Set up Go ⬇️ | |
uses: actions/setup-go@v5 | |
with: | |
go-version: '1.23' | |
# Build the Go script | |
- name: Build Go scripts 🛠️ | |
run: | | |
go build -o generate_updater_latest ./.github/scripts/generate_updater_latest.go | |
go build -o generate_release_notes ./.github/scripts/generate_release_notes.go | |
# Run the Go scripts | |
- name: Generate latest.json 📦️ | |
env: | |
APP_VERSION: ${{ env.VERSION }} | |
run: ./generate_updater_latest | |
- name: Generate release notes 📦️ | |
env: | |
APP_VERSION: ${{ env.VERSION }} | |
run: ./generate_release_notes | |
- name: Read release notes 🔍 | |
id: read_release_notes | |
run: | | |
BODY=$(cat whats-new.md) | |
echo "RELEASE_BODY<<EOF" >> $GITHUB_ENV | |
echo "$BODY" >> $GITHUB_ENV | |
echo "EOF" >> $GITHUB_ENV | |
- name: Create release draft 🚀🚀🚀 | |
id: create_release | |
uses: softprops/action-gh-release@v2 | |
with: | |
fail_on_unmatched_files: false | |
files: | | |
latest.json | |
seanime-desktop-${{ env.VERSION }}_MacOS_arm64.app.tar.gz | |
seanime-desktop-${{ env.VERSION }}_MacOS_arm64.app.tar.gz.sig | |
seanime-desktop-${{ env.VERSION }}_MacOS_x86_64.app.tar.gz | |
seanime-desktop-${{ env.VERSION }}_MacOS_x86_64.app.tar.gz.sig | |
seanime-desktop-${{ env.VERSION }}_Linux_x86_64.AppImage | |
seanime-desktop-${{ env.VERSION }}_Linux_x86_64.AppImage.tar.gz | |
seanime-desktop-${{ env.VERSION }}_Linux_x86_64.AppImage.sig | |
seanime-desktop-${{ env.VERSION }}_Windows_x86_64.exe | |
seanime-desktop-${{ env.VERSION }}_Windows_x86_64.exe.zip | |
seanime-desktop-${{ env.VERSION }}_Windows_x86_64.exe.sig | |
seanime-${{ env.VERSION }}_MacOS_x86_64.tar.gz | |
seanime-${{ env.VERSION }}_MacOS_arm64.tar.gz | |
seanime-${{ env.VERSION }}_Linux_x86_64.tar.gz | |
seanime-${{ env.VERSION }}_Linux_arm64.tar.gz | |
seanime-${{ env.VERSION }}_Windows_x86_64.zip | |
token: ${{ secrets.GITHUB_TOKEN }} | |
tag_name: v${{ env.VERSION }} | |
release_name: v${{ env.VERSION }} | |
draft: true | |
prerelease: false | |
body: | | |
## What's new? | |
${{ env.RELEASE_BODY }} | |
--- | |
[Open an issue](https://github.com/5rahim/seanime/issues/new/choose) |