Tauri 应用打包与签名简易指南

Tauri 应用打包与签名完整指南(含 GitHub Actions 自动化配置)

本指南包含了从证书导出到 GitHub Actions 自动打包签名发布的完整流程,适用于 macOS 平台。


导出 macOS 签名证书为 Base64

为了在 CI 环境中签名你的 Tauri 应用,需要将 macOS 签名证书导出并转为 Base64 以便通过 GitHub Secrets 传入。

步骤:

  1. 打开"钥匙串访问";
  2. 找到你的开发证书(如 Apple Development: yourname (TEAMID));
  3. 右键 → 导出,格式选择 .p12
  4. 使用以下命令将证书转为 Base64:
bash 复制代码
openssl base64 -in your-certificate.p12 -out cert.txt
  1. cert.txt 中的内容复制,存入 GitHub Secrets:
    • APPLE_CERTIFICATE:Base64 字符串
    • APPLE_CERTIFICATE_PASSWORD:导出 .p12 时设置的密码

创建github workflows

arduino 复制代码
your-project/
├── src-tauri/
│   ├── tauri.conf.json
│   ├── entitlements.plist
├── .github/
│   └── workflows/
│       └── release.yml

配置 entitlements.plist

entitlements.plist 用于配置你的 macOS 应用权限(例如网络、文件访问等),根据实际情况来选择配置。

xml 复制代码
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
 "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>com.apple.security.network.client</key>
  <true/>
  <key>com.apple.security.cs.allow-jit</key>
  <true/>
</dict>
</plist>

并在 tauri.conf.json 中配置:

json 复制代码
"macOS": {
  "entitlements": "src-tauri/entitlements.plist",
  "exceptionDomain": "*"
}

GitHub Actions 自动打包签名配置

修改.github/workflows/release.yml 配置如下:

yaml 复制代码
name: Release

on:
  push:
    tags:
      - 'v*'
  workflow_dispatch:

jobs:
  release:
    permissions:
      contents: write
    strategy:
      fail-fast: false
      matrix:
        platform: [macos-latest, ubuntu-24.04, windows-latest]
    runs-on: ${{ matrix.platform }}

    steps:
      - name: Checkout repository
        uses: actions/checkout@v4

      - name: Install dependencies (ubuntu only)
        if: matrix.platform == 'ubuntu-24.04'
        run: |
          sudo apt-get update
          sudo apt-get install -y           libwebkit2gtk-4.1-dev libgtk-3-dev libayatana-appindicator3-dev           librsvg2-dev libsoup2.4-dev libglib2.0-dev           libgdk-pixbuf2.0-dev libcairo2-dev libpango1.0-dev libatk1.0-dev

      - name: Rust setup
        uses: dtolnay/rust-toolchain@stable

      - name: Rust cache
        uses: swatinem/rust-cache@v2
        with:
          workspaces: './src-tauri -> target'

      - name: Node.js Setup
        uses: pnpm/action-setup@v4
        with:
          version: 9.15.9

      - name: Install frontend dependencies
        run: pnpm install

      - name: Import macOS certificate (macos only)
        if: matrix.platform == 'macos-latest'
        env:
          APPLE_CERTIFICATE: ${{ secrets.APPLE_CERTIFICATE }}
          APPLE_CERTIFICATE_PASSWORD: ${{ secrets.APPLE_CERTIFICATE_PASSWORD }}
        run: |
          echo "$APPLE_CERTIFICATE" | base64 --decode > certificate.p12
          security create-keychain -p "" build.keychain
          security default-keychain -s build.keychain
          security unlock-keychain -p "" build.keychain
          security import certificate.p12 -k build.keychain -P "$APPLE_CERTIFICATE_PASSWORD" -T /usr/bin/codesign
          security set-key-partition-list -S apple-tool:,apple: -s -k "" build.keychain

      - name: Build the app
        uses: tauri-apps/tauri-action@v0
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          tagName: ${{ github.ref_name }}
          releaseName: 'github-actions-visual-editor v__VERSION__'
          releaseBody: 'See the assets to download and install this version.'
          releaseDraft: true
          prerelease: false

name: Rust setup表示工作流里每一步的名称。 他们分别是:

  • 拉取代码 name: Checkout repository
  • 如果是linux则安装linux需要的依赖 name: Install dependencies (ubuntu only)
  • 设置Rust环境 name: Rust setup
  • 设置rust缓存 name: Rust cache
  • 设置pnpm name: Node.js Setup
  • 安装依赖 name: Install frontend dependencies
  • 如果是macos环境,则配置证书 name: Import macOS certificate (macos only)
  • 编译打包app name: Build the app

前面几部都没有什么特别的,都是些常规的操作,name: Import macOS certificate (macos only)这不是专门用来配置ios证书的,需要搭配前面导出证书的输出来使用,打包出来的mac应用才可以在mac上正常打开,否则会提示不受信任的应用。

name: Build the app使用tauri官方提供的tauri-apps/tauri-action@v0流水线工具,对项目进行打包并输出产物。releaseDraft会将产物输出到草稿箱中。

在项目首页点击右侧的Releases,进入Release,其中包含了未发布的草稿。

可以在这里下载安装包,然后进行测试。

测试通过后,点击编辑图标,就可以对发布内容进行编辑并打上tag。

本项目代码托管在:github.com/cbtpro/gith...

参考链接

相关推荐
Jerry17 分钟前
Compose 基础知识测试
前端
changuncle25 分钟前
Angular初学者入门第三课——工厂函数(精品)
前端·javascript·angular.js
ScottePerk43 分钟前
前端安全之XSS和CSRF
前端·安全·xss
PineappleCoder44 分钟前
Canvas 复杂交互步骤:从事件监听 to 重新绘制全流程
前端
s3xysteak1 小时前
我要成为vue高手01:上下文
前端·javascript·vue.js
复苏季风1 小时前
前端居中布局:从 "卡壳" 到 "精通" 的全方位指南
前端·css
qb1 小时前
vue3.5.18源码:computed 在发布订阅者模式中的双重角色
前端·vue.js·架构
专注VB编程开发20年1 小时前
c# .net支持 NativeAOT 或 Trimming 的库是什么原理
前端·javascript·c#·.net
挽淚1 小时前
前端HTTP请求:Fetch api和Axios
前端
乘风丿1 小时前
🚀 从零构建 AI 代码审查机器人:让 GitLab 自动审查代码质量
前端