SuperAPI AI 工具集

building-tauri-with-github-actions

部署与运维

查看项目

更新于 10-15 12:29

技能介绍

本技能说明如何使用 GitHub Actions 为 Tauri 应用配置 CI/CD 流水线,基于官方 tauri-apps/tauri-action 实现跨平台自动化构建、测试与发布。

用途

GitHub Actions 可自动构建、测试并发布 Windows、macOS、Linux 平台的 Tauri 应用;tauri-action 负责处理跨平台构建与发布管理的复杂性。

工作流触发方式

支持三种触发:推送到 release 分支(push.branches: release)、基于标签发布(push.tags: 'app-v*'),以及手动触发(workflow_dispatch)。

平台矩阵配置

标准多平台矩阵在 macos-latest 上分别构建 aarch64-apple-darwin 与 x86_64-apple-darwin,在 ubuntu-22.04 与 windows-latest 上构建默认目标,并设置 fail-fast: false 与 contents: write 权限。公开仓库可在矩阵中加入 ubuntu-22.04-arm 进行原生 ARM64 Linux 构建。

完整工作流示例

完整示例包含:检出代码;仅在 Ubuntu 上安装 libwebkit2gtk-4.1-dev、libappindicator3-dev、librsvg2-dev、patchelf;配置 Node.js(LTS,启用缓存);配置 Rust 工具链并为 macOS 指定目标;使用 swatinem/rust-cache 缓存 Rust 产物;安装前端依赖;最后通过 tauri-action 构建并发布,设置 tagName、releaseName、releaseBody、releaseDraft、prerelease 与 args。

包管理器变体

pnpm:使用 pnpm/action-setup@v4,Node 缓存设为 'pnpm',安装命令为 pnpm install。Yarn:Node 缓存设为 'yarn',安装命令为 yarn install --frozen-lockfile。

缓存策略

Rust 使用 swatinem/rust-cache,workspaces 设为 './src-tauri -> target';Node 依赖通过 actions/setup-node 的 cache 参数配置为 'npm'、'yarn' 或 'pnpm'。

Linux 依赖

Ubuntu 需要 WebKit 及相关库,在 Ubuntu 矩阵项上执行 apt-get 安装上述四个包。

发布自动化

tauri-action 通过 with 参数配置 tagName、releaseName、releaseBody、releaseDraft、prerelease 与 args,并传入 GITHUB_TOKEN。VERSION 占位符会自动替换为 tauri.conf.json 中的应用版本。选项说明:tagName 为发布的 Git 标签;releaseName 为发布显示名称;releaseBody 为发布说明;releaseDraft 决定是否创建草稿发布;prerelease 决定是否标记为预发布。

产物上传

若不创建发布,可用 tauri-action 构建后通过 actions/upload-artifact@v4 上传 src-tauri/target/release/bundle/ 目录,产物名称按平台区分。

GitHub Token 配置

GITHUB_TOKEN 需要写权限才能创建发布。可在仓库 Settings > Actions > General 的 Workflow permissions 中选择 Read and write permissions,或在 job 中声明 permissions: contents: write。

非根目录项目

当 Tauri 不在仓库根目录时,通过 tauri-action 的 projectPath 参数(如 './apps/desktop')指定项目路径。

ARM 构建模拟

私有仓库或缺少原生 ARM runner 时,可用 pguyot/arm-runner-action@v2.6.5 在 ubuntu-latest 上模拟构建 ARM64,基础镜像为 dietpi:rpi_armv8_bullseye,命令内安装依赖、Rust、Node.js 后执行 npm ci 与 npm run tauri build。注意:全新项目的 ARM 模拟构建约需一小时。

代码签名集成

macOS 通过环境变量传入 APPLE_CERTIFICATE、APPLE_CERTIFICATE_PASSWORD、APPLE_SIGNING_IDENTITY、APPLE_ID、APPLE_PASSWORD、APPLE_TEAM_ID;Windows 通过 TAURI_SIGNING_PRIVATE_KEY 与 TAURI_SIGNING_PRIVATE_KEY_PASSWORD。

仅 CI 工作流

用于拉取请求验证而不创建发布:触发条件为 pull_request 到 main,矩阵包含 macos-latest、ubuntu-22.04、windows-latest,步骤与完整示例类似,最后执行 npm run tauri build 而不用 tauri-action 发布。

常见问题排查

发布创建权限被拒:确认工作流具备写权限且仓库设置允许 Actions 创建发布。Linux 构建失败:确认已通过 Ubuntu 依赖安装步骤安装全部依赖。找不到 macOS 目标:在 Rust 工具链步骤中安装 'aarch64-apple-darwin,x86_64-apple-darwin' 目标。缓存不生效:确认工作区路径与项目结构匹配('./src-tauri -> target')。