rampway 0.5.11 → 0.5.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +18 -3
- package/build/src/cli.d.ts +2 -13
- package/build/src/cli.d.ts.map +1 -1
- package/build/src/cli.js +3 -93
- package/build/src/cli.js.map +1 -1
- package/build/src/config/validate-config.d.ts.map +1 -1
- package/build/src/config/validate-config.js +10 -3
- package/build/src/config/validate-config.js.map +1 -1
- package/build/src/runtimes/rollbridge-runtime.d.ts +1 -1
- package/build/src/runtimes/rollbridge-runtime.d.ts.map +1 -1
- package/build/src/runtimes/rollbridge-runtime.js +7 -9
- package/build/src/runtimes/rollbridge-runtime.js.map +1 -1
- package/build/src/transports/ssh-credentials.d.ts +23 -1
- package/build/src/transports/ssh-credentials.d.ts.map +1 -1
- package/build/src/transports/ssh-credentials.js +170 -2
- package/build/src/transports/ssh-credentials.js.map +1 -1
- package/build/src/types.d.ts +6 -1
- package/build/src/types.d.ts.map +1 -1
- package/build/src/velocious/controller.js +1 -1
- package/build/src/velocious/controller.js.map +1 -1
- package/build/src/velocious/executor.d.ts +10 -4
- package/build/src/velocious/executor.d.ts.map +1 -1
- package/build/src/velocious/executor.js +84 -75
- package/build/src/velocious/executor.js.map +1 -1
- package/docs/config-reference.md +30 -10
- package/docs/velocious-deployment-api.md +5 -4
- package/package.json +1 -1
|
@@ -1,7 +1,26 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @typedef {{socketPath: string, stop: () => Promise<void>}} AgentProcess
|
|
3
|
-
* @typedef {{makeTemp?: (prefix: string) => Promise<string>, startAgent?: (socketPath: string) => Promise<AgentProcess>, addIdentity?: (socketPath: string, input: Buffer) => Promise<void
|
|
3
|
+
* @typedef {{configPath?: string, homeDirectory?: string, makeTemp?: (prefix: string) => Promise<string>, startAgent?: (socketPath: string) => Promise<AgentProcess>, addIdentity?: (socketPath: string, input: Buffer) => Promise<void>, writeDiagnostic?: (message: string) => void}} AgentDependencies
|
|
4
4
|
*/
|
|
5
|
+
/**
|
|
6
|
+
* Runs one complete Rampway command with its configured isolated SSH agent.
|
|
7
|
+
*
|
|
8
|
+
* @template T
|
|
9
|
+
* @param {{configPath: string, stage: {transport: import('#types').TransportConfig}}} prepared
|
|
10
|
+
* @param {() => Promise<T>} callback
|
|
11
|
+
* @param {{manageSignals?: boolean, startAgent?: typeof startEphemeralSshAgent, writeDiagnostic?: (message: string) => void}} [dependencies]
|
|
12
|
+
* @returns {Promise<T>}
|
|
13
|
+
*/
|
|
14
|
+
export function withCommandSshCredentials<T>(prepared: {
|
|
15
|
+
configPath: string;
|
|
16
|
+
stage: {
|
|
17
|
+
transport: import("#types").TransportConfig;
|
|
18
|
+
};
|
|
19
|
+
}, callback: () => Promise<T>, { manageSignals, startAgent, writeDiagnostic }?: {
|
|
20
|
+
manageSignals?: boolean;
|
|
21
|
+
startAgent?: typeof startEphemeralSshAgent;
|
|
22
|
+
writeDiagnostic?: (message: string) => void;
|
|
23
|
+
}): Promise<T>;
|
|
5
24
|
/**
|
|
6
25
|
* @param {import('#types').SshCredentialsConfig} credentials
|
|
7
26
|
* @param {AgentDependencies} [dependencies]
|
|
@@ -18,8 +37,11 @@ export type AgentProcess = {
|
|
|
18
37
|
stop: () => Promise<void>;
|
|
19
38
|
};
|
|
20
39
|
export type AgentDependencies = {
|
|
40
|
+
configPath?: string;
|
|
41
|
+
homeDirectory?: string;
|
|
21
42
|
makeTemp?: (prefix: string) => Promise<string>;
|
|
22
43
|
startAgent?: (socketPath: string) => Promise<AgentProcess>;
|
|
23
44
|
addIdentity?: (socketPath: string, input: Buffer) => Promise<void>;
|
|
45
|
+
writeDiagnostic?: (message: string) => void;
|
|
24
46
|
};
|
|
25
47
|
//# sourceMappingURL=ssh-credentials.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ssh-credentials.d.ts","sourceRoot":"","sources":["../../../src/transports/ssh-credentials.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ssh-credentials.d.ts","sourceRoot":"","sources":["../../../src/transports/ssh-credentials.js"],"names":[],"mappings":"AAWA;;;GAGG;AAEH;;;;;;;;GAQG;AACH,0CANa,CAAC,YACH;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE;QAAC,SAAS,EAAE,OAAO,QAAQ,EAAE,eAAe,CAAA;KAAC,CAAA;CAAC,YAC1E,MAAM,OAAO,CAAC,CAAC,CAAC,mDAChB;IAAC,aAAa,CAAC,EAAE,OAAO,CAAC;IAAC,UAAU,CAAC,EAAE,OAAO,sBAAsB,CAAC;IAAC,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;CAAC,GAChH,OAAO,CAAC,CAAC,CAAC,CAmCtB;AAED;;;;GAIG;AACH,oDAJW,OAAO,QAAQ,EAAE,oBAAoB,iBACrC,iBAAiB,GACf,OAAO,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAC,SAAS,CAAC,CAAC;IAAC,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAAC,CAAC,CA2C/H;2BA9FY;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAAC;gCAC/C;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAAC,UAAU,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC;IAAC,WAAW,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAAC,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;CAAC"}
|
|
@@ -4,10 +4,74 @@ import fs from "node:fs/promises";
|
|
|
4
4
|
import os from "node:os";
|
|
5
5
|
import path from "node:path";
|
|
6
6
|
import { setTimeout as delay } from "node:timers/promises";
|
|
7
|
+
import { createOwnedProcessTree } from "../core/owned-process-tree.js";
|
|
8
|
+
import { withSshCommandEnvironment } from "./ssh-command-environment.js";
|
|
9
|
+
const OPENSSH_DEFAULT_IDENTITY_NAMES = ["id_rsa", "id_ecdsa", "id_ecdsa_sk", "id_ed25519", "id_ed25519_sk", "id_mldsa44_ed25519"];
|
|
7
10
|
/**
|
|
8
11
|
* @typedef {{socketPath: string, stop: () => Promise<void>}} AgentProcess
|
|
9
|
-
* @typedef {{makeTemp?: (prefix: string) => Promise<string>, startAgent?: (socketPath: string) => Promise<AgentProcess>, addIdentity?: (socketPath: string, input: Buffer) => Promise<void
|
|
12
|
+
* @typedef {{configPath?: string, homeDirectory?: string, makeTemp?: (prefix: string) => Promise<string>, startAgent?: (socketPath: string) => Promise<AgentProcess>, addIdentity?: (socketPath: string, input: Buffer) => Promise<void>, writeDiagnostic?: (message: string) => void}} AgentDependencies
|
|
10
13
|
*/
|
|
14
|
+
/**
|
|
15
|
+
* Runs one complete Rampway command with its configured isolated SSH agent.
|
|
16
|
+
*
|
|
17
|
+
* @template T
|
|
18
|
+
* @param {{configPath: string, stage: {transport: import('#types').TransportConfig}}} prepared
|
|
19
|
+
* @param {() => Promise<T>} callback
|
|
20
|
+
* @param {{manageSignals?: boolean, startAgent?: typeof startEphemeralSshAgent, writeDiagnostic?: (message: string) => void}} [dependencies]
|
|
21
|
+
* @returns {Promise<T>}
|
|
22
|
+
*/
|
|
23
|
+
export async function withCommandSshCredentials(prepared, callback, { manageSignals = false, startAgent = startEphemeralSshAgent, writeDiagnostic } = {}) {
|
|
24
|
+
const { stage } = prepared;
|
|
25
|
+
const credentials = stage.transport.type === "ssh" ? stage.transport.credentials : undefined;
|
|
26
|
+
if (!credentials)
|
|
27
|
+
return await callback();
|
|
28
|
+
const agent = await startAgent(credentials, { configPath: prepared.configPath, writeDiagnostic });
|
|
29
|
+
const ownedProcesses = createOwnedProcessTree();
|
|
30
|
+
/** @type {Promise<void>|undefined} */
|
|
31
|
+
let cleanupPromise;
|
|
32
|
+
const cleanup = () => {
|
|
33
|
+
cleanupPromise ??= (async () => {
|
|
34
|
+
let treeError;
|
|
35
|
+
try {
|
|
36
|
+
await ownedProcesses.close();
|
|
37
|
+
}
|
|
38
|
+
catch (error) {
|
|
39
|
+
treeError = error;
|
|
40
|
+
}
|
|
41
|
+
try {
|
|
42
|
+
await agent.close();
|
|
43
|
+
}
|
|
44
|
+
catch (error) {
|
|
45
|
+
if (!treeError)
|
|
46
|
+
treeError = error;
|
|
47
|
+
}
|
|
48
|
+
if (treeError)
|
|
49
|
+
throw treeError;
|
|
50
|
+
})();
|
|
51
|
+
return cleanupPromise;
|
|
52
|
+
};
|
|
53
|
+
const removeSignalHandlers = manageSignals ? installCredentialSignalHandlers(cleanup) : () => { };
|
|
54
|
+
let primaryError;
|
|
55
|
+
try {
|
|
56
|
+
return await ownedProcesses.run(() => withSshCommandEnvironment(agent.env, callback));
|
|
57
|
+
}
|
|
58
|
+
catch (error) {
|
|
59
|
+
primaryError = error;
|
|
60
|
+
throw error;
|
|
61
|
+
}
|
|
62
|
+
finally {
|
|
63
|
+
try {
|
|
64
|
+
await cleanup();
|
|
65
|
+
}
|
|
66
|
+
catch (cleanupError) {
|
|
67
|
+
if (!primaryError)
|
|
68
|
+
throw cleanupError;
|
|
69
|
+
}
|
|
70
|
+
finally {
|
|
71
|
+
removeSignalHandlers();
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
11
75
|
/**
|
|
12
76
|
* @param {import('#types').SshCredentialsConfig} credentials
|
|
13
77
|
* @param {AgentDependencies} [dependencies]
|
|
@@ -17,6 +81,7 @@ export async function startEphemeralSshAgent(credentials, dependencies = {}) {
|
|
|
17
81
|
const makeTemp = dependencies.makeTemp ?? (prefix => fs.mkdtemp(prefix));
|
|
18
82
|
const startAgent = dependencies.startAgent ?? startAgentProcess;
|
|
19
83
|
const addIdentity = dependencies.addIdentity ?? addIdentityProcess;
|
|
84
|
+
const identityFiles = await resolveIdentityFiles(credentials, dependencies);
|
|
20
85
|
const directory = await makeTemp(path.join(os.tmpdir(), "rampway-ssh-agent-"));
|
|
21
86
|
const socketPath = path.join(directory, "agent.sock");
|
|
22
87
|
/** @type {AgentProcess|undefined} */
|
|
@@ -24,7 +89,7 @@ export async function startEphemeralSshAgent(credentials, dependencies = {}) {
|
|
|
24
89
|
try {
|
|
25
90
|
await fs.chmod(directory, 0o700);
|
|
26
91
|
agent = await startAgent(socketPath);
|
|
27
|
-
for (const [index, identityFile] of
|
|
92
|
+
for (const [index, identityFile] of identityFiles.entries()) {
|
|
28
93
|
let identity;
|
|
29
94
|
try {
|
|
30
95
|
const stat = await fs.stat(identityFile);
|
|
@@ -58,6 +123,79 @@ export async function startEphemeralSshAgent(credentials, dependencies = {}) {
|
|
|
58
123
|
}
|
|
59
124
|
};
|
|
60
125
|
}
|
|
126
|
+
/**
|
|
127
|
+
* Selects the deploy-host identity before loading any additional identities.
|
|
128
|
+
* Existing identityFiles-only configurations retain their declared order.
|
|
129
|
+
*
|
|
130
|
+
* @param {import('#types').SshCredentialsConfig} credentials
|
|
131
|
+
* @param {AgentDependencies} dependencies
|
|
132
|
+
* @returns {Promise<string[]>}
|
|
133
|
+
*/
|
|
134
|
+
async function resolveIdentityFiles(credentials, dependencies) {
|
|
135
|
+
const additionalIdentityFiles = credentials.identityFiles ?? [];
|
|
136
|
+
if (credentials.deployKey === undefined)
|
|
137
|
+
return additionalIdentityFiles;
|
|
138
|
+
const deployKeyPath = await resolveDeployKeyPath(credentials.deployKey, dependencies);
|
|
139
|
+
return [deployKeyPath, ...additionalIdentityFiles.filter(identityFile => identityFile !== deployKeyPath)];
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Resolves one readable regular deploy key from the configured search order.
|
|
143
|
+
*
|
|
144
|
+
* @param {"auto"|string} configuredDeployKey
|
|
145
|
+
* @param {AgentDependencies} dependencies
|
|
146
|
+
* @returns {Promise<string>}
|
|
147
|
+
*/
|
|
148
|
+
async function resolveDeployKeyPath(configuredDeployKey, dependencies) {
|
|
149
|
+
const writeDiagnostic = dependencies.writeDiagnostic ?? (message => process.stderr.write(`${message}\n`));
|
|
150
|
+
const explicit = configuredDeployKey !== "auto";
|
|
151
|
+
let candidates;
|
|
152
|
+
if (explicit) {
|
|
153
|
+
candidates = [configuredDeployKey];
|
|
154
|
+
}
|
|
155
|
+
else {
|
|
156
|
+
if (!dependencies.configPath)
|
|
157
|
+
throw new Error("Automatic SSH deploy key discovery requires the loaded Rampway config path.");
|
|
158
|
+
const sshDirectory = path.join(dependencies.homeDirectory ?? os.homedir(), ".ssh");
|
|
159
|
+
candidates = [
|
|
160
|
+
path.join(path.dirname(dependencies.configPath), "deploy.key"),
|
|
161
|
+
...OPENSSH_DEFAULT_IDENTITY_NAMES.map(name => path.join(sshDirectory, name))
|
|
162
|
+
];
|
|
163
|
+
}
|
|
164
|
+
for (const candidate of candidates) {
|
|
165
|
+
writeDiagnostic(`SSH deploy key: checking ${candidate}`);
|
|
166
|
+
let stat;
|
|
167
|
+
try {
|
|
168
|
+
stat = await fs.stat(candidate);
|
|
169
|
+
}
|
|
170
|
+
catch (error) {
|
|
171
|
+
if ( /** @type {{code?: string}} */(error).code !== "ENOENT")
|
|
172
|
+
throw error;
|
|
173
|
+
writeDiagnostic(`SSH deploy key: not found ${candidate}`);
|
|
174
|
+
if (explicit)
|
|
175
|
+
throw new Error(`Configured SSH deploy key was not found: ${candidate}`, { cause: error });
|
|
176
|
+
continue;
|
|
177
|
+
}
|
|
178
|
+
if (!stat.isFile()) {
|
|
179
|
+
writeDiagnostic(`SSH deploy key: not a regular file ${candidate}`);
|
|
180
|
+
if (explicit)
|
|
181
|
+
throw new Error(`Configured SSH deploy key is not a regular file: ${candidate}`);
|
|
182
|
+
continue;
|
|
183
|
+
}
|
|
184
|
+
try {
|
|
185
|
+
await fs.access(candidate, fs.constants.R_OK);
|
|
186
|
+
}
|
|
187
|
+
catch (error) {
|
|
188
|
+
writeDiagnostic(`SSH deploy key: not readable ${candidate}`);
|
|
189
|
+
if (explicit)
|
|
190
|
+
throw new Error(`Configured SSH deploy key is not readable: ${candidate}`, { cause: error });
|
|
191
|
+
continue;
|
|
192
|
+
}
|
|
193
|
+
writeDiagnostic(`SSH deploy key: found ${candidate}`);
|
|
194
|
+
writeDiagnostic(`SSH deploy key: using ${candidate}`);
|
|
195
|
+
return candidate;
|
|
196
|
+
}
|
|
197
|
+
throw new Error(`No readable SSH deploy key found. Checked: ${candidates.join(", ")}`);
|
|
198
|
+
}
|
|
61
199
|
/**
|
|
62
200
|
* @param {string} socketPath
|
|
63
201
|
* @returns {Promise<AgentProcess>}
|
|
@@ -124,4 +262,34 @@ async function cleanupAgent(agent, directory) {
|
|
|
124
262
|
if (stopError)
|
|
125
263
|
throw new Error("Failed to clean up ephemeral SSH agent.", { cause: stopError });
|
|
126
264
|
}
|
|
265
|
+
/**
|
|
266
|
+
* Clean up command-scoped credentials before restoring conventional signal
|
|
267
|
+
* termination. Handlers exist only while an agent is active.
|
|
268
|
+
*
|
|
269
|
+
* @param {() => Promise<void>} close
|
|
270
|
+
* @returns {() => void}
|
|
271
|
+
*/
|
|
272
|
+
function installCredentialSignalHandlers(close) {
|
|
273
|
+
const signals = /** @type {const} */ (["SIGINT", "SIGTERM", "SIGHUP"]);
|
|
274
|
+
let terminating = false;
|
|
275
|
+
const handlers = new Map();
|
|
276
|
+
const remove = () => {
|
|
277
|
+
for (const [signal, handler] of handlers)
|
|
278
|
+
process.removeListener(signal, handler);
|
|
279
|
+
};
|
|
280
|
+
for (const signal of signals) {
|
|
281
|
+
const handler = () => {
|
|
282
|
+
if (terminating)
|
|
283
|
+
return;
|
|
284
|
+
terminating = true;
|
|
285
|
+
void close().catch(() => { }).finally(() => {
|
|
286
|
+
remove();
|
|
287
|
+
process.kill(process.pid, signal);
|
|
288
|
+
});
|
|
289
|
+
};
|
|
290
|
+
handlers.set(signal, handler);
|
|
291
|
+
process.on(signal, handler);
|
|
292
|
+
}
|
|
293
|
+
return remove;
|
|
294
|
+
}
|
|
127
295
|
//# sourceMappingURL=ssh-credentials.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ssh-credentials.js","sourceRoot":"","sources":["../../../src/transports/ssh-credentials.js"],"names":[],"mappings":"AAAA,YAAY;AACZ,OAAO,EAAC,KAAK,EAAC,MAAM,oBAAoB,CAAA;AACxC,OAAO,EAAE,MAAM,kBAAkB,CAAA;AACjC,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAC,UAAU,IAAI,KAAK,EAAC,MAAM,sBAAsB,CAAA;
|
|
1
|
+
{"version":3,"file":"ssh-credentials.js","sourceRoot":"","sources":["../../../src/transports/ssh-credentials.js"],"names":[],"mappings":"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"}
|
package/build/src/types.d.ts
CHANGED
|
@@ -14,8 +14,13 @@ export type TransportConfig = {
|
|
|
14
14
|
};
|
|
15
15
|
export type SshCredentialsConfig = {
|
|
16
16
|
type: "ephemeral-agent";
|
|
17
|
+
} & ({
|
|
18
|
+
deployKey: string;
|
|
19
|
+
identityFiles?: string[];
|
|
20
|
+
} | {
|
|
21
|
+
deployKey?: undefined;
|
|
17
22
|
identityFiles: string[];
|
|
18
|
-
};
|
|
23
|
+
});
|
|
19
24
|
export type HttpTransportConfig = {
|
|
20
25
|
/**
|
|
21
26
|
* - Base URL of the mounted control plane, e.g. `https://app.example/rampway/deployments`.
|
package/build/src/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.js"],"names":[],"mappings":";UAYc,OAAO,GAAC,KAAK
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.js"],"names":[],"mappings":";UAYc,OAAO,GAAC,KAAK;;;;;;;;;;;;;mCAcd;IAAC,IAAI,EAAE,iBAAiB,CAAA;CAAC,GAAG,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,EAAE,CAAA;CAAC,GAAG;IAAC,SAAS,CAAC,EAAE,SAAS,CAAC;IAAC,aAAa,EAAE,MAAM,EAAE,CAAA;CAAC,CAAC;;;;;cAU7H,MAAM;;;;;;;;;;;;;;;;;;;;;;;UAYN,MAAM;cACN,OAAO;;;;;;;;UAgBP,MAAM;;;;;;;;;;;;;;;;aAoBN,MAAM;;;;;;;UAWN,MAAM;aACN,MAAM;;;;;;UAUN,MAAM;aACN,MAAM;;YAEN,QAAQ,GAAC,QAAQ,GAAC,SAAS;;;;;iBAS3B,MAAM;WACN,MAAM;UACN,MAAM;eACN,MAAM;YACN,QAAQ;;;iBAOR,MAAM;eACN,MAAM;;YAEN,MAAM;;cAEN,MAAM;cACN,YAAY,GAAC,YAAY,GAAC,gBAAgB;eAC1C,eAAe;;;cAEF,MAAM;eAAS,MAAM;eAAS,MAAM;gBAAU,MAAM,EAAE;;kBACnE,MAAM;iBACN,WAAW,EAAE;gBACb,WAAW,EAAE;WACb,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC;sBAC3B,MAAM,CAAC,MAAM,EAAE,oBAAoB,EAAE,CAAC;WACtC,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC;kBAC3B,gBAAgB,EAAE;aAClB,aAAa;;;cAOb,MAAM;kBACN,MAAM;gBACN,MAAM;iBACN,MAAM;cACN,MAAM;eACN,MAAM;iBACN,MAAM;qBACN,MAAM;wBACN,MAAM;gBACN,MAAM;;;;iBAQN,MAAM;eACN,MAAM;cACN,MAAM;iBACN,MAAM;gBACN,MAAM;oBACN,MAAM;gBACN,MAAM;;+BAMP,mBAAmB,GAAG;IAAC,aAAa,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,eAAe,EAAE,MAAM,CAAA;CAAC;;;UAQzG,MAAM;;;;;;;;;;;;;;;;;eAqBN,MAAM;cACN,MAAM;aACN,eAAe;;;mBAOf,MAAM;YACN,cAAc;cACd,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC;;;WAO9B,MAAM;YACN,MAAM;;YAEN,MAAM;;;iBAON,MAAM;WACN,MAAM;eACN,MAAM;cACN,MAAM;;;WAGN,MAAM;;;;;;;;;;;;;;;;iBAcN,MAAM;WACN,MAAM;eACN,MAAM;kBACN,MAAM;cACN,MAAM;;WAEN,MAAM;gBACN,MAAM;kBACN,MAAM;aACN,MAAM;;;iBAON,MAAM;WACN,MAAM;aACN,MAAM,GAAC,IAAI;cACX,MAAM,EAAE;kBACR,MAAM;WACN;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAC;;;aAOnC,MAAM;;;;;;;iBAWN,MAAM;WACN,MAAM;oBACN,MAAM;eACN,MAAM;gBACN,KAAK,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,aAAa,EAAE,CAAA;KAAC,CAAC;;;iBAO7C,MAAM;WACN,MAAM;cACN,MAAM;aACN,MAAM,GAAC,IAAI;cACX,MAAM,EAAE;kBACR,MAAM;mBACN,MAAM,GAAC,SAAS;WAChB;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAC;aACjE;QAAC,IAAI,EAAE,MAAM,CAAA;KAAC;;;QAOd,OAAO;gBACP,MAAM;iBACN,MAAM;WACN,MAAM;cACN,MAAM;eACN;QAAC,IAAI,EAAE,MAAM,CAAA;KAAC;cACd,MAAM;aACN;QAAC,IAAI,EAAE,MAAM,CAAA;KAAC;iBACd,MAAM;gBACN,MAAM;gBACN,MAAM;kBACN,MAAM;cACN,MAAM,EAAE;;;iBAOR,MAAM;WACN,MAAM;eACN,MAAM;cACN,MAAM;YACN,MAAM;gBACN,MAAM;gBACN,MAAM;UACN,MAAM;oBACN,MAAM;;;QAON,MAAM;WACN,MAAM;UACN,MAAM;SACN,MAAM;eACN,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;eA8BN,MAAM;aACN,cAAc;;;;YAQd,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC;YACrC,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC;aACxC,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC;cAClE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC;cACrC,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC;iBACvC,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC;QACxC,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC;YACrC,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC;eAC3C,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC;wBACpD,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC;yBACvD,CAAC,QAAQ,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC;cAC/D,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC;UACrC,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC;aACzC,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC;SAC3C,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAC,KAAK,OAAO,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAC,CAAC;yBACxI,MAAM,KAAK,OAAO,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,OAAO,CAAA;KAAC,GAAC,SAAS,CAAC;;;UAOxE,MAAM,MAAM,EAAE;YACd,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,cAAc,CAAC,EAAE,eAAe,CAAC;QAAC,eAAe,CAAC,EAAE,eAAe,CAAC;QAAC,WAAW,CAAC,EAAE,OAAO,CAAA;KAAC,KAAK,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAC,CAAC;2BAC7N,SAAS,QAAQ;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAC,KAAK,OAAO,CAAC,eAAe,CAAC;mCAC/H,SAAS,QAAQ;QAAC,QAAQ,EAAE,eAAe,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAC,KAAK,OAAO,CAAC,eAAe,CAAC;kCACnH,SAAS,QAAQ;QAAC,QAAQ,EAAE,eAAe,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAC,KAAK,OAAO,CAAC,IAAI,CAAC;0BACvG,SAAS,QAAQ;QAAC,QAAQ,EAAE,eAAe,CAAA;KAAC,KAAK,OAAO,CAAC,IAAI,CAAC;4BAC9D,SAAS,QAAQ;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,eAAe,CAAA;KAAC,KAAK,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAC,CAAC;0BACjG,SAAS,QAAQ;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,eAAe,CAAA;KAAC,KAAK,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAC,CAAC;wBACjG,SAAS,QAAQ;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,eAAe,CAAA;KAAC,KAAK,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAC,CAAC;2BACjG,SAAS,QAAQ;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,EAAE,eAAe,CAAA;KAAC,KAAK,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAC,CAAC;mCACnH,eAAe,KAAK,IAAI;yCACxB,eAAe,KAAK,IAAI;+BACxB,eAAe,QAAQ;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAC,KAAK,mBAAmB,GAAC,SAAS;gDACtI,SAAS,SAAS,gBAAgB,KAAK,OAAO,CAAC,IAAI,CAAC;6BACzD;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAC;QAAC,eAAe,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;KAAC,KAAK,OAAO,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAC,CAAC;wCACvL,SAAS,QAAQ;QAAC,IAAI,EAAE,gBAAgB,CAAC;QAAC,QAAQ,EAAE,eAAe,CAAC;QAAC,aAAa,EAAE,GAAG,CAAA;KAAC,KAAK,OAAO,CAAC,IAAI,CAAC;;;;;aAStH,MAAM;UACN,MAAM,EAAE;;;;eAQR,SAAS;WACT,WAAW;;;;;;;;;;;;;;;;;;;;YA4BX,MAAM;gBACN,MAAM;;;UAON,MAAM;aACN,MAAM;gBACN,MAAM;;;;;;;;;cAQC,YAAY;2BAAqB,MAAM;yBAAmB,MAAM;;;kCAGvE;IAAC,aAAa,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,eAAe,EAAE,MAAM,CAAA;CAAC;;UAM1N,SAAS;iBACT,MAAM;oBACN,MAAM;mBACN,MAAM;;;UAON,MAAM;YACN,MAAM;;8BAMP,CAAC,MAAM,EAAE,aAAa,KAAK,cAAc;;aAOxC,OAAO;UACP,MAAM"}
|
|
@@ -50,7 +50,7 @@ export function createDetachedExecution({ configuration, emitFrameworkError = ()
|
|
|
50
50
|
const child = spawnImpl(process.execPath, [workerPath, workerBootstrapPath, mountIdentifier, runId], {
|
|
51
51
|
cwd: configuration.getDirectory(),
|
|
52
52
|
detached: true,
|
|
53
|
-
stdio: ["ignore", "ignore", "
|
|
53
|
+
stdio: ["ignore", "ignore", "inherit"]
|
|
54
54
|
});
|
|
55
55
|
child.once("close", (code, signal) => {
|
|
56
56
|
if (code !== 0) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"controller.js","sourceRoot":"","sources":["../../../src/velocious/controller.js"],"names":[],"mappings":"AAAA,YAAY;AAEZ,OAAO,EAAC,aAAa,EAAE,GAAG,EAAC,MAAM,UAAU,CAAA;AAC3C,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAC,KAAK,IAAI,SAAS,EAAC,MAAM,oBAAoB,CAAA;AAErD,OAAO,UAAU,MAAM,mCAAmC,CAAA;AAE1D,OAAO,EAAC,sBAAsB,EAAC,MAAM,oBAAoB,CAAA;AACzD,OAAO,kBAAkB,MAAM,gBAAgB,CAAA;AAC/C,OAAO,EAAC,kBAAkB,EAAC,MAAM,eAAe,CAAA;AAEhD,2CAA2C;AAC3C,MAAM,CAAC,MAAM,iBAAiB,GAAG,EAAE,CAAC,YAAY,CAAC,aAAa,CAAC,IAAI,GAAG,CAAC,aAAa,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;AAExG;;;;;GAKG;AACH,MAAM,UAAU,2BAA2B,CAAC,KAAK;IAC/C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAA;IAC3H,IAAI,QAAQ,CAAA;IACZ,IAAI,CAAC;QACH,QAAQ,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAA;IACnC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,mDAAmD,KAAK,EAAE,EAAE,EAAC,KAAK,EAAE,KAAK,EAAC,CAAC,CAAA;IAC7F,CAAC;IACD,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,gDAAgD,KAAK,EAAE,CAAC,CAAA;IAC7G,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,uBAAuB,CAAC,EAAC,aAAa,EAAE,kBAAkB,GAAG,GAAG,EAAE,GAAE,CAAC,EAAE,eAAe,EAAE,SAAS,GAAG,SAAS,EAAE,mBAAmB,EAAE,UAAU,GAAG,iBAAiB,EAAC;IACjL,OAAO,KAAK,EAAE,EAAC,SAAS,EAAE,KAAK,EAAC,EAAE,EAAE;QAClC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,GAAG;YAAE,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAA;QACxI,IAAI,OAAO,eAAe,KAAK,QAAQ,IAAI,eAAe,CAAC,MAAM,KAAK,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAA;QACzI,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,UAAU,EAAE,mBAAmB,EAAE,eAAe,EAAE,KAAK,CAAC,EAAE;YACnG,GAAG,EAAE,aAAa,CAAC,YAAY,EAAE;YACjC,QAAQ,EAAE,IAAI;YACd,KAAK,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,
|
|
1
|
+
{"version":3,"file":"controller.js","sourceRoot":"","sources":["../../../src/velocious/controller.js"],"names":[],"mappings":"AAAA,YAAY;AAEZ,OAAO,EAAC,aAAa,EAAE,GAAG,EAAC,MAAM,UAAU,CAAA;AAC3C,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAC,KAAK,IAAI,SAAS,EAAC,MAAM,oBAAoB,CAAA;AAErD,OAAO,UAAU,MAAM,mCAAmC,CAAA;AAE1D,OAAO,EAAC,sBAAsB,EAAC,MAAM,oBAAoB,CAAA;AACzD,OAAO,kBAAkB,MAAM,gBAAgB,CAAA;AAC/C,OAAO,EAAC,kBAAkB,EAAC,MAAM,eAAe,CAAA;AAEhD,2CAA2C;AAC3C,MAAM,CAAC,MAAM,iBAAiB,GAAG,EAAE,CAAC,YAAY,CAAC,aAAa,CAAC,IAAI,GAAG,CAAC,aAAa,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;AAExG;;;;;GAKG;AACH,MAAM,UAAU,2BAA2B,CAAC,KAAK;IAC/C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAA;IAC3H,IAAI,QAAQ,CAAA;IACZ,IAAI,CAAC;QACH,QAAQ,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAA;IACnC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,mDAAmD,KAAK,EAAE,EAAE,EAAC,KAAK,EAAE,KAAK,EAAC,CAAC,CAAA;IAC7F,CAAC;IACD,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,gDAAgD,KAAK,EAAE,CAAC,CAAA;IAC7G,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,uBAAuB,CAAC,EAAC,aAAa,EAAE,kBAAkB,GAAG,GAAG,EAAE,GAAE,CAAC,EAAE,eAAe,EAAE,SAAS,GAAG,SAAS,EAAE,mBAAmB,EAAE,UAAU,GAAG,iBAAiB,EAAC;IACjL,OAAO,KAAK,EAAE,EAAC,SAAS,EAAE,KAAK,EAAC,EAAE,EAAE;QAClC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,GAAG;YAAE,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAA;QACxI,IAAI,OAAO,eAAe,KAAK,QAAQ,IAAI,eAAe,CAAC,MAAM,KAAK,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAA;QACzI,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,UAAU,EAAE,mBAAmB,EAAE,eAAe,EAAE,KAAK,CAAC,EAAE;YACnG,GAAG,EAAE,aAAa,CAAC,YAAY,EAAE;YACjC,QAAQ,EAAE,IAAI;YACd,KAAK,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC;SACvC,CAAC,CAAA;QACF,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;YACnC,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;gBACf,MAAM,OAAO,GAAG,IAAI,KAAK,CAAC,uDAAuD,MAAM,IAAI,QAAQ,IAAI,EAAE,GAAG,CAAC,CAAA;gBAC7G,IAAI,SAAS;oBAAE,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,sBAAsB,CAAC,KAAK,EAAE,EAAE,CAAC,kBAAkB,CAAC,EAAC,OAAO,EAAE,uCAAuC,EAAE,KAAK,EAAC,CAAC,CAAC,CAAA;YAC1J,CAAC;QACH,CAAC,CAAC,CAAA;QAEF,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACpC,IAAI,OAAO,GAAG,KAAK,CAAA;YACnB,MAAM,IAAI,GAAG,CAAC,sBAAsB,CAAC,KAAK,EAAE,EAAE;gBAC5C,IAAI,OAAO;oBAAE,OAAM;gBACnB,OAAO,GAAG,IAAI,CAAA;gBACd,MAAM,CAAC,KAAK,CAAC,CAAA;YACf,CAAC,CAAA;YACD,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;YACzB,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE;gBACvB,IAAI,OAAO;oBAAE,OAAM;gBACnB,OAAO,GAAG,IAAI,CAAA;gBACd,KAAK,CAAC,KAAK,EAAE,CAAA;gBACb,OAAO,CAAC,SAAS,CAAC,CAAA;YACpB,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;IACJ,CAAC,CAAA;AACH,CAAC;AAED,qEAAqE;AACrE,MAAM,CAAC,OAAO,OAAO,8BAA+B,SAAQ,UAAU;IACpE,oDAAoD;IACpD,aAAa;QACX,MAAM,EAAE,GAAG,qBAAqB,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,wBAAwB,CAAC,CAAA;QACzE,MAAM,OAAO,GAAG,kBAAkB,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,EAAE,CAAC,CAAA;QAC/D,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,iDAAiD,EAAE,EAAE,CAAC,CAAA;QACpF,OAAO,OAAO,CAAA;IAChB,CAAC;IAED,2CAA2C;IAC3C,MAAM;QACJ,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,EAAE,CAAA;YACpC,IAAI,CAAC,kBAAkB,GAAG,IAAI,kBAAkB,CAAC;gBAC/C,aAAa,EAAE,IAAI,CAAC,gBAAgB,EAAE;gBACtC,kBAAkB,EAAE,OAAO,CAAC,kBAAkB;gBAC9C,eAAe,EAAE,OAAO,CAAC,eAAe;gBACxC,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;aAC7C,CAAC,CAAA;QACJ,CAAC;QACD,OAAO,IAAI,CAAC,kBAAkB,CAAA;IAChC,CAAC;IAED,2EAA2E;IAC3E,aAAa;QACX,MAAM,OAAO,GAAG,8JAA8J,CAAC,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAA;QACrM,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAA;QAC7C,MAAM,kBAAkB,GAAG,CAAC,gDAAgD,CAAC,EAAC,OAAO,EAAE,KAAK,EAAC,EAAE,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,EAAC,OAAO,EAAE,KAAK,EAAC,CAAC,CAAA;QAC5I,OAAO,IAAI,sBAAsB,CAAC;YAChC,iBAAiB,EAAE,uBAAuB,CAAC,EAAC,aAAa,EAAE,eAAe,EAAE,OAAO,CAAC,eAAe,EAAE,mBAAmB,EAAE,OAAO,CAAC,mBAAmB,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAC,CAAC;YACvL,kBAAkB;YAClB,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,OAAO;YACP,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE;SACrB,CAAC,CAAA;IACJ,CAAC;IAED,iFAAiF;IACjF,mBAAmB,CAAC,EAAC,OAAO,EAAE,KAAK,EAAC;QAClC,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC,cAAc,EAAE,CAAA;QACvD,wEAAwE;QACxE,oEAAoE;QACpE,MAAM,OAAO,GAAG,EAAC,OAAO,EAAE,KAAK,EAAC,CAAA;QAChC,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAA;QACvC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,EAAC,GAAG,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAC,CAAC,CAAA;IACtE,CAAC;IAED,+BAA+B;IAC/B,KAAK,CAAC,MAAM;QACV,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC,MAAM,CAAC;YACjD,aAAa,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC;YACrD,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE;SACrB,CAAC,CAAA;QACF,MAAM,IAAI,CAAC,MAAM,CAAC,EAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAC,CAAC,CAAA;IACnE,CAAC;IAED,+BAA+B;IAC/B,KAAK,CAAC,IAAI;QACR,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC;YAC/C,aAAa,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC;YACrD,EAAE,EAAE,qBAAqB,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC;SAC7C,CAAC,CAAA;QACF,MAAM,IAAI,CAAC,MAAM,CAAC,EAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAC,CAAC,CAAA;IACnE,CAAC;CACF"}
|
|
@@ -13,17 +13,21 @@ export function readDeploymentStatus({ stage, transport }: {
|
|
|
13
13
|
* deploy, rollback, and status functions. Dependency overrides are test-only.
|
|
14
14
|
*
|
|
15
15
|
* @param {object} [deps] - Overrides.
|
|
16
|
-
* @param {typeof
|
|
16
|
+
* @param {typeof defaultCommandContextFromPrepared} [deps.commandContextFromPrepared] - Operational transport constructor.
|
|
17
17
|
* @param {typeof runDeploy} [deps.deploy] - Deploy lifecycle.
|
|
18
|
+
* @param {typeof defaultPrepareCommandContext} [deps.prepareCommandContext] - Structural context loader.
|
|
18
19
|
* @param {typeof readDeploymentStatus} [deps.readDeploymentStatus] - Status reader.
|
|
19
20
|
* @param {typeof runRollback} [deps.rollback] - Rollback lifecycle.
|
|
21
|
+
* @param {typeof defaultWithCommandSshCredentials} [deps.withCommandSshCredentials] - Command credential scope.
|
|
20
22
|
* @returns {RampwayDeploymentExecutor} Executor.
|
|
21
23
|
*/
|
|
22
|
-
export function createRampwayDeploymentExecutor({
|
|
23
|
-
|
|
24
|
+
export function createRampwayDeploymentExecutor({ commandContextFromPrepared, deploy, prepareCommandContext, readDeploymentStatus: statusReader, rollback, withCommandSshCredentials }?: {
|
|
25
|
+
commandContextFromPrepared?: typeof defaultCommandContextFromPrepared | undefined;
|
|
24
26
|
deploy?: typeof runDeploy | undefined;
|
|
27
|
+
prepareCommandContext?: typeof defaultPrepareCommandContext | undefined;
|
|
25
28
|
readDeploymentStatus?: typeof readDeploymentStatus | undefined;
|
|
26
29
|
rollback?: typeof runRollback | undefined;
|
|
30
|
+
withCommandSshCredentials?: typeof defaultWithCommandSshCredentials | undefined;
|
|
27
31
|
}): RampwayDeploymentExecutor;
|
|
28
32
|
export type RampwayDeploymentTarget = {
|
|
29
33
|
configPath: string;
|
|
@@ -50,7 +54,9 @@ export type RampwayDeploymentExecutor = {
|
|
|
50
54
|
target: RampwayDeploymentTarget;
|
|
51
55
|
}) => Promise<Record<string, any>>;
|
|
52
56
|
};
|
|
53
|
-
import {
|
|
57
|
+
import { commandContextFromPrepared as defaultCommandContextFromPrepared } from "../commands/context.js";
|
|
54
58
|
import { deploy as runDeploy } from "../core/deploy-runner.js";
|
|
59
|
+
import { prepareCommandContext as defaultPrepareCommandContext } from "../commands/context.js";
|
|
55
60
|
import { rollback as runRollback } from "../core/deploy-runner.js";
|
|
61
|
+
import { withCommandSshCredentials as defaultWithCommandSshCredentials } from "../transports/ssh-credentials.js";
|
|
56
62
|
//# sourceMappingURL=executor.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../../src/velocious/executor.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../../src/velocious/executor.js"],"names":[],"mappings":"AAwBA;;;;;GAKG;AACH,2DAHW;IAAC,KAAK,EAAE,OAAO,QAAQ,EAAE,WAAW,CAAC;IAAC,SAAS,EAAE,OAAO,QAAQ,EAAE,SAAS,CAAA;CAAC,GAC1E,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAaxC;AAED;;;;;;;;;;;;GAYG;AACH,yLARG;IAAwD,0BAA0B;IAClD,MAAM;IACa,qBAAqB;IAC7B,oBAAoB;IAC7B,QAAQ;IACa,yBAAyB;CAChF,GAAU,yBAAyB,CA0GrC;sCAjJY;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAC;;sBAE1C,CAAC,IAAI,EAAE;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,uBAAuB,CAAA;KAAC,KAAK,OAAO,CAAC,OAAO,CAAC;YAC/G,CAAC,IAAI,EAAE;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,sBAAsB,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,uBAAuB,CAAA;KAAC,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;gBAC3K,CAAC,IAAI,EAAE;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,uBAAuB,CAAA;KAAC,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;;gFAdc,wBAAwB;oCAClG,0BAA0B;sEADgD,wBAAwB;wCAClG,0BAA0B;8EAMT,kCAAkC"}
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
// @ts-check
|
|
2
2
|
import path from "node:path";
|
|
3
3
|
import { randomUUID } from "node:crypto";
|
|
4
|
-
import {
|
|
4
|
+
import { commandContextFromPrepared as defaultCommandContextFromPrepared, prepareCommandContext as defaultPrepareCommandContext } from "../commands/context.js";
|
|
5
5
|
import { deploy as runDeploy, rollback as runRollback } from "../core/deploy-runner.js";
|
|
6
6
|
import { deployPaths } from "../core/paths.js";
|
|
7
7
|
import { currentReleaseId, previousRelease } from "../core/release-manager.js";
|
|
8
8
|
import { remoteGitRepoLabel } from "../core/git-source.js";
|
|
9
9
|
import { Reporter } from "../core/reporter.js";
|
|
10
10
|
import { shellQuote } from "../transports/ssh-transport.js";
|
|
11
|
+
import { withCommandSshCredentials as defaultWithCommandSshCredentials } from "../transports/ssh-credentials.js";
|
|
11
12
|
/**
|
|
12
13
|
* @typedef {{configPath: string, releaseBranch: string}} RampwayDeploymentTarget
|
|
13
14
|
* @typedef {object} RampwayDeploymentExecutor
|
|
@@ -38,105 +39,113 @@ export async function readDeploymentStatus({ stage, transport }) {
|
|
|
38
39
|
* deploy, rollback, and status functions. Dependency overrides are test-only.
|
|
39
40
|
*
|
|
40
41
|
* @param {object} [deps] - Overrides.
|
|
41
|
-
* @param {typeof
|
|
42
|
+
* @param {typeof defaultCommandContextFromPrepared} [deps.commandContextFromPrepared] - Operational transport constructor.
|
|
42
43
|
* @param {typeof runDeploy} [deps.deploy] - Deploy lifecycle.
|
|
44
|
+
* @param {typeof defaultPrepareCommandContext} [deps.prepareCommandContext] - Structural context loader.
|
|
43
45
|
* @param {typeof readDeploymentStatus} [deps.readDeploymentStatus] - Status reader.
|
|
44
46
|
* @param {typeof runRollback} [deps.rollback] - Rollback lifecycle.
|
|
47
|
+
* @param {typeof defaultWithCommandSshCredentials} [deps.withCommandSshCredentials] - Command credential scope.
|
|
45
48
|
* @returns {RampwayDeploymentExecutor} Executor.
|
|
46
49
|
*/
|
|
47
|
-
export function createRampwayDeploymentExecutor({
|
|
50
|
+
export function createRampwayDeploymentExecutor({ commandContextFromPrepared = defaultCommandContextFromPrepared, deploy = runDeploy, prepareCommandContext = defaultPrepareCommandContext, readDeploymentStatus: statusReader = readDeploymentStatus, rollback = runRollback, withCommandSshCredentials = defaultWithCommandSshCredentials } = {}) {
|
|
48
51
|
/**
|
|
49
52
|
* @param {RampwayDeploymentTarget} target - Allowlisted target.
|
|
50
53
|
* @param {string} stageName - Allowlisted stage.
|
|
51
|
-
* @
|
|
54
|
+
* @template T
|
|
55
|
+
* @param {(context: {stage: import('#types').StageConfig, transport: import('#types').Transport}) => Promise<T>} callback - Scoped operation.
|
|
56
|
+
* @returns {Promise<T>} Scoped operation result.
|
|
52
57
|
*/
|
|
53
|
-
async function
|
|
54
|
-
const
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
58
|
+
async function withContext(target, stageName, callback) {
|
|
59
|
+
const prepared = await prepareCommandContext({ config: target.configPath }, stageName);
|
|
60
|
+
return await withCommandSshCredentials(prepared, async () => {
|
|
61
|
+
const context = commandContextFromPrepared(prepared, { reporter: quietReporter() });
|
|
62
|
+
if (context.stage.strategy !== "remote-git") {
|
|
63
|
+
throw new Error(`Callable deployment target ${context.stage.application}/${stageName} must use the remote-git strategy`);
|
|
64
|
+
}
|
|
65
|
+
if (!context.stage.repo)
|
|
66
|
+
throw new Error(`Callable deployment target ${context.stage.application}/${stageName} requires a repository`);
|
|
67
|
+
return await callback(context);
|
|
68
|
+
});
|
|
61
69
|
}
|
|
62
70
|
return {
|
|
63
71
|
async validateRevision({ revision, stage, target }) {
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
try {
|
|
69
|
-
try {
|
|
70
|
-
await transport.run(`git init ${shellQuote(checkPath)}`);
|
|
71
|
-
await transport.run(`git -C ${shellQuote(checkPath)} remote add origin ${shellQuote(repository)}`);
|
|
72
|
-
await transport.run(`git -C ${shellQuote(checkPath)} fetch --no-tags origin ${shellQuote(`refs/heads/${target.releaseBranch}`)}`);
|
|
73
|
-
}
|
|
74
|
-
catch {
|
|
75
|
-
throw new Error(`Could not fetch approved branch ${target.releaseBranch} from ${remoteGitRepoLabel(repository)} for revision validation`);
|
|
76
|
-
}
|
|
72
|
+
return await withContext(target, stage, async ({ stage: rampwayStage, transport }) => {
|
|
73
|
+
const checkPath = path.join(rampwayStage.deployTo, `.rampway-revision-check-${randomUUID()}`);
|
|
74
|
+
const repository = /** @type {string} */ (rampwayStage.repo);
|
|
75
|
+
await transport.mkdirp(rampwayStage.deployTo);
|
|
77
76
|
try {
|
|
78
|
-
|
|
79
|
-
|
|
77
|
+
try {
|
|
78
|
+
await transport.run(`git init ${shellQuote(checkPath)}`);
|
|
79
|
+
await transport.run(`git -C ${shellQuote(checkPath)} remote add origin ${shellQuote(repository)}`);
|
|
80
|
+
await transport.run(`git -C ${shellQuote(checkPath)} fetch --no-tags origin ${shellQuote(`refs/heads/${target.releaseBranch}`)}`);
|
|
81
|
+
}
|
|
82
|
+
catch {
|
|
83
|
+
throw new Error(`Could not fetch approved branch ${target.releaseBranch} from ${remoteGitRepoLabel(repository)} for revision validation`);
|
|
84
|
+
}
|
|
85
|
+
try {
|
|
86
|
+
await transport.run(`git -C ${shellQuote(checkPath)} merge-base --is-ancestor ${shellQuote(revision)} FETCH_HEAD`);
|
|
87
|
+
return true;
|
|
88
|
+
}
|
|
89
|
+
catch {
|
|
90
|
+
return false;
|
|
91
|
+
}
|
|
80
92
|
}
|
|
81
|
-
|
|
82
|
-
|
|
93
|
+
finally {
|
|
94
|
+
await transport.rm(checkPath);
|
|
83
95
|
}
|
|
84
|
-
}
|
|
85
|
-
finally {
|
|
86
|
-
await transport.rm(checkPath);
|
|
87
|
-
}
|
|
96
|
+
});
|
|
88
97
|
},
|
|
89
98
|
async deploy({ revision, expectedActiveRevision, stage, target }) {
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
try {
|
|
93
|
-
return /** @type {Record<string, any>} */ (await deploy({
|
|
94
|
-
branch: target.releaseBranch,
|
|
95
|
-
force: false,
|
|
96
|
-
expectedActiveRevision,
|
|
97
|
-
reporter: quietReporter(),
|
|
98
|
-
revision,
|
|
99
|
-
stage: rampwayStage,
|
|
100
|
-
transport
|
|
101
|
-
}));
|
|
102
|
-
}
|
|
103
|
-
catch (error) {
|
|
104
|
-
const failure = error instanceof Error ? error : new Error(String(error));
|
|
105
|
-
/** @type {Record<string, any>} */
|
|
106
|
-
let recovery;
|
|
99
|
+
return await withContext(target, stage, async ({ stage: rampwayStage, transport }) => {
|
|
100
|
+
const before = await statusReader({ stage: rampwayStage, transport });
|
|
107
101
|
try {
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
102
|
+
return /** @type {Record<string, any>} */ (await deploy({
|
|
103
|
+
branch: target.releaseBranch,
|
|
104
|
+
force: false,
|
|
105
|
+
expectedActiveRevision,
|
|
106
|
+
reporter: quietReporter(),
|
|
107
|
+
revision,
|
|
108
|
+
stage: rampwayStage,
|
|
109
|
+
transport
|
|
110
|
+
}));
|
|
111
|
+
}
|
|
112
|
+
catch (error) {
|
|
113
|
+
const failure = error instanceof Error ? error : new Error(String(error));
|
|
114
|
+
/** @type {Record<string, any>} */
|
|
115
|
+
let recovery;
|
|
116
|
+
try {
|
|
117
|
+
const after = await statusReader({ stage: rampwayStage, transport });
|
|
118
|
+
const changed = after.currentRelease !== before.currentRelease;
|
|
119
|
+
if (changed && after.activeRevision === revision && before.currentRelease) {
|
|
120
|
+
const rollbackReport = await rollback({ stage: rampwayStage, to: before.currentRelease, transport });
|
|
121
|
+
recovery = {
|
|
122
|
+
activeRevision: before.activeRevision ?? null,
|
|
123
|
+
currentRelease: before.currentRelease ?? null,
|
|
124
|
+
restored: true,
|
|
125
|
+
rollback: rollbackReport
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
else {
|
|
129
|
+
recovery = {
|
|
130
|
+
activeRevision: after.activeRevision ?? null,
|
|
131
|
+
currentRelease: after.currentRelease ?? null,
|
|
132
|
+
restored: !changed
|
|
133
|
+
};
|
|
134
|
+
}
|
|
118
135
|
}
|
|
119
|
-
|
|
136
|
+
catch (recoveryError) {
|
|
120
137
|
recovery = {
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
restored: !changed
|
|
138
|
+
message: recoveryError instanceof Error ? recoveryError.message : String(recoveryError),
|
|
139
|
+
restored: false
|
|
124
140
|
};
|
|
125
141
|
}
|
|
142
|
+
/** @type {Error & {recovery?: Record<string, any>}} */ (failure).recovery = recovery;
|
|
143
|
+
throw failure;
|
|
126
144
|
}
|
|
127
|
-
|
|
128
|
-
recovery = {
|
|
129
|
-
message: recoveryError instanceof Error ? recoveryError.message : String(recoveryError),
|
|
130
|
-
restored: false
|
|
131
|
-
};
|
|
132
|
-
}
|
|
133
|
-
/** @type {Error & {recovery?: Record<string, any>}} */ (failure).recovery = recovery;
|
|
134
|
-
throw failure;
|
|
135
|
-
}
|
|
145
|
+
});
|
|
136
146
|
},
|
|
137
147
|
async readStatus({ stage, target }) {
|
|
138
|
-
|
|
139
|
-
return await statusReader(context);
|
|
148
|
+
return await withContext(target, stage, statusReader);
|
|
140
149
|
}
|
|
141
150
|
};
|
|
142
151
|
}
|