4af42c157e
- fix: 删除 BGM 预览硬编码开发者路径,改为使用 url 字段 - fix: BGM 混音前检测是否为 URL,先下载到 bgm_cache 本地缓存 - fix: Rust mix_bgm_to_video 恢复 validate_safe_path 校验,拒绝 URL - feat: 新增 bgm_cache 目录及自动清理策略(30天/200MB上限) - feat: Settings 缓存清理扩展为媒体缓存(video + BGM 统一清理) - chore: BGM url 字段改为后端必填,同步 schema/model/seed/迁移
211 lines
7.9 KiB
YAML
211 lines
7.9 KiB
YAML
name: Release
|
|
|
|
on:
|
|
push:
|
|
tags:
|
|
- 'v*'
|
|
workflow_dispatch:
|
|
inputs:
|
|
version:
|
|
description: '版本号 (例如 1.5.16)'
|
|
required: true
|
|
type: string
|
|
platform:
|
|
description: '构建平台'
|
|
required: true
|
|
type: choice
|
|
options:
|
|
- all
|
|
- macos
|
|
- windows
|
|
default: all
|
|
|
|
jobs:
|
|
build-macos:
|
|
name: Build macOS (Universal)
|
|
if: ${{ github.event_name == 'push' || inputs.platform == 'all' || inputs.platform == 'macos' }}
|
|
runs-on: macos-latest
|
|
permissions:
|
|
contents: write
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Setup Node
|
|
uses: actions/setup-node@v4
|
|
with:
|
|
node-version: 22
|
|
|
|
- name: Setup Rust
|
|
uses: dtolnay/rust-toolchain@stable
|
|
with:
|
|
targets: x86_64-apple-darwin,aarch64-apple-darwin
|
|
|
|
- name: Cache Rust dependencies
|
|
uses: actions/cache@v4
|
|
with:
|
|
path: |
|
|
~/.cargo/registry
|
|
~/.cargo/git
|
|
tauri-app/src-tauri/target
|
|
key: ${{ runner.os }}-cargo-${{ hashFiles('tauri-app/src-tauri/Cargo.lock') }}
|
|
|
|
- name: Cache Node dependencies
|
|
uses: actions/cache@v4
|
|
with:
|
|
path: tauri-app/node_modules
|
|
key: ${{ runner.os }}-node-${{ hashFiles('tauri-app/package-lock.json') }}
|
|
|
|
- name: Download sidecar binaries
|
|
run: |
|
|
mkdir -p tauri-app/src-tauri/binaries
|
|
gh release download v0.0.0-sidecar --repo ${{ github.repository }} --pattern "sidecar-binaries.tar.gz" --dir /tmp
|
|
tar xzf /tmp/sidecar-binaries.tar.gz -C tauri-app/src-tauri/binaries/
|
|
chmod +x tauri-app/src-tauri/binaries/ffmpeg-* tauri-app/src-tauri/binaries/ffprobe-*
|
|
# Create universal binary for macOS universal-apple-darwin target
|
|
# by combining aarch64 and x86_64 binaries with lipo
|
|
if [ -f tauri-app/src-tauri/binaries/ffmpeg-aarch64-apple-darwin ] && [ -f tauri-app/src-tauri/binaries/ffmpeg-x86_64-apple-darwin ]; then
|
|
lipo -create \
|
|
tauri-app/src-tauri/binaries/ffmpeg-aarch64-apple-darwin \
|
|
tauri-app/src-tauri/binaries/ffmpeg-x86_64-apple-darwin \
|
|
-output tauri-app/src-tauri/binaries/ffmpeg-universal-apple-darwin
|
|
lipo -create \
|
|
tauri-app/src-tauri/binaries/ffprobe-aarch64-apple-darwin \
|
|
tauri-app/src-tauri/binaries/ffprobe-x86_64-apple-darwin \
|
|
-output tauri-app/src-tauri/binaries/ffprobe-universal-apple-darwin
|
|
fi
|
|
env:
|
|
GH_TOKEN: ${{ github.token }}
|
|
|
|
- name: Install dependencies
|
|
working-directory: tauri-app
|
|
run: npm ci
|
|
|
|
- name: Update version
|
|
run: |
|
|
if [ -n "${{ inputs.version }}" ]; then
|
|
VERSION="${{ inputs.version }}"
|
|
else
|
|
VERSION="${GITHUB_REF_NAME#v}"
|
|
fi
|
|
perl -pi -e "s/\"version\"\s*:\s*\"[^\"]*\"/\"version\": \"$VERSION\"/" tauri-app/src-tauri/tauri.conf.json
|
|
perl -pi -e "s/^version = \"[^\"]*\"/version = \"$VERSION\"/" tauri-app/src-tauri/Cargo.toml
|
|
echo "Version updated to: $VERSION"
|
|
|
|
- name: Build macOS Universal
|
|
working-directory: tauri-app
|
|
run: npm run tauri -- build --target universal-apple-darwin
|
|
env:
|
|
VITE_API_BASE_URL: https://dev.tapi.meijiaka.cn/api/v1
|
|
TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY }}
|
|
TAURI_SIGNING_PRIVATE_KEY_PASSWORD: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY_PASSWORD }}
|
|
|
|
- name: Upload artifacts
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: macos-universal
|
|
path: |
|
|
tauri-app/src-tauri/target/universal-apple-darwin/release/bundle/dmg/*.dmg
|
|
tauri-app/src-tauri/target/universal-apple-darwin/release/bundle/macos/*.app.tar.gz
|
|
tauri-app/src-tauri/target/universal-apple-darwin/release/bundle/macos/*.app.tar.gz.sig
|
|
retention-days: 3
|
|
|
|
- name: Upload to GitHub Release
|
|
uses: softprops/action-gh-release@v2
|
|
with:
|
|
tag_name: ${{ github.ref_name }}
|
|
files: |
|
|
tauri-app/src-tauri/target/universal-apple-darwin/release/bundle/dmg/*.dmg
|
|
tauri-app/src-tauri/target/universal-apple-darwin/release/bundle/macos/*.app.tar.gz
|
|
tauri-app/src-tauri/target/universal-apple-darwin/release/bundle/macos/*.app.tar.gz.sig
|
|
|
|
build-windows:
|
|
name: Build Windows (x64)
|
|
if: ${{ github.event_name == 'push' || inputs.platform == 'all' || inputs.platform == 'windows' }}
|
|
runs-on: windows-latest
|
|
permissions:
|
|
contents: write
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Setup Node
|
|
uses: actions/setup-node@v4
|
|
with:
|
|
node-version: 22
|
|
|
|
- name: Setup Rust
|
|
uses: dtolnay/rust-toolchain@stable
|
|
with:
|
|
targets: x86_64-pc-windows-msvc
|
|
|
|
- name: Cache Rust dependencies
|
|
uses: actions/cache@v4
|
|
with:
|
|
path: |
|
|
~/.cargo/registry
|
|
~/.cargo/git
|
|
tauri-app/src-tauri/target
|
|
key: ${{ runner.os }}-cargo-${{ hashFiles('tauri-app/src-tauri/Cargo.lock') }}
|
|
|
|
- name: Cache Node dependencies
|
|
uses: actions/cache@v4
|
|
with:
|
|
path: tauri-app/node_modules
|
|
key: ${{ runner.os }}-node-${{ hashFiles('tauri-app/package-lock.json') }}
|
|
|
|
- name: Download sidecar binaries
|
|
shell: pwsh
|
|
run: |
|
|
New-Item -ItemType Directory -Force -Path tauri-app/src-tauri/binaries
|
|
gh release download v0.0.0-sidecar --repo ${{ github.repository }} --pattern "sidecar-binaries.tar.gz" --dir $env:TEMP
|
|
tar xzf "$env:TEMP\sidecar-binaries.tar.gz" -C tauri-app/src-tauri/binaries/
|
|
Get-ChildItem tauri-app/src-tauri/binaries/
|
|
env:
|
|
GH_TOKEN: ${{ github.token }}
|
|
|
|
- name: Install dependencies
|
|
working-directory: tauri-app
|
|
run: npm ci
|
|
|
|
- name: Update version
|
|
shell: pwsh
|
|
run: |
|
|
$version = if ("${{ inputs.version }}") { "${{ inputs.version }}" } else { $env:GITHUB_REF_NAME -replace '^v', '' }
|
|
$content = Get-Content tauri-app/src-tauri/tauri.conf.json -Raw
|
|
$content = $content -replace '"version"\s*:\s*"[^"]*"', "`"version`": `"$version`""
|
|
Set-Content tauri-app/src-tauri/tauri.conf.json -Value $content
|
|
$cargo = Get-Content tauri-app/src-tauri/Cargo.toml -Raw
|
|
$cargo = $cargo -replace '^version = "[^"]*"', "version = `"$version`""
|
|
Set-Content tauri-app/src-tauri/Cargo.toml -Value $cargo
|
|
Write-Host "Version updated to: $version"
|
|
|
|
- name: Build Windows x64
|
|
working-directory: tauri-app
|
|
shell: pwsh
|
|
run: npm run tauri -- build --target x86_64-pc-windows-msvc
|
|
env:
|
|
VITE_API_BASE_URL: https://dev.tapi.meijiaka.cn/api/v1
|
|
TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY }}
|
|
TAURI_SIGNING_PRIVATE_KEY_PASSWORD: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY_PASSWORD }}
|
|
|
|
- name: Upload artifacts
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: windows-x64
|
|
path: |
|
|
tauri-app/src-tauri/target/x86_64-pc-windows-msvc/release/bundle/nsis/*.exe
|
|
tauri-app/src-tauri/target/x86_64-pc-windows-msvc/release/bundle/nsis/*.exe.sig
|
|
tauri-app/src-tauri/target/x86_64-pc-windows-msvc/release/bundle/nsis/*-setup.exe
|
|
retention-days: 3
|
|
|
|
- name: Upload to GitHub Release
|
|
uses: softprops/action-gh-release@v2
|
|
with:
|
|
tag_name: ${{ github.ref_name }}
|
|
files: |
|
|
tauri-app/src-tauri/target/x86_64-pc-windows-msvc/release/bundle/nsis/*.exe
|
|
tauri-app/src-tauri/target/x86_64-pc-windows-msvc/release/bundle/nsis/*.exe.sig
|
|
tauri-app/src-tauri/target/x86_64-pc-windows-msvc/release/bundle/nsis/*-setup.exe
|
|
|