feat(electron): separate dev/uat build targets with isolated update channels

- Add build.dev.json to override publish.url for dev environment
- Add build:dev and build:uat scripts; each sets its own feed URL
- copy-to-nas.js now accepts env argument; outputs to
  electron-update/{dev|uat}/ locally and on NAS
- docker-compose volume mounts updated to serve from env subdirs
- Remove stale artifacts from electron-update root

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
wjl
2026-04-21 15:35:07 +08:00
parent 671933d960
commit 01412a0a94
6 changed files with 51 additions and 10 deletions
+1 -1
View File
@@ -7,7 +7,7 @@ services:
ports:
- "7033:80"
volumes:
- ./electron-update:/usr/share/nginx/html/electron-update
- ./electron-update/dev:/usr/share/nginx/html/electron-update
environment:
- NODE_ENV=production
restart: unless-stopped
+1 -1
View File
@@ -60,7 +60,7 @@ services:
ports:
- "7034:80"
volumes:
- ./electron-update:/usr/share/nginx/html/electron-update
- ./electron-update/uat:/usr/share/nginx/html/electron-update
environment:
- NODE_ENV=production
restart: unless-stopped
+10 -4
View File
@@ -1,14 +1,18 @@
{
"name": "gamegroup-electron",
"version": "0.3.2",
"version": "0.3.3",
"description": "Game Group V2 桌面客户端",
"main": "main.js",
"scripts": {
"start": "electron .",
"start:dev": "electron . --env=dev",
"start:uat": "electron . --env=uat",
"build": "electron-builder --win && node scripts/copy-to-nas.js",
"build:portable": "electron-builder --win portable && node scripts/copy-to-nas.js",
"bump": "node scripts/bump-version.js",
"bump:minor": "node scripts/bump-version.js minor",
"bump:major": "node scripts/bump-version.js major",
"build:dev": "node scripts/bump-version.js && electron-builder --win --config scripts/build.dev.json && node scripts/copy-to-nas.js dev",
"build:uat": "node scripts/bump-version.js && electron-builder --win && node scripts/copy-to-nas.js uat",
"build:portable": "node scripts/bump-version.js && electron-builder --win portable && node scripts/copy-to-nas.js uat",
"copy-to-nas": "node scripts/copy-to-nas.js"
},
"dependencies": {
@@ -31,7 +35,9 @@
"target": [
{
"target": "nsis",
"arch": ["x64"]
"arch": [
"x64"
]
}
],
"icon": "build/icon.ico"
+7
View File
@@ -0,0 +1,7 @@
{
"publish": {
"provider": "generic",
"url": "http://192.168.1.14:7033/electron-update/",
"channel": "latest"
}
}
+28
View File
@@ -0,0 +1,28 @@
const fs = require('fs')
const path = require('path')
const type = process.argv[2] || 'patch' // patch | minor | major
const pkgPath = path.join(__dirname, '..', 'package.json')
const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf8'))
let [major, minor, patch] = pkg.version.split('.').map(Number)
switch (type) {
case 'major':
major++
minor = 0
patch = 0
break
case 'minor':
minor++
patch = 0
break
case 'patch':
default:
patch++
break
}
pkg.version = `${major}.${minor}.${patch}`
fs.writeFileSync(pkgPath, JSON.stringify(pkg, null, 2) + '\n')
console.log(`[bump-version] ${type} -> ${pkg.version}`)
+4 -4
View File
@@ -1,11 +1,12 @@
const fs = require('fs')
const path = require('path')
const env = process.argv[2] || 'uat'
const srcDir = path.join(__dirname, '..', 'dist')
// 项目根目录下的 electron-update,用于 docker volume 挂载给 nginx
const localUpdateDir = path.join(__dirname, '..', '..', 'electron-update')
// 项目根目录下的 electron-update/{env},用于 docker volume 挂载给 nginx
const localUpdateDir = path.join(__dirname, '..', '..', 'electron-update', env)
// NAS 共享路径
const nasDir = '\\\\JIULUGNAS\\personal_folder\\CodeSpace\\GameGroup2\\electron-update'
const nasDir = path.join('\\\\JIULUGNAS\\personal_folder\\CodeSpace\\GameGroup2\\electron-update', env)
function ensureDir(dir) {
try {
@@ -26,7 +27,6 @@ function copyFilesTo(destDir, label) {
}
const files = fs.readdirSync(srcDir).filter((f) => {
// 只复制更新相关文件:安装包、yml、blockmap、nupkg
const ext = path.extname(f).toLowerCase()
return (
ext === '.exe' ||