chore(deploy): 修复 Docker 启动链 + 补 compose + Gitea Actions
构建并部署 VoiceHub / 构建 Docker 镜像 (push) Canceled after 0s
构建并部署 VoiceHub / 部署到服务器 (push) Canceled after 0s

This commit is contained in:
2026-09-06 08:23:39 +08:00
parent 4ce4649aaf
commit 1718542228
3 changed files with 323 additions and 53 deletions
+17 -13
View File
@@ -106,26 +106,26 @@ async function deploy() {
logStep('📦', '安装依赖...')
let installed = false
// 优先尝试 pnpm install --frozen-lockfile
if (fileExists('pnpm-lock.yaml')) {
log('尝试使用 pnpm install --frozen-lockfile 安装...', 'cyan')
if (safeExec('pnpm install --frozen-lockfile')) {
// 优先使用 npm(用户要求:禁止 pnpm)—— 优先 package-lock.json 冻结安装
if (fileExists('package-lock.json')) {
log('尝试使用 npm ci(基于 package-lock.json 冻结安装)...', 'cyan')
if (safeExec('npm ci --no-audit --no-fund')) {
installed = true
logSuccess('依赖安装完成 (pnpm install --frozen-lockfile)')
logSuccess('依赖安装完成 (npm ci)')
} else {
logWarning('pnpm install --frozen-lockfile 安装失败,准备回退到 pnpm install...')
logWarning('npm ci 失败,准备回退到 npm install...')
}
} else {
logWarning('未检测到 pnpm-lock.yaml,跳过冻结锁文件安装,直接使用 pnpm install...')
logWarning('未检测到 package-lock.json,直接使用 npm install...')
}
// 如果冻结锁文件安装没运行或失败,使用 pnpm install
// 兜底用 npm install
if (!installed) {
log('正在使用 pnpm install 安装...', 'cyan')
if (!safeExec('pnpm install')) {
log('正在使用 npm install 安装...', 'cyan')
if (!safeExec('npm install --no-audit --no-fund')) {
throw new Error('依赖安装失败')
}
logSuccess('依赖安装完成 (pnpm install)')
logSuccess('依赖安装完成 (npm install)')
}
}
@@ -166,7 +166,10 @@ async function deploy() {
// 4. 创建管理员账户
if (fileExists('scripts/create-admin.js') && dbSyncSuccess) {
logStep('👤', '检查管理员账户...')
safeExec('pnpm run create-admin')
// 优先 npm run create-admin,兜底直接用 node_modules/.bin/tsx 调用(用户禁用 pnpm)
if (!safeExec('npm run create-admin')) {
safeExec('./node_modules/.bin/tsx scripts/create-admin.js')
}
}
// 5. 构建应用
@@ -178,7 +181,8 @@ async function deploy() {
...process.env,
NODE_OPTIONS: process.env.NODE_OPTIONS || DEFAULT_NODE_OPTIONS
}
if (!safeExec('pnpm exec nuxt build', { env: buildEnv })) {
// 用 npm run build(= nuxt build),避免用 pnpm exec
if (!safeExec('npm run build', { env: buildEnv })) {
throw new Error('应用构建失败')
}
logSuccess('应用构建完成')