Some checks failed
CI Pipeline / Code Quality & Typecheck (push) Waiting to run
CI Pipeline / Test Suite (macos-latest) (push) Blocked by required conditions
CI Pipeline / Test Suite (ubuntu-latest) (push) Blocked by required conditions
CI Pipeline / Test Suite (windows-latest) (push) Blocked by required conditions
CI Pipeline / Build Validation (admin) (push) Blocked by required conditions
CI Pipeline / Build Validation (desktop) (push) Blocked by required conditions
Deploy Landing Page / deploy (push) Blocked by required conditions
Deploy Landing Page / build (push) Waiting to run
Release & Packaging Pipeline / Build & Publish Admin Docker Image (push) Failing after 8s
Release & Code Signing CA Pipeline / build-and-sign-windows (push) Failing after 1m51s
Build macOS / Build & Package (macOS) (push) Failing after 4s
Build macOS / Build & Package (macOS)-1 (push) Failing after 5s
Release & Code Signing CA Pipeline / build-and-sign-macos (push) Failing after 3s
Release & Packaging Pipeline / Package macOS Desktop App (push) Failing after 4s
Release & Packaging Pipeline / Package Windows Desktop App (push) Failing after 2m28s
Release & Packaging Pipeline / Publish Official GitHub Release (push) Has been skipped
52 lines
1.9 KiB
JavaScript
52 lines
1.9 KiB
JavaScript
// scripts/ci/build-all.mjs
|
|
// Local Full CI Pipeline Verification Runner
|
|
|
|
import { spawn } from 'node:child_process';
|
|
import process from 'node:process';
|
|
|
|
function runStep(name, cmd, args) {
|
|
return new Promise((resolve, reject) => {
|
|
console.log(`\n==================================================`);
|
|
console.log(`▶ STEP: ${name} (${cmd} ${args.join(' ')})`);
|
|
console.log(`==================================================`);
|
|
|
|
const start = Date.now();
|
|
const isWindows = process.platform === 'win32';
|
|
const actualCmd = isWindows && cmd === 'npm' ? 'npm.cmd' : cmd;
|
|
|
|
const proc = spawn(actualCmd, args, { stdio: 'inherit', shell: isWindows });
|
|
|
|
proc.on('close', (code) => {
|
|
const duration = ((Date.now() - start) / 1000).toFixed(2);
|
|
if (code === 0) {
|
|
console.log(`✔ SUCCESS: ${name} (took ${duration}s)`);
|
|
resolve();
|
|
} else {
|
|
console.error(`✖ FAILED: ${name} (exit code ${code})`);
|
|
reject(new Error(`Step failed: ${name}`));
|
|
}
|
|
});
|
|
});
|
|
}
|
|
|
|
async function main() {
|
|
const totalStart = Date.now();
|
|
console.log('🚀 Starting Full CI/CD Build & Verification Pipeline...\n');
|
|
|
|
try {
|
|
await runStep('Typecheck All Workspaces', 'npm', ['run', 'typecheck']);
|
|
await runStep('Run Vitest Test Suites', 'npm', ['test']);
|
|
await runStep('Build Desktop App (Renderer + Main + Preload)', 'npm', ['run', 'build', '--workspace=@d3ro/desktop']);
|
|
await runStep('Build Admin Dashboard (Next.js 14)', 'npm', ['run', 'build', '--workspace=@d3ro/admin']);
|
|
|
|
const totalDuration = ((Date.now() - totalStart) / 1000).toFixed(2);
|
|
console.log(`\n==================================================`);
|
|
console.log(`🎉 ALL CI/CD STEPS PASSED SUCCESSFULLY! (Total: ${totalDuration}s)`);
|
|
console.log(`==================================================\n`);
|
|
} catch (err) {
|
|
console.error(`\n❌ CI/CD Pipeline execution aborted: ${err.message}`);
|
|
process.exit(1);
|
|
}
|
|
}
|
|
|
|
main();
|