@@ -18,28 +18,45 @@ jobs:
1818 matrix :
1919 arch : [x64, arm64]
2020 steps :
21- - uses : actions/checkout@v4
22-
21+ # 检出 Git 仓库
22+ - name : Check out git repository
23+ uses : actions/checkout@v5
24+ # 安装 Node.js
2325 - name : Setup Node.js
24- uses : actions/setup-node@v4
26+ uses : actions/setup-node@v6
2527 with :
2628 node-version : ${{ env.NODE_VERSION }}
27-
29+ # 安装 pnpm
2830 - name : Install pnpm
2931 run : npm install -g pnpm
30-
32+ # 复制环境变量文件
33+ - name : Copy .env.example
34+ run : |
35+ if (-not (Test-Path .env)) {
36+ Copy-Item .env.example .env
37+ } else {
38+ Write-Host ".env file already exists. Skipping the copy step."
39+ }
40+ # 安装项目依赖
3141 - name : Install dependencies
3242 run : pnpm install
33-
43+ # 清理旧的构建产物
44+ - name : Clean dist folder
45+ run : |
46+ if (Test-Path dist) {
47+ Remove-Item -Recurse -Force dist
48+ }
49+ # 构建 Electron App
3450 - name : Build Electron App (Windows)
35- run : pnpm run build:win -- --${{ matrix.arch }}
51+ run : pnpm run build:win -- --${{ matrix.arch }} || true
3652 env :
37- GH_TOKEN : ${{ secrets.GITHUB_TOKEN }}
38-
53+ GITHUB_TOKEN : ${{ secrets.ACCESS_TOKEN }}
54+ # 上传构建产物
3955 - name : Upload artifacts
4056 uses : actions/upload-artifact@v4
4157 with :
42- name : SPlayer-Win-${{ matrix.arch }}
58+ name : SPlayer-Win-${{ matrix.arch }
59+ if-no-files-found : ignore
4360 path : |
4461 dist/*.exe
4562 dist/*.exe.blockmap
@@ -54,28 +71,43 @@ jobs:
5471 matrix :
5572 arch : [x64, arm64]
5673 steps :
57- - uses : actions/checkout@v4
58-
74+ # 检出 Git 仓库
75+ - name : Check out git repository
76+ uses : actions/checkout@v5
77+ # 安装 Node.js
5978 - name : Setup Node.js
60- uses : actions/setup-node@v4
79+ uses : actions/setup-node@v6
6180 with :
6281 node-version : ${{ env.NODE_VERSION }}
63-
82+ # 安装 pnpm
6483 - name : Install pnpm
6584 run : npm install -g pnpm
66-
85+ # 复制环境变量文件
86+ - name : Copy .env.example
87+ run : |
88+ if [ ! -f .env ]; then
89+ cp .env.example .env
90+ else
91+ echo ".env file already exists. Skipping the copy step."
92+ fi
93+ # 安装项目依赖
6794 - name : Install dependencies
6895 run : pnpm install
69-
96+ # 清理旧的构建产物
97+ - name : Clean dist folder
98+ run : rm -rf dist
99+ # 构建 Electron App
70100 - name : Build Electron App (macOS)
71- run : pnpm run build:mac -- --${{ matrix.arch }}
101+ run : pnpm run build:mac -- --${{ matrix.arch }} || true
102+ shell : bash
72103 env :
73- GH_TOKEN : ${{ secrets.GITHUB_TOKEN }}
74-
104+ GITHUB_TOKEN : ${{ secrets.ACCESS_TOKEN }}
105+ # 上传构建产物
75106 - name : Upload artifacts
76107 uses : actions/upload-artifact@v4
77108 with :
78109 name : SPlayer-macOS-${{ matrix.arch }}
110+ if-no-files-found : ignore
79111 path : |
80112 dist/*.dmg
81113 dist/*.zip
@@ -89,31 +121,62 @@ jobs:
89121 matrix :
90122 arch : [x64, arm64]
91123 steps :
92- - uses : actions/checkout@v4
93-
124+ # 检出 Git 仓库
125+ - name : Check out git repository
126+ uses : actions/checkout@v5
127+ # 安装 Node.js
94128 - name : Setup Node.js
95- uses : actions/setup-node@v4
129+ uses : actions/setup-node@v6
96130 with :
97131 node-version : ${{ env.NODE_VERSION }}
98-
132+ # 安装 pnpm
99133 - name : Install pnpm
100134 run : npm install -g pnpm
101-
102- - name : Install build dependencies
135+ # 更新 Ubuntu 软件源
136+ - name : Ubuntu Update with sudo
137+ run : sudo apt-get update
138+ # 安装依赖
139+ - name : Install RPM & Pacman
103140 run : |
104- sudo apt-get update
105- sudo apt-get install --no-install-recommends -y rpm libarchive-tools libopenjp2-tools
106-
141+ sudo apt-get install --no-install-recommends -y rpm &&
142+ sudo apt-get install --no-install-recommends -y libarchive-tools &&
143+ sudo apt-get install --no-install-recommends -y libopenjp2-tools
144+ # 安装 Snapcraft
145+ - name : Install Snapcraft
146+ uses : samuelmeuli/action-snapcraft@v2
147+ # 复制环境变量文件
148+ - name : Copy .env.example
149+ run : |
150+ if [ ! -f .env ]; then
151+ cp .env.example .env
152+ else
153+ echo ".env file already exists. Skipping the copy step."
154+ fi
155+ # 安装项目依赖
156+ - name : Install Dependencies
157+ run : pnpm install
158+ # 清理旧的构建产物
159+ - name : Clean dist folder
160+ run : rm -rf dist
161+ # 构建 Electron App
107162 - name : Build Electron App (Linux)
108- run : pnpm run build:linux -- --${{ matrix.arch }}
163+ run : pnpm run build:linux -- --${{ matrix.arch }} || true
164+ shell : bash
109165 env :
110- GH_TOKEN : ${{ secrets.GITHUB_TOKEN }}
111- SNAPCRAFT_STORE_CREDENTIALS : ${{ secrets.SNAPCRAFT_TOKEN }}
112-
166+ GITHUB_TOKEN : ${{ secrets.ACCESS_TOKEN }}
167+ # 上传 Snap 包到 Snapcraft 商店
168+ - name : Publish Snap to Snap Store
169+ run : |
170+ if [ -f dist/*.snap ]; then
171+ snapcraft upload dist/*.snap --release stable || echo "Snap upload failed or not configured"
172+ fi
173+ continue-on-error : true
174+ # 上传构建产物
113175 - name : Upload artifacts
114176 uses : actions/upload-artifact@v4
115177 with :
116178 name : SPlayer-Linux-${{ matrix.arch }}
179+ if-no-files-found : ignore
117180 path : |
118181 dist/*.AppImage
119182 dist/*.deb
@@ -131,22 +194,24 @@ jobs:
131194 - build-macos
132195 - build-linux
133196 if : startsWith(github.ref, 'refs/tags/v')
197+ # 需要写入权限才能创建 Release 和上传产物
198+ permissions :
199+ contents : write
134200 steps :
135- - uses : actions/checkout@v4
136-
137- # 下载各平台构建产物
201+ # 将所有产物下载到 artifacts 文件夹
138202 - name : Download all artifacts
139203 uses : actions/download-artifact@v4
140204 with :
141205 path : artifacts
142-
143- - name : List downloaded artifacts
206+ # 列出下载的产物(用于调试)
207+ - name : List downloaded artifacts (for debugging)
144208 run : ls -R artifacts
145-
146- # 通过 electron-builder 上传 Release 和 latest.yml
147- - name : Publish via electron-builder
148- run : |
149- pnpm install
150- pnpm run build:publish
151- env :
152- GH_TOKEN : ${{ secrets.GITHUB_TOKEN }}
209+ # 创建 GitHub Release 并上传所有产物
210+ - name : Create GitHub Release and Upload Assets
211+ uses : softprops/action-gh-release@v2
212+ with :
213+ # 生成发布说明
214+ generate_release_notes : true
215+ # 全部上传
216+ files : |
217+ artifacts/**/*
0 commit comments