Files
Henry_Du 4ce4649aaf
Build VoiceHub FPK / build-fpk (push) Failing after 56m5s
Build and Push Docker Image / build-and-push (push) Canceled after 1h9m35s
初次提交
2026-09-06 08:19:02 +08:00

84 lines
2.4 KiB
JavaScript

#!/usr/bin/env node
import { spawn } from 'child_process';
import os from 'os';
// 内存限制配置(4GB总内存)
const memoryLimits = [
{ nodeOptions: '--max-old-space-size=1536', viteThreads: 1, name: '第一次尝试' },
{ nodeOptions: '--max-old-space-size=1280', viteThreads: 1, name: '第二次尝试' },
{ nodeOptions: '--max-old-space-size=1024', viteThreads: 1, name: '第三次尝试' }
];
async function runBuild(config) {
console.log(`🚀 ${config.name}: 内存限制 ${config.nodeOptions}`);
return new Promise((resolve, reject) => {
const env = {
...process.env,
NODE_OPTIONS: config.nodeOptions,
VITE_BUILD_THREADS: config.viteThreads,
NUXT_BUILD_PARALLEL: 'false',
NUXT_SSR: 'true',
VITE_PLUGIN_VUE_MAX_PARALLEL: '1',
VITE_BUILD_MINIFY: 'esbuild',
VITE_SSR_MANIFEST: 'false',
VITE_SOURCEMAP: 'false'
};
const buildProcess = spawn('npm', ['run', 'build'], {
env,
stdio: 'inherit',
shell: true
});
buildProcess.on('close', (code) => {
if (code === 0) {
console.log(`✅ ${config.name}: 构建成功!`);
resolve(true);
} else {
console.log(`❌ ${config.name}: 构建失败,退出码 ${code}`);
resolve(false);
}
});
buildProcess.on('error', (err) => {
console.log(`❌ ${config.name}: 构建错误`, err.message);
resolve(false);
});
// 10分钟超时
setTimeout(() => {
buildProcess.kill();
console.log(`⏰ ${config.name}: 构建超时`);
resolve(false);
}, 600000);
});
}
async function main() {
console.log('🎯 开始内存优化构建(4GB限制)');
console.log(`💻 系统内存: ${Math.round(os.totalmem() / 1024 / 1024 / 1024)}GB`);
for (let i = 0; i < memoryLimits.length; i++) {
const success = await runBuild(memoryLimits[i]);
if (success) {
console.log('🎉 构建完成!');
process.exit(0);
}
if (i < memoryLimits.length - 1) {
console.log('🔄 尝试更保守的设置...');
await new Promise(resolve => setTimeout(resolve, 5000)); // 等待5秒
}
}
console.log('💥 所有构建尝试都失败了');
console.log('💡 建议:');
console.log(' 1. 增加Docker内存限制');
console.log(' 2. 使用更强大的构建机器');
console.log(' 3. 考虑在外部构建后复制结果');
process.exit(1);
}
main().catch(console.error);