The Gitea runner on Windows doesn't have bash available for composite actions. Replace dtolnay/rust-toolchain and actions/setup-node with direct PowerShell commands. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
136 lines
3.9 KiB
YAML
136 lines
3.9 KiB
YAML
name: Build App
|
|
|
|
on:
|
|
push:
|
|
branches: [main]
|
|
paths:
|
|
- "app/**"
|
|
- ".gitea/workflows/build-app.yml"
|
|
pull_request:
|
|
branches: [main]
|
|
paths:
|
|
- "app/**"
|
|
workflow_dispatch:
|
|
|
|
jobs:
|
|
build-linux:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Install system dependencies
|
|
run: |
|
|
sudo apt-get update
|
|
sudo apt-get install -y \
|
|
libgtk-3-dev \
|
|
libwebkit2gtk-4.1-dev \
|
|
libayatana-appindicator3-dev \
|
|
librsvg2-dev \
|
|
libsoup-3.0-dev \
|
|
libssl-dev \
|
|
libxdo-dev \
|
|
patchelf \
|
|
pkg-config \
|
|
build-essential \
|
|
curl \
|
|
wget \
|
|
file
|
|
|
|
- name: Install Rust stable
|
|
uses: dtolnay/rust-toolchain@stable
|
|
|
|
- name: Rust cache
|
|
uses: swatinem/rust-cache@v2
|
|
with:
|
|
workspaces: "./app/src-tauri -> target"
|
|
|
|
- name: Install Node.js
|
|
uses: actions/setup-node@v4
|
|
with:
|
|
node-version: "22"
|
|
|
|
- name: Install frontend dependencies
|
|
working-directory: ./app
|
|
run: npm ci
|
|
|
|
- name: Install Tauri CLI
|
|
working-directory: ./app
|
|
run: npx tauri --version || npm install @tauri-apps/cli
|
|
|
|
- name: Build Tauri app
|
|
working-directory: ./app
|
|
run: npx tauri build
|
|
|
|
- name: Upload Linux artifacts
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: triple-c-linux
|
|
path: |
|
|
app/src-tauri/target/release/bundle/appimage/*.AppImage
|
|
app/src-tauri/target/release/bundle/deb/*.deb
|
|
app/src-tauri/target/release/bundle/rpm/*.rpm
|
|
if-no-files-found: warn
|
|
|
|
build-windows:
|
|
runs-on: windows-latest
|
|
defaults:
|
|
run:
|
|
shell: pwsh
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Install Rust stable
|
|
run: |
|
|
if (!(Get-Command rustup -ErrorAction SilentlyContinue)) {
|
|
Invoke-WebRequest -Uri https://win.rustup.rs/x86_64 -OutFile rustup-init.exe
|
|
.\rustup-init.exe -y --default-toolchain stable
|
|
Remove-Item rustup-init.exe
|
|
} else {
|
|
rustup update stable
|
|
rustup default stable
|
|
}
|
|
# Add cargo to PATH for subsequent steps
|
|
echo "$env:USERPROFILE\.cargo\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
|
|
|
|
- name: Verify Rust
|
|
run: |
|
|
rustc --version
|
|
cargo --version
|
|
|
|
- name: Install Node.js
|
|
run: |
|
|
if (!(Get-Command node -ErrorAction SilentlyContinue) -or !((node --version) -match 'v22')) {
|
|
# Download and install Node.js 22 LTS
|
|
Invoke-WebRequest -Uri "https://nodejs.org/dist/v22.14.0/node-v22.14.0-x64.msi" -OutFile node-install.msi
|
|
Start-Process msiexec.exe -ArgumentList '/i', 'node-install.msi', '/quiet', '/norestart' -Wait
|
|
Remove-Item node-install.msi
|
|
# Refresh PATH
|
|
$env:PATH = [System.Environment]::GetEnvironmentVariable("PATH", "Machine") + ";" + [System.Environment]::GetEnvironmentVariable("PATH", "User")
|
|
}
|
|
node --version
|
|
npm --version
|
|
|
|
- name: Install frontend dependencies
|
|
working-directory: ./app
|
|
run: npm ci
|
|
|
|
- name: Install Tauri CLI
|
|
working-directory: ./app
|
|
run: |
|
|
try { npx tauri --version } catch { npm install @tauri-apps/cli }
|
|
|
|
- name: Build Tauri app
|
|
working-directory: ./app
|
|
run: npx tauri build
|
|
|
|
- name: Upload Windows artifacts
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: triple-c-windows
|
|
path: |
|
|
app/src-tauri/target/release/bundle/msi/*.msi
|
|
app/src-tauri/target/release/bundle/nsis/*.exe
|
|
if-no-files-found: warn
|