mirror of
https://github.com/MindWorkAI/AI-Studio.git
synced 2025-04-28 14:59:47 +00:00
174 lines
6.8 KiB
YAML
174 lines
6.8 KiB
YAML
name: Build and Release
|
|
on:
|
|
push
|
|
|
|
jobs:
|
|
build:
|
|
name: Build app
|
|
|
|
strategy:
|
|
fail-fast: true
|
|
matrix:
|
|
include:
|
|
- platform: 'macos-latest' # for ARM-based macOS (M1 and above)
|
|
rust_target: 'aarch64-apple-darwin'
|
|
dotnet_runtime: 'osx-arm64'
|
|
dotnet_name_postfix: '-aarch64-apple-darwin'
|
|
|
|
- platform: 'macos-latest' # for Intel-based macOS
|
|
rust_target: 'x86_64-apple-darwin'
|
|
dotnet_runtime: 'osx-x64'
|
|
dotnet_name_postfix: '-x86_64-apple-darwin'
|
|
|
|
- platform: 'ubuntu-22.04' # for x86-based linux
|
|
rust_target: 'x86_64-unknown-linux-gnu'
|
|
dotnet_runtime: 'linux-x64'
|
|
dotnet_name_postfix: '-x86_64-unknown-linux-gnu'
|
|
#
|
|
# Issue https://github.com/twistedfall/opencv-rust/issues/457
|
|
#
|
|
# - platform: 'ubuntu-22.04' # for ARM-based linux
|
|
# rust_target: 'aarch64-unknown-linux-gnu'
|
|
# dotnet_runtime: 'linux-arm64'
|
|
# dotnet_name_postfix: '-aarch64-unknown-linux-gnu'
|
|
|
|
- platform: 'windows-latest' # for x86-based windows
|
|
rust_target: 'x86_64-pc-windows-msvc'
|
|
dotnet_runtime: 'win-x64'
|
|
dotnet_name_postfix: '-x86_64-pc-windows-msvc.exe'
|
|
|
|
- platform: 'windows-latest' # for ARM-based windows
|
|
rust_target: 'aarch64-pc-windows-msvc'
|
|
dotnet_runtime: 'win-arm64'
|
|
dotnet_name_postfix: '-aarch64-pc-windows-msvc.exe'
|
|
|
|
runs-on: ${{ matrix.platform }}
|
|
steps:
|
|
- name: Checkout repository
|
|
uses: actions/checkout@v4
|
|
with:
|
|
lfs: true # Enable Git LFS
|
|
|
|
- name: Setup .NET
|
|
uses: actions/setup-dotnet@v4
|
|
with:
|
|
dotnet-version: '8'
|
|
dotnet-quality: 'ga'
|
|
cache: true
|
|
cache-dependency-path: 'app/MindWork AI Studio/packages.lock.json'
|
|
|
|
- name: Build .NET project
|
|
run: |
|
|
cd "app/MindWork AI Studio"
|
|
dotnet publish --configuration release --runtime ${{ matrix.dotnet_runtime }} --disable-build-servers --force --output ../../publish/dotnet
|
|
|
|
- name: Move & rename .NET artifact (Unix)
|
|
if: matrix.platform != 'windows-latest'
|
|
run: |
|
|
mkdir -p "app/MindWork AI Studio/bin/dist"
|
|
cd publish/dotnet
|
|
mv mindworkAIStudio "../../app/MindWork AI Studio/bin/dist/mindworkAIStudio${{ matrix.dotnet_name_postfix }}"
|
|
|
|
- name: Move & rename .NET artifact (Windows)
|
|
if: matrix.platform == 'windows-latest'
|
|
run: |
|
|
New-Item -ItemType Directory -Path "app\MindWork AI Studio\bin\dist" -Force
|
|
cd publish/dotnet
|
|
mv mindworkAIStudio.exe "../../app/MindWork AI Studio/bin/dist/mindworkAIStudio${{ matrix.dotnet_name_postfix }}"
|
|
|
|
- name: Setup Rust stable (ARM macOS)
|
|
if: matrix.platform == 'macos-latest' && matrix.rust_target == 'aarch64-apple-darwin'
|
|
uses: dtolnay/rust-toolchain@stable
|
|
with:
|
|
targets: 'aarch64-apple-darwin'
|
|
|
|
- name: Setup Rust stable (Intel macOS)
|
|
if: matrix.platform == 'macos-latest' && matrix.rust_target == 'x86_64-apple-darwin'
|
|
uses: dtolnay/rust-toolchain@stable
|
|
with:
|
|
targets: 'x86_64-apple-darwin'
|
|
|
|
- name: Setup Rust stable (x86 linux)
|
|
if: matrix.platform == 'ubuntu-22.04' && matrix.rust_target == 'x86_64-unknown-linux-gnu'
|
|
uses: dtolnay/rust-toolchain@stable
|
|
with:
|
|
targets: 'x86_64-unknown-linux-gnu'
|
|
|
|
- name: Setup Rust stable (ARM linux)
|
|
if: matrix.platform == 'ubuntu-22.04' && matrix.rust_target == 'aarch64-unknown-linux-gnu'
|
|
uses: dtolnay/rust-toolchain@stable
|
|
with:
|
|
targets: 'aarch64-unknown-linux-gnu'
|
|
|
|
- name: Setup Rust stable (x86 Windows)
|
|
if: matrix.platform == 'windows-latest' && matrix.rust_target == 'x86_64-pc-windows-msvc'
|
|
uses: dtolnay/rust-toolchain@stable
|
|
with:
|
|
targets: 'x86_64-pc-windows-msvc'
|
|
|
|
- name: Setup Rust stable (ARM Windows)
|
|
if: matrix.platform == 'windows-latest' && matrix.rust_target == 'aarch64-pc-windows-msvc'
|
|
uses: dtolnay/rust-toolchain@stable
|
|
with:
|
|
targets: 'aarch64-pc-windows-msvc'
|
|
|
|
- name: Setup dependencies (Ubuntu-specific)
|
|
if: matrix.platform == 'ubuntu-22.04'
|
|
run: |
|
|
sudo apt-get update
|
|
sudo apt-get install -y libwebkit2gtk-4.0-dev libappindicator3-dev librsvg2-dev patchelf
|
|
|
|
- name: Setup Tauri
|
|
run: |
|
|
cargo install tauri-cli
|
|
cargo install create-tauri-app --locked
|
|
|
|
- name: Build Tauri project
|
|
run: |
|
|
cd runtime
|
|
cargo tauri build --target ${{ matrix.rust_target }}
|
|
|
|
- name: Upload artifact (macOS)
|
|
if: startsWith(matrix.platform, 'macos')
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: MindWork AI Studio (macOS ${{ matrix.dotnet_runtime }})
|
|
path: "runtime/target/${{ matrix.rust_target }}/release/bundle/dmg/MindWork AI Studio_*.dmg"
|
|
if-no-files-found: error
|
|
retention-days: 1
|
|
|
|
- name: Upload artifact (Windows - MSI)
|
|
if: startsWith(matrix.platform, 'windows')
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: MindWork AI Studio (Windows MSI ${{ matrix.dotnet_runtime }})
|
|
path: "runtime/target/${{ matrix.rust_target }}/release/bundle/msi/MindWork AI Studio_*.msi"
|
|
if-no-files-found: error
|
|
retention-days: 1
|
|
|
|
- name: Upload artifact (Windows - NSIS)
|
|
if: startsWith(matrix.platform, 'windows')
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: MindWork AI Studio (Windows NSIS ${{ matrix.dotnet_runtime }})
|
|
path: "runtime/target/${{ matrix.rust_target }}/release/bundle/nsis/MindWork AI Studio_*.exe"
|
|
if-no-files-found: error
|
|
retention-days: 1
|
|
|
|
- name: Upload artifact (Linux - Debian Package)
|
|
if: startsWith(matrix.platform, 'ubuntu')
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: MindWork AI Studio (Debian Package ${{ matrix.dotnet_runtime }})
|
|
path: "runtime/target/${{ matrix.rust_target }}/release/bundle/deb/mind-work-ai-studio_*.deb"
|
|
if-no-files-found: error
|
|
retention-days: 1
|
|
|
|
- name: Upload artifact (Linux - AppImage)
|
|
if: startsWith(matrix.platform, 'ubuntu')
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: MindWork AI Studio (AppImage ${{ matrix.dotnet_runtime }})
|
|
path: "runtime/target/${{ matrix.rust_target }}/release/bundle/appimage/mind-work-ai-studio_*.AppImage"
|
|
if-no-files-found: error
|
|
retention-days: 1 |