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:
@@ -7,7 +7,7 @@ services:
|
|||||||
ports:
|
ports:
|
||||||
- "7033:80"
|
- "7033:80"
|
||||||
volumes:
|
volumes:
|
||||||
- ./electron-update:/usr/share/nginx/html/electron-update
|
- ./electron-update/dev:/usr/share/nginx/html/electron-update
|
||||||
environment:
|
environment:
|
||||||
- NODE_ENV=production
|
- NODE_ENV=production
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
|||||||
@@ -60,7 +60,7 @@ services:
|
|||||||
ports:
|
ports:
|
||||||
- "7034:80"
|
- "7034:80"
|
||||||
volumes:
|
volumes:
|
||||||
- ./electron-update:/usr/share/nginx/html/electron-update
|
- ./electron-update/uat:/usr/share/nginx/html/electron-update
|
||||||
environment:
|
environment:
|
||||||
- NODE_ENV=production
|
- NODE_ENV=production
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
|||||||
+10
-4
@@ -1,14 +1,18 @@
|
|||||||
{
|
{
|
||||||
"name": "gamegroup-electron",
|
"name": "gamegroup-electron",
|
||||||
"version": "0.3.2",
|
"version": "0.3.3",
|
||||||
"description": "Game Group V2 桌面客户端",
|
"description": "Game Group V2 桌面客户端",
|
||||||
"main": "main.js",
|
"main": "main.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"start": "electron .",
|
"start": "electron .",
|
||||||
"start:dev": "electron . --env=dev",
|
"start:dev": "electron . --env=dev",
|
||||||
"start:uat": "electron . --env=uat",
|
"start:uat": "electron . --env=uat",
|
||||||
"build": "electron-builder --win && node scripts/copy-to-nas.js",
|
"bump": "node scripts/bump-version.js",
|
||||||
"build:portable": "electron-builder --win portable && node scripts/copy-to-nas.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"
|
"copy-to-nas": "node scripts/copy-to-nas.js"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
@@ -31,7 +35,9 @@
|
|||||||
"target": [
|
"target": [
|
||||||
{
|
{
|
||||||
"target": "nsis",
|
"target": "nsis",
|
||||||
"arch": ["x64"]
|
"arch": [
|
||||||
|
"x64"
|
||||||
|
]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"icon": "build/icon.ico"
|
"icon": "build/icon.ico"
|
||||||
|
|||||||
@@ -0,0 +1,7 @@
|
|||||||
|
{
|
||||||
|
"publish": {
|
||||||
|
"provider": "generic",
|
||||||
|
"url": "http://192.168.1.14:7033/electron-update/",
|
||||||
|
"channel": "latest"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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}`)
|
||||||
@@ -1,11 +1,12 @@
|
|||||||
const fs = require('fs')
|
const fs = require('fs')
|
||||||
const path = require('path')
|
const path = require('path')
|
||||||
|
|
||||||
|
const env = process.argv[2] || 'uat'
|
||||||
const srcDir = path.join(__dirname, '..', 'dist')
|
const srcDir = path.join(__dirname, '..', 'dist')
|
||||||
// 项目根目录下的 electron-update,用于 docker volume 挂载给 nginx
|
// 项目根目录下的 electron-update/{env},用于 docker volume 挂载给 nginx
|
||||||
const localUpdateDir = path.join(__dirname, '..', '..', 'electron-update')
|
const localUpdateDir = path.join(__dirname, '..', '..', 'electron-update', env)
|
||||||
// NAS 共享路径
|
// 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) {
|
function ensureDir(dir) {
|
||||||
try {
|
try {
|
||||||
@@ -26,7 +27,6 @@ function copyFilesTo(destDir, label) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const files = fs.readdirSync(srcDir).filter((f) => {
|
const files = fs.readdirSync(srcDir).filter((f) => {
|
||||||
// 只复制更新相关文件:安装包、yml、blockmap、nupkg
|
|
||||||
const ext = path.extname(f).toLowerCase()
|
const ext = path.extname(f).toLowerCase()
|
||||||
return (
|
return (
|
||||||
ext === '.exe' ||
|
ext === '.exe' ||
|
||||||
|
|||||||
Reference in New Issue
Block a user