-
Notifications
You must be signed in to change notification settings - Fork 5
121 lines (114 loc) · 4.12 KB
/
Copy pathrelease.yml
File metadata and controls
121 lines (114 loc) · 4.12 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
name: 多平台自动构建打包
on:
push:
branches: [ main ]
workflow_dispatch:
env:
PROJECT_NAME: bevy_card_battler
DISPLAY_NAME: 九界:渡劫
jobs:
# ==================== Windows 构建 ====================
build-windows:
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
- name: 安装 Rust
uses: dtolnay/rust-toolchain@stable
- name: 编译 Release
run: cargo build --release
- name: 准备打包目录
shell: bash
run: |
mkdir -p build_dist
cp target/release/${{ env.PROJECT_NAME }}.exe build_dist/
cp -r assets build_dist/
- name: 安装打包工具 (cargo-wix)
if: matrix.os == 'windows-latest'
uses: taiki-e/install-action@v2
with:
tool: cargo-wix
- name: 构建 Windows MSI 安装包
if: matrix.os == 'windows-latest'
shell: powershell
run: |
# 确保 WiX 路径在环境路径中 (GitHub Runner 默认路径)
$env:PATH += ";C:\Program Files (x86)\WiX Toolset v3.11\bin"
cargo wix init
cargo wix --no-build
if (Test-Path "target/wix/*.msi") {
cp target/wix/*.msi build_dist/
}
- name: 上传 Windows 产物
uses: actions/upload-artifact@v4
with:
name: bevy_card_battler_windows
path: build_dist/
# ==================== macOS 构建 ====================
build-macos:
runs-on: macos-latest
steps:
- uses: actions/checkout@v4
- name: 安装 Rust
uses: dtolnay/rust-toolchain@stable
- name: 编译 Release
# 此时 Cargo.toml 已移除 x11,不会再触发 -lasound 链接
run: cargo build --release
- name: 准备 App Bundle
shell: bash
run: |
APP_NAME="${{ env.DISPLAY_NAME }}"
mkdir -p "build_dist/${APP_NAME}.app/Contents/MacOS"
mkdir -p "build_dist/${APP_NAME}.app/Contents/Resources"
cp target/release/${{ env.PROJECT_NAME }} "build_dist/${APP_NAME}.app/Contents/MacOS/"
cp -r assets "build_dist/${APP_NAME}.app/Contents/Resources/"
[ -f assets/icons/icon.icns ] && cp assets/icons/icon.icns "build_dist/${APP_NAME}.app/Contents/Resources/AppIcon.icns"
# 创建 Info.plist
cat > "build_dist/${APP_NAME}.app/Contents/Info.plist" <<EOF
<?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>CFBundleExecutable</key>
<string>${{ env.PROJECT_NAME }}</string>
<key>CFBundleIconFile</key>
<string>AppIcon.icns</string>
<key>CFBundleIdentifier</key>
<string>com.peterfei.bevy-card-battler</string>
<key>CFBundleName</key>
<string>${{ env.DISPLAY_NAME }}</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>LSMinimumSystemVersion</key>
<string>10.12</string>
</dict>
</plist>
EOF
- name: 上传 macOS 产物
uses: actions/upload-artifact@v4
with:
name: bevy_card_battler_macos
path: build_dist/
# ==================== Linux 构建 ====================
build-linux:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
- name: 安装 Rust
uses: dtolnay/rust-toolchain@stable
- name: 安装依赖
run: |
sudo apt-get update
sudo apt-get install -y g++ pkg-config libx11-dev libasound2-dev libudev-dev libwayland-dev libxkbcommon-dev
- name: 编译 Release
run: cargo build --release
- name: 准备打包目录
shell: bash
run: |
mkdir -p build_dist
cp target/release/${{ env.PROJECT_NAME }} build_dist/
cp -r assets build_dist/
- name: 上传 Linux 产物
uses: actions/upload-artifact@v4
with:
name: bevy_card_battler_linux
path: build_dist/