Skip to content

Commit b8e1092

Browse files
Create main.yml
1 parent 3985b01 commit b8e1092

File tree

1 file changed

+77
-0
lines changed

1 file changed

+77
-0
lines changed

.github/workflows/main.yml

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
name: Build and Release Tauri App
2+
3+
on:
4+
push:
5+
tags:
6+
- 'v*' # 触发条件:当推送符合 v* 模式的标签时触发
7+
8+
jobs:
9+
build:
10+
runs-on: ${{ matrix.os }}
11+
strategy:
12+
matrix:
13+
os: [ubuntu-latest, macos-latest, windows-latest] # 定义构建的平台
14+
15+
steps:
16+
- name: Checkout code
17+
uses: actions/checkout@v3 # 检出代码
18+
19+
- name: Set up Rust
20+
uses: actions-rs/toolchain@v1
21+
with:
22+
toolchain: stable
23+
override: true # 设置 Rust 工具链
24+
25+
- name: Install Node.js
26+
uses: actions/setup-node@v3
27+
with:
28+
node-version: '16' # 安装 Node.js
29+
30+
- name: Install Tauri CLI
31+
run: npm install -g @tauri-apps/cli # 安装 Tauri CLI
32+
33+
- name: Build Tauri App
34+
run: cargo tauri build # 构建 Tauri 应用
35+
36+
- name: Sign Tauri App
37+
env:
38+
TAURI_PRIVATE_KEY: ${{ secrets.TAURI_PRIVATE_KEY }} # 使用秘密环境变量存储的私钥
39+
run: |
40+
if [[ "${{ matrix.os }}" == "windows-latest" ]]; then
41+
tauri signer sign -p <(echo "$TAURI_PRIVATE_KEY") -f src-tauri/target/release/bundle/msi/*.msi
42+
elif [[ "${{ matrix.os }}" == "ubuntu-latest" ]]; then
43+
tauri signer sign -p <(echo "$TAURI_PRIVATE_KEY") -f src-tauri/target/release/bundle/appimage/*.AppImage
44+
elif [[ "${{ matrix.os }}" == "macos-latest" ]]; then
45+
tauri signer sign -p <(echo "$TAURI_PRIVATE_KEY") -f src-tauri/target/release/bundle/dmg/*.dmg
46+
fi # 对不同平台的构建产物进行签名
47+
48+
- name: Create Release
49+
id: create_release
50+
uses: actions/create-release@v1
51+
env:
52+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # 使用秘密环境变量存储的 GitHub token
53+
with:
54+
tag_name: ${{ github.ref }} # 使用推送的标签名作为 Release 名称
55+
release_name: Release ${{ github.ref }}
56+
draft: false
57+
prerelease: false # 创建 GitHub Release
58+
59+
- name: Upload Release Assets
60+
uses: actions/upload-release-asset@v1
61+
with:
62+
upload_url: ${{ steps.create_release.outputs.upload_url }} # 使用创建的 Release 的上传 URL
63+
asset_path: |
64+
src-tauri/target/release/bundle/msi/*.msi
65+
src-tauri/target/release/bundle/msi/*.sig
66+
src-tauri/target/release/bundle/appimage/*.AppImage
67+
src-tauri/target/release/bundle/appimage/*.sig
68+
src-tauri/target/release/bundle/dmg/*.dmg
69+
src-tauri/target/release/bundle/dmg/*.sig # 上传不同平台的构建产物
70+
asset_name: |
71+
$(basename src-tauri/target/release/bundle/msi/*.msi)
72+
$(basename src-tauri/target/release/bundle/msi/*.sig)
73+
$(basename src-tauri/target/release/bundle/appimage/*.AppImage)
74+
$(basename src-tauri/target/release/bundle/appimage/*.sig)
75+
$(basename src-tauri/target/release/bundle/dmg/*.dmg)
76+
$(basename src-tauri/target/release/bundle/dmg/*.sig) # 指定上传的文件名
77+
asset_content_type: application/octet-stream # 设置文件类型

0 commit comments

Comments
 (0)