Files
meijiaka-zy/docs/github-actions-release.md
T

154 lines
4.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# GitHub Actions 发版方案(免费双平台构建)
> 利用 GitHub Actions 免费的 macOS + Windows runner,实现零成本的双平台自动构建。
---
## 一、方案优势
| 对比项 | GitLab CI(原有) | GitHub Actions(新方案) |
|--------|------------------|------------------------|
| macOS runner | 需要自维护 Mac 物理机 | ✅ GitHub 免费提供(`macos-latest` |
| Windows runner | 需要自维护 Windows 物理机 | ✅ GitHub 免费提供(`windows-latest` |
| 并发构建 | 依赖 runner 在线状态 | ✅ 随时触发,并行执行 |
| 产物保留 | 30 天(可配置) | 90 天(默认) |
| 成本 | 维护 runner 硬件/电费 | ✅ 公有仓库完全免费 |
---
## 二、前置准备
### 2.1 确认代码已推送到 GitHub
GitHub Actions 只能构建 **GitHub 仓库**中的代码。如果你的代码只在 GitLab,需要:
```bash
# 在 GitHub 创建空仓库,然后添加远程地址
git remote add github https://github.com/你的用户名/美家卡智影.git
git push github master
git push github --tags
```
### 2.2 配置 GitHub Secrets(只需做一次)
进入 GitHub 仓库 → **Settings → Secrets and variables → Actions → New repository secret**
| Secret 名称 | 值 | 说明 |
|------------|-----|------|
| `TAURI_SIGNING_PRIVATE_KEY` | `dW50cnVzdGVk...`(私钥完整内容) | Tauri updater 签名私钥 |
| `TAURI_SIGNING_PRIVATE_KEY_PASSWORD` | (留空,不创建) | 若私钥有密码则填,当前无密码 |
> 私钥从 `tauri-app/.tauri-signing-key` 文件中复制全部内容。
---
## 三、触发构建的两种方式
### 方式一:推送 Git tag(推荐,用于正式发版)
```bash
# 1. 更新版本号
python scripts/bump-version.py 1.5.16
# 2. 提交并推送
git add -A
git commit -m "release: v1.5.16"
git push github master
# 3. 推送 tag 自动触发 GitHub Actions
git tag v1.5.16
git push github v1.5.16
```
推送 tag 后,GitHub Actions 自动开始构建:
- `build-macos`:在 `macos-latest` runner 上构建 Universal `.dmg`
- `build-windows`:在 `windows-latest` runner 上构建 `.exe` + `.msi`
### 方式二:手动触发(用于测试或紧急打包)
进入 GitHub 仓库 → **Actions → Release → Run workflow**
- 输入版本号(如 `1.5.16`
- 点击 **Run workflow**
---
## 四、获取构建产物
构建完成后(约 10-20 分钟):
1. 进入 GitHub 仓库 → **Actions**
2. 点击最新的 workflow run
3. 页面底部 **Artifacts** 区域下载:
- `macos-universal` → 包含 `.dmg``.app`
- `windows-x64` → 包含 `.exe``.msi`
---
## 五、发布更新包(手动执行)
下载产物后,解压到本地目录,执行发版脚本:
```bash
# 1. 创建产物目录结构
mkdir -p bundle/macos
mkdir -p bundle/dmg
mkdir -p bundle/nsis
mkdir -p bundle/msi
# 2. 将下载的 artifact 解压并放入对应目录
# macos-universal.zip → bundle/dmg/xxx.dmg, bundle/macos/xxx.app
# windows-x64.zip → bundle/nsis/xxx.exe, bundle/msi/xxx.msi
# 3. 执行发版脚本
cd python-api
python scripts/publish_release.py \
--version 1.5.16 \
--notes "修复视频导出崩溃\n优化启动速度" \
--bundle-dir ../bundle
```
---
## 六、注意事项
### 6.1 macOS 签名
GitHub Actions 的 `macos-latest` runner **没有 Apple Developer 证书**,构建出的 `.app`/`.dmg` 与本地构建一样,是未签名的。用户在首次打开时仍需手动允许。
**后续升级**:购买 Apple Developer Program 后,在 workflow 中添加:
```yaml
env:
APPLE_CERTIFICATE: ${{ secrets.APPLE_CERTIFICATE }}
APPLE_CERTIFICATE_PASSWORD: ${{ secrets.APPLE_CERTIFICATE_PASSWORD }}
APPLE_ID: ${{ secrets.APPLE_ID }}
APPLE_PASSWORD: ${{ secrets.APPLE_PASSWORD }}
APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }}
```
### 6.2 Windows 签名
同理,未配置 `WINDOWS_CERTIFICATE` 时,`.exe` 会有 SmartScreen 提示。购买证书后配置 GitHub Secrets 即可自动签名。
### 6.3 产物自动上传到 Release(可选进阶)
如需让 GitHub 自动创建 Release 页面并上传产物,可在 workflow 末尾添加:
```yaml
- name: Create Release
uses: softprops/action-gh-release@v2
with:
files: |
tauri-app/src-tauri/target/**/bundle/dmg/*.dmg
tauri-app/src-tauri/target/**/bundle/nsis/*.exe
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
```
---
## 七、文件清单
| 文件 | 作用 |
|------|------|
| `.github/workflows/release.yml` | GitHub Actions 工作流定义 |
| `tauri-app/.tauri-signing-key` | 私钥源文件(本地保存) |
| `tauri-app/src-tauri/tauri.key.pub` | 公钥(已提交 Git |