Files
meijiaka-zy/.gitlab-ci.yml
T
小鱼开发 de7a6b734f chore(release): bump to v1.5.15
- 统一版本号管理(VERSION + scripts/bump-version.py)
- 添加 GitLab CI/CD 前端多平台构建配置
- 替换应用图标为品牌 logo
- 清理无效文件(tauri.svg, vite.svg, bg-config.json, audio/presets, .DS_Store)
- 修复 ESLint 错误和全部 warnings
- 清理 console.warn,保留 console.error
- 更新 Cargo.toml 元数据(description + authors)
- 更新 .gitignore(dist/, src-tauri/target/, binaries/)
- authStore appVersion 改为动态获取(getVersion)
- 修复 login 错误处理
- 将 FFmpeg sidecar 二进制移出 Git 跟踪(CI 构建时准备)
2026-05-14 23:32:45 +08:00

126 lines
3.9 KiB
YAML

# 美家卡智影 - GitLab CI/CD 配置
# =======================================
# 覆盖范围: 前端多平台构建 (macOS Universal + Windows x64)
#
# Runner 环境要求:
# - macOS runner (标签: macos, arm64):
# Apple Silicon Mac, 已安装:
# - Xcode Command Line Tools (15+)
# - Node.js 22+ (建议通过 nvm 管理)
# - Rust 1.94+ (通过 rustup)
# - GitLab Runner (shell executor)
# - Windows runner (标签: windows, x86_64):
# Windows 10/11 x64, 已安装:
# - Visual Studio 2022 Build Tools (含 C++ 桌面开发工具链)
# - Node.js 22+ (建议通过 nvm-windows 管理)
# - Rust 1.94+ (通过 rustup)
# - GitLab Runner (shell executor)
#
# 触发条件: master 分支推送 或 tag 推送
# 产物保留: 30 天
variables:
ARTIFACT_EXPIRE_DAYS: "30"
stages:
- build-frontend
# ==========================================
# 通用模板: 前端构建
# ==========================================
.frontend_build:
stage: build-frontend
only:
- master
- tags
cache:
# Node 依赖缓存(基于 package-lock.json 变更)
- key:
files:
- tauri-app/package-lock.json
paths:
- tauri-app/node_modules/
# Rust 编译缓存(基于 Cargo.lock 变更)
- key:
files:
- tauri-app/src-tauri/Cargo.lock
paths:
- tauri-app/src-tauri/target/
# ==========================================
# Job: macOS Universal 构建 (ARM64 + Intel)
# ==========================================
# 说明:
# - 在 Apple Silicon Mac 上同时编译 ARM64 和 x86_64 两个架构
# - 使用 lipo 合并为 universal Mach-O 可执行文件
# - 产物为单一 .dmg,同时支持 M 系列和 Intel Mac
build-frontend-macos:
extends: .frontend_build
tags:
- macos
- arm64
before_script:
# 激活 Rust 环境 (rustup 默认安装路径)
- source "$HOME/.cargo/env" 2>/dev/null || true
# 安装 Intel 目标平台(构建 universal binary 必需)
- rustup target add x86_64-apple-darwin
# 验证构建环境
- node --version
- npm --version
- cargo --version
- rustc --print host
script:
- cd tauri-app
- npm ci
# 构建 universal macOS 应用
# Tauri 会自动分别编译 aarch64 和 x86_64,再合并为 universal binary
- npm run tauri -- build --target universal-apple-darwin
artifacts:
name: "meijiaka-macos-${CI_COMMIT_REF_NAME}-${CI_COMMIT_SHORT_SHA}"
paths:
# DMG 安装包 (推荐用户下载)
- tauri-app/src-tauri/target/universal-apple-darwin/release/bundle/dmg/*.dmg
# .app bundle (供进一步分发或公证使用)
- tauri-app/src-tauri/target/universal-apple-darwin/release/bundle/macos/*.app
expire_in: "${ARTIFACT_EXPIRE_DAYS} days"
timeout: 45 minutes
retry:
max: 1
when: runner_system_failure
# ==========================================
# Job: Windows x64 构建
# ==========================================
# 说明:
# - 产物包含 NSIS (.exe) 和 MSI 两种安装包格式
# - NSIS 已配置为简体中文安装界面
# - sidecar (ffmpeg/ffprobe) 会自动嵌入 .exe 同目录
build-frontend-windows:
extends: .frontend_build
tags:
- windows
- x86_64
before_script:
# 验证构建环境
- rustc --version
- cargo --version
- node --version
- npm --version
script:
- cd tauri-app
- npm ci
# 构建 Windows x64 应用
- npm run tauri -- build --target x86_64-pc-windows-msvc
artifacts:
name: "meijiaka-windows-${CI_COMMIT_REF_NAME}-${CI_COMMIT_SHORT_SHA}"
paths:
# NSIS 安装包 (推荐用户下载)
- tauri-app/src-tauri/target/x86_64-pc-windows-msvc/release/bundle/nsis/*.exe
# MSI 安装包 (企业部署场景)
- tauri-app/src-tauri/target/x86_64-pc-windows-msvc/release/bundle/msi/*.msi
expire_in: "${ARTIFACT_EXPIRE_DAYS} days"
timeout: 45 minutes
retry:
max: 1
when: runner_system_failure