mirror of
https://github.com/penpot/penpot.git
synced 2026-10-29 22:10:34 +00:00
The exporter is a consumer's process now, so everything that only the HTTP surface held goes away with it: the server, the router and the cookie auth; the export handlers (the runner up past their pieces through `app.consumer.plan`, and `handlers/resources` keeps only the local artifacts); the scheduler with its admission caps; the redis job store, publish and cancel-sweeper; and with the store gone, the redis engine too — the pollers own plain ioredis connections. `app.jobs` is the local cancel arm only: a runtime record the claimed job is registered under, the flag the parts of a run read between renders, the shared-array signal a render thread reads inside a render, the terminate callbacks, and a `mark-cancelled` that marks the record terminal before the callbacks run. The row of the job was never this process's business. The pools size themselves to the worker concurrency, which is what a process of K pollers can run at once; there is no independent pool cap nor scheduler admission left. Docker: the nginx export proxy and the exporter uri die with the endpoints they pointed at; the compose keeps the exporter env thin and honest, the README describes the worker. AI-assisted-by: glm-5.3-flash
37 lines
1.1 KiB
JavaScript
37 lines
1.1 KiB
JavaScript
import { spawnSync } from "node:child_process";
|
|
|
|
const BUILD_STEPS = [
|
|
{ label: "Building test bundle", cmd: "pnpm", args: ["run", "build:test"] },
|
|
];
|
|
|
|
const progress = (msg) => process.stderr.write(`${msg}\n`);
|
|
|
|
for (const step of BUILD_STEPS) {
|
|
progress(`${step.label}...`);
|
|
const result = spawnSync(step.cmd, step.args, {
|
|
stdio: ["ignore", "pipe", "pipe"],
|
|
maxBuffer: 64 * 1024 * 1024,
|
|
});
|
|
if (result.status !== 0) {
|
|
progress(`${step.label} failed`);
|
|
if (result.stdout?.length) process.stdout.write(result.stdout);
|
|
if (result.stderr?.length) process.stderr.write(result.stderr);
|
|
process.exit(result.status ?? 1);
|
|
}
|
|
}
|
|
|
|
progress("Running tests...");
|
|
const result = spawnSync(
|
|
"node",
|
|
["target/tests/test.js", ...process.argv.slice(2)],
|
|
{
|
|
stdio: "inherit",
|
|
// the config of the process needs a secret to even boot: same
|
|
// default the `test` script uses when the environment says nothing
|
|
env: {
|
|
...process.env,
|
|
PENPOT_SECRET_KEY: process.env.PENPOT_SECRET_KEY || "test-secret-key",
|
|
},
|
|
});
|
|
process.exit(result.status ?? 1);
|