feat: add deployable alpha silo

This commit is contained in:
2026-07-11 00:25:45 +08:00
parent 44557da499
commit 9e954790dc
57 changed files with 2792 additions and 400 deletions
+7 -2
View File
@@ -32,6 +32,7 @@ interface Options {
readonly stateDir: string;
readonly cacheDir: string;
readonly workspaceRoot: string;
readonly serviceUnit: string;
readonly bwrapBin: string;
readonly socatBin: string;
readonly pgIsReadyBin: string;
@@ -79,6 +80,7 @@ function deploymentInput(options: Options, env: DeploymentEnv): DeploymentPrefli
stateDir: options.stateDir,
cacheDir: options.cacheDir,
workspaceRoot: options.workspaceRoot,
expectedServiceUnit: options.serviceUnit,
env,
};
}
@@ -97,6 +99,7 @@ async function canonicalizeInput(input: DeploymentPreflightInput): Promise<Deplo
stateDir,
cacheDir,
workspaceRoot,
expectedServiceUnit: input.expectedServiceUnit,
env: { ...input.env, HUB_PROJECT_WORKSPACE_ROOT: workspaceRoot },
};
}
@@ -155,8 +158,8 @@ async function validateNodeVersion(nodeBin: string): Promise<void> {
}
const version = stdout.trim().replace(/^v/, "");
const major = Number(version.split(".")[0]);
if (!Number.isInteger(major) || major < 20) {
throw new Error(`Node.js 20 or newer is required; found ${version || "unknown"}`);
if (!Number.isInteger(major) || major < 24) {
throw new Error(`Node.js 24 or newer is required; found ${version || "unknown"}`);
}
console.log(`[preflight] Node.js: ${version}`);
}
@@ -479,6 +482,7 @@ function parseArgs(argv: readonly string[]): Options {
"--state-dir",
"--cache-dir",
"--workspace-root",
"--service-unit",
"--bwrap-bin",
"--socat-bin",
"--pg-isready-bin",
@@ -508,6 +512,7 @@ function parseArgs(argv: readonly string[]): Options {
stateDir: required(values, "--state-dir"),
cacheDir: required(values, "--cache-dir"),
workspaceRoot: required(values, "--workspace-root"),
serviceUnit: required(values, "--service-unit"),
bwrapBin: required(values, "--bwrap-bin"),
socatBin: required(values, "--socat-bin"),
pgIsReadyBin: required(values, "--pg-isready-bin"),