rampway 0.2.5 → 0.3.0
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 +12 -0
- package/build/src/cli.d.ts.map +1 -1
- package/build/src/cli.js +35 -7
- package/build/src/cli.js.map +1 -1
- package/build/src/commands/deploy.d.ts.map +1 -1
- package/build/src/commands/deploy.js +31 -7
- package/build/src/commands/deploy.js.map +1 -1
- package/build/src/commands/task.d.ts +9 -0
- package/build/src/commands/task.d.ts.map +1 -0
- package/build/src/commands/task.js +23 -0
- package/build/src/commands/task.js.map +1 -0
- package/build/src/config/validate-config.d.ts +5 -0
- package/build/src/config/validate-config.d.ts.map +1 -1
- package/build/src/config/validate-config.js +139 -0
- package/build/src/config/validate-config.js.map +1 -1
- package/build/src/core/deploy-log.d.ts +66 -0
- package/build/src/core/deploy-log.d.ts.map +1 -0
- package/build/src/core/deploy-log.js +112 -0
- package/build/src/core/deploy-log.js.map +1 -0
- package/build/src/core/deploy-runner.js +5 -5
- package/build/src/core/deploy-runner.js.map +1 -1
- package/build/src/core/locks.d.ts +2 -1
- package/build/src/core/locks.d.ts.map +1 -1
- package/build/src/core/locks.js +28 -9
- package/build/src/core/locks.js.map +1 -1
- package/build/src/core/operational-task-runner.d.ts +21 -0
- package/build/src/core/operational-task-runner.d.ts.map +1 -0
- package/build/src/core/operational-task-runner.js +66 -0
- package/build/src/core/operational-task-runner.js.map +1 -0
- package/build/src/core/redaction.d.ts +31 -3
- package/build/src/core/redaction.d.ts.map +1 -1
- package/build/src/core/redaction.js +83 -5
- package/build/src/core/redaction.js.map +1 -1
- package/build/src/core/release-manager.d.ts +11 -0
- package/build/src/core/release-manager.d.ts.map +1 -1
- package/build/src/core/release-manager.js +22 -0
- package/build/src/core/release-manager.js.map +1 -1
- package/build/src/core/reporter.d.ts +37 -6
- package/build/src/core/reporter.d.ts.map +1 -1
- package/build/src/core/reporter.js +46 -6
- package/build/src/core/reporter.js.map +1 -1
- package/build/src/core/task-runner.d.ts +4 -2
- package/build/src/core/task-runner.d.ts.map +1 -1
- package/build/src/core/task-runner.js +34 -8
- package/build/src/core/task-runner.js.map +1 -1
- package/build/src/transports/local-transport.d.ts +19 -2
- package/build/src/transports/local-transport.d.ts.map +1 -1
- package/build/src/transports/local-transport.js +100 -12
- package/build/src/transports/local-transport.js.map +1 -1
- package/build/src/transports/ssh-transport.d.ts +43 -4
- package/build/src/transports/ssh-transport.d.ts.map +1 -1
- package/build/src/transports/ssh-transport.js +111 -18
- package/build/src/transports/ssh-transport.js.map +1 -1
- package/build/src/types.d.ts +20 -0
- package/build/src/types.d.ts.map +1 -1
- package/docs/config-reference.md +57 -0
- package/docs/migration-from-capistrano.md +25 -3
- package/package.json +3 -2
|
@@ -19,6 +19,11 @@ export function shellQuote(value: unknown): string;
|
|
|
19
19
|
* @returns {string}
|
|
20
20
|
*/
|
|
21
21
|
export function shellEnvKey(key: unknown): string;
|
|
22
|
+
/**
|
|
23
|
+
* @param {unknown} key
|
|
24
|
+
* @returns {string}
|
|
25
|
+
*/
|
|
26
|
+
export function shellEnvName(key: unknown): string;
|
|
22
27
|
/**
|
|
23
28
|
* @param {unknown} value
|
|
24
29
|
* @returns {string}
|
|
@@ -80,6 +85,18 @@ export class SshTransport {
|
|
|
80
85
|
* @returns {Promise<void>}
|
|
81
86
|
*/
|
|
82
87
|
writeFile(filePath: string, content: string): Promise<void>;
|
|
88
|
+
/**
|
|
89
|
+
* @param {string} filePath
|
|
90
|
+
* @param {string} content
|
|
91
|
+
* @returns {Promise<boolean>}
|
|
92
|
+
*/
|
|
93
|
+
writeFileExclusive(filePath: string, content: string): Promise<boolean>;
|
|
94
|
+
/**
|
|
95
|
+
* @param {string} filePath
|
|
96
|
+
* @param {string} expectedContent
|
|
97
|
+
* @returns {Promise<boolean>}
|
|
98
|
+
*/
|
|
99
|
+
removeFileIfContent(filePath: string, expectedContent: string): Promise<boolean>;
|
|
83
100
|
/**
|
|
84
101
|
* @param {string} filePath
|
|
85
102
|
* @returns {Promise<string>}
|
|
@@ -98,12 +115,13 @@ export class SshTransport {
|
|
|
98
115
|
copyDir(from: string, to: string): Promise<void>;
|
|
99
116
|
/**
|
|
100
117
|
* @param {string} command
|
|
101
|
-
* @param {{cwd?: string, env?: Record<string, string>}} [opts]
|
|
118
|
+
* @param {{cwd?: string, env?: Record<string, string>, secretEnv?: Record<string, string>}} [opts]
|
|
102
119
|
* @returns {Promise<import('#types').SpawnResult>}
|
|
103
120
|
*/
|
|
104
|
-
run(command: string, { cwd, env }?: {
|
|
121
|
+
run(command: string, { cwd, env, secretEnv }?: {
|
|
105
122
|
cwd?: string;
|
|
106
123
|
env?: Record<string, string>;
|
|
124
|
+
secretEnv?: Record<string, string>;
|
|
107
125
|
}): Promise<import("#types").SpawnResult>;
|
|
108
126
|
/**
|
|
109
127
|
* @param {string} targetPath
|
|
@@ -142,6 +160,16 @@ export class SshTransport {
|
|
|
142
160
|
* @returns {import('#types').CommandPlan}
|
|
143
161
|
*/
|
|
144
162
|
commandPlanForWriteFile(filePath: string): import("#types").CommandPlan;
|
|
163
|
+
/**
|
|
164
|
+
* @param {string} filePath
|
|
165
|
+
* @returns {import('#types').CommandPlan}
|
|
166
|
+
*/
|
|
167
|
+
commandPlanForWriteFileExclusive(filePath: string): import("#types").CommandPlan;
|
|
168
|
+
/**
|
|
169
|
+
* @param {string} filePath
|
|
170
|
+
* @returns {import('#types').CommandPlan}
|
|
171
|
+
*/
|
|
172
|
+
commandPlanForRemoveFileIfContent(filePath: string): import("#types").CommandPlan;
|
|
145
173
|
/**
|
|
146
174
|
* @param {string} filePath
|
|
147
175
|
* @returns {import('#types').CommandPlan}
|
|
@@ -167,6 +195,16 @@ export class SshTransport {
|
|
|
167
195
|
cwd?: string;
|
|
168
196
|
env?: Record<string, string>;
|
|
169
197
|
}): import("#types").CommandPlan;
|
|
198
|
+
/**
|
|
199
|
+
* @param {string} command
|
|
200
|
+
* @param {{cwd?: string, env?: Record<string, string>, secretEnv: Record<string, string>}} opts
|
|
201
|
+
* @returns {string}
|
|
202
|
+
*/
|
|
203
|
+
scriptForSecretRun(command: string, { cwd, env, secretEnv }: {
|
|
204
|
+
cwd?: string;
|
|
205
|
+
env?: Record<string, string>;
|
|
206
|
+
secretEnv: Record<string, string>;
|
|
207
|
+
}): string;
|
|
170
208
|
/**
|
|
171
209
|
* @param {string} command
|
|
172
210
|
* @returns {import('#types').CommandPlan}
|
|
@@ -174,12 +212,13 @@ export class SshTransport {
|
|
|
174
212
|
remoteCommandPlan(command: string): import("#types").CommandPlan;
|
|
175
213
|
/**
|
|
176
214
|
* @param {import('#types').CommandPlan} plan
|
|
177
|
-
* @param {{input?: string, stream?: boolean}} [opts]
|
|
215
|
+
* @param {{input?: string, stream?: boolean, knownSecrets?: string[]}} [opts]
|
|
178
216
|
* @returns {Promise<import('#types').SpawnResult>}
|
|
179
217
|
*/
|
|
180
|
-
runCommandPlan(plan: import("#types").CommandPlan, { input, stream }?: {
|
|
218
|
+
runCommandPlan(plan: import("#types").CommandPlan, { input, stream, knownSecrets }?: {
|
|
181
219
|
input?: string;
|
|
182
220
|
stream?: boolean;
|
|
221
|
+
knownSecrets?: string[];
|
|
183
222
|
}): Promise<import("#types").SpawnResult>;
|
|
184
223
|
/**
|
|
185
224
|
* @param {import('#types').CommandPlan} plan
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ssh-transport.d.ts","sourceRoot":"","sources":["../../../src/transports/ssh-transport.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ssh-transport.d.ts","sourceRoot":"","sources":["../../../src/transports/ssh-transport.js"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// @ts-check
|
|
2
2
|
import { spawn } from "node:child_process";
|
|
3
3
|
import path from "node:path";
|
|
4
|
-
import { isSecretKey, redactText, StreamingRedactor } from "../core/redaction.js";
|
|
4
|
+
import { isSecretKey, isValidEnvironmentName, redactText, StreamingRedactor } from "../core/redaction.js";
|
|
5
5
|
import { Reporter } from "../core/reporter.js";
|
|
6
6
|
export class SshTransport {
|
|
7
7
|
/**
|
|
@@ -82,6 +82,41 @@ export class SshTransport {
|
|
|
82
82
|
async writeFile(filePath, content) {
|
|
83
83
|
await this.runCommandPlan(this.commandPlanForWriteFile(filePath), { input: content });
|
|
84
84
|
}
|
|
85
|
+
/**
|
|
86
|
+
* @param {string} filePath
|
|
87
|
+
* @param {string} content
|
|
88
|
+
* @returns {Promise<boolean>}
|
|
89
|
+
*/
|
|
90
|
+
async writeFileExclusive(filePath, content) {
|
|
91
|
+
try {
|
|
92
|
+
await this.runCommandPlan(this.commandPlanForWriteFileExclusive(filePath), { input: content });
|
|
93
|
+
return true;
|
|
94
|
+
}
|
|
95
|
+
catch (error) {
|
|
96
|
+
if ( /** @type {{exitCode?: number}} */(error).exitCode === 73)
|
|
97
|
+
return false;
|
|
98
|
+
throw error;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* @param {string} filePath
|
|
103
|
+
* @param {string} expectedContent
|
|
104
|
+
* @returns {Promise<boolean>}
|
|
105
|
+
*/
|
|
106
|
+
async removeFileIfContent(filePath, expectedContent) {
|
|
107
|
+
try {
|
|
108
|
+
await this.runCommandPlan(this.commandPlanForRemoveFileIfContent(filePath), { input: expectedContent });
|
|
109
|
+
return true;
|
|
110
|
+
}
|
|
111
|
+
catch (error) {
|
|
112
|
+
const exitCode = /** @type {{exitCode?: number}} */ (error).exitCode;
|
|
113
|
+
if (exitCode === 75)
|
|
114
|
+
throw new Error(`File ownership removal is already in progress: ${filePath}`);
|
|
115
|
+
if (exitCode === 76)
|
|
116
|
+
return false;
|
|
117
|
+
throw error;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
85
120
|
/**
|
|
86
121
|
* @param {string} filePath
|
|
87
122
|
* @returns {Promise<string>}
|
|
@@ -108,11 +143,22 @@ export class SshTransport {
|
|
|
108
143
|
}
|
|
109
144
|
/**
|
|
110
145
|
* @param {string} command
|
|
111
|
-
* @param {{cwd?: string, env?: Record<string, string>}} [opts]
|
|
146
|
+
* @param {{cwd?: string, env?: Record<string, string>, secretEnv?: Record<string, string>}} [opts]
|
|
112
147
|
* @returns {Promise<import('#types').SpawnResult>}
|
|
113
148
|
*/
|
|
114
|
-
async run(command, { cwd, env = {} } = {}) {
|
|
115
|
-
|
|
149
|
+
async run(command, { cwd, env = {}, secretEnv = {} } = {}) {
|
|
150
|
+
const secretNames = Object.keys(secretEnv);
|
|
151
|
+
if (secretNames.length === 0)
|
|
152
|
+
return await this.runCommandPlan(this.commandPlanForRun(command, { cwd, env }));
|
|
153
|
+
for (const key of Object.keys(env))
|
|
154
|
+
shellEnvKey(key);
|
|
155
|
+
for (const [key, value] of Object.entries(secretEnv)) {
|
|
156
|
+
shellEnvName(key);
|
|
157
|
+
if (value.includes("\0"))
|
|
158
|
+
throw new Error(`Secret environment variable '${key}' contains NUL and cannot be transported.`);
|
|
159
|
+
}
|
|
160
|
+
const input = this.scriptForSecretRun(command, { cwd, env, secretEnv });
|
|
161
|
+
return await this.runCommandPlan(this.remoteCommandPlan("sh -s"), { input, knownSecrets: Object.values(secretEnv) });
|
|
116
162
|
}
|
|
117
163
|
/**
|
|
118
164
|
* @param {string} targetPath
|
|
@@ -166,6 +212,29 @@ export class SshTransport {
|
|
|
166
212
|
const normalizedPath = remotePath(filePath);
|
|
167
213
|
return this.remoteCommandPlan(`mkdir -p ${shellQuote(path.posix.dirname(normalizedPath))} && cat > ${shellQuote(normalizedPath)}`);
|
|
168
214
|
}
|
|
215
|
+
/**
|
|
216
|
+
* @param {string} filePath
|
|
217
|
+
* @returns {import('#types').CommandPlan}
|
|
218
|
+
*/
|
|
219
|
+
commandPlanForWriteFileExclusive(filePath) {
|
|
220
|
+
const normalizedPath = remotePath(filePath);
|
|
221
|
+
const quotedPath = shellQuote(normalizedPath);
|
|
222
|
+
return this.remoteCommandPlan(`mkdir -p ${shellQuote(path.posix.dirname(normalizedPath))} && if (set -C; : > ${quotedPath}) 2>/dev/null; then cat > ${quotedPath}; elif test -e ${quotedPath}; then exit 73; else exit 74; fi`);
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* @param {string} filePath
|
|
226
|
+
* @returns {import('#types').CommandPlan}
|
|
227
|
+
*/
|
|
228
|
+
commandPlanForRemoveFileIfContent(filePath) {
|
|
229
|
+
const normalizedPath = remotePath(filePath);
|
|
230
|
+
const guardPath = `${normalizedPath}.rampway-remove`;
|
|
231
|
+
const guardLockPath = path.posix.join(guardPath, "guard.lock");
|
|
232
|
+
const quotedPath = shellQuote(normalizedPath);
|
|
233
|
+
const quotedGuard = shellQuote(guardPath);
|
|
234
|
+
const quotedGuardLock = shellQuote(guardLockPath);
|
|
235
|
+
const script = 'if ! test -f "$1"; then exit 76; fi; cmp -s "$1" -; status=$?; if test "$status" -eq 1; then exit 76; elif test "$status" -ne 0; then exit 74; fi; rm -f "$1" || exit 74';
|
|
236
|
+
return this.remoteCommandPlan(`mkdir -p ${quotedGuard} && flock -n -E 75 -- ${quotedGuardLock} sh -c ${shellQuote(script)} rampway-remove ${quotedPath}`);
|
|
237
|
+
}
|
|
169
238
|
/**
|
|
170
239
|
* @param {string} filePath
|
|
171
240
|
* @returns {import('#types').CommandPlan}
|
|
@@ -208,6 +277,22 @@ export class SshTransport {
|
|
|
208
277
|
commandParts.push(command);
|
|
209
278
|
return this.remoteCommandPlan(commandParts.join(" && "));
|
|
210
279
|
}
|
|
280
|
+
/**
|
|
281
|
+
* @param {string} command
|
|
282
|
+
* @param {{cwd?: string, env?: Record<string, string>, secretEnv: Record<string, string>}} opts
|
|
283
|
+
* @returns {string}
|
|
284
|
+
*/
|
|
285
|
+
scriptForSecretRun(command, { cwd, env = {}, secretEnv }) {
|
|
286
|
+
const lines = ["set -eu"];
|
|
287
|
+
if (cwd)
|
|
288
|
+
lines.push(`cd ${shellQuote(remotePath(cwd))}`);
|
|
289
|
+
for (const [key, value] of Object.entries(env))
|
|
290
|
+
lines.push(`export ${shellEnvKey(key)}=${shellQuote(value)}`);
|
|
291
|
+
for (const [key, value] of Object.entries(secretEnv))
|
|
292
|
+
lines.push(`export ${shellEnvName(key)}=${shellQuote(value)}`);
|
|
293
|
+
lines.push(`exec sh -c ${shellQuote(command)}`);
|
|
294
|
+
return `${lines.join("\n")}\n`;
|
|
295
|
+
}
|
|
211
296
|
/**
|
|
212
297
|
* @param {string} command
|
|
213
298
|
* @returns {import('#types').CommandPlan}
|
|
@@ -217,23 +302,23 @@ export class SshTransport {
|
|
|
217
302
|
}
|
|
218
303
|
/**
|
|
219
304
|
* @param {import('#types').CommandPlan} plan
|
|
220
|
-
* @param {{input?: string, stream?: boolean}} [opts]
|
|
305
|
+
* @param {{input?: string, stream?: boolean, knownSecrets?: string[]}} [opts]
|
|
221
306
|
* @returns {Promise<import('#types').SpawnResult>}
|
|
222
307
|
*/
|
|
223
|
-
async runCommandPlan(plan, { input, stream = true } = {}) {
|
|
308
|
+
async runCommandPlan(plan, { input, stream = true, knownSecrets = [] } = {}) {
|
|
224
309
|
if (plan.pipeTo)
|
|
225
310
|
return await this.runPipedCommandPlan(plan, { stream });
|
|
226
|
-
const
|
|
311
|
+
const shouldCapture = stream && this.reporter.capturesCommands;
|
|
227
312
|
return await new Promise((resolve, reject) => {
|
|
228
313
|
const child = spawn(plan.command, plan.args);
|
|
229
314
|
let output = "";
|
|
230
|
-
const redactor = new StreamingRedactor();
|
|
315
|
+
const redactor = new StreamingRedactor({ knownSecrets });
|
|
231
316
|
// stdout and stderr share one redactor so a credential URL split across
|
|
232
317
|
// the two streams is still masked before any part of it is emitted.
|
|
233
318
|
const emit = /** @param {Buffer|string} chunk */ /** @param {Buffer|string} chunk */ chunk => {
|
|
234
319
|
const text = chunk.toString();
|
|
235
320
|
output += text;
|
|
236
|
-
if (!
|
|
321
|
+
if (!shouldCapture)
|
|
237
322
|
return;
|
|
238
323
|
const safe = redactor.push(text);
|
|
239
324
|
if (safe && !this.reporter.writeCommandOutput(safe)) {
|
|
@@ -246,7 +331,7 @@ export class SshTransport {
|
|
|
246
331
|
}
|
|
247
332
|
};
|
|
248
333
|
const flush = () => {
|
|
249
|
-
if (!
|
|
334
|
+
if (!shouldCapture)
|
|
250
335
|
return;
|
|
251
336
|
const rest = redactor.flush();
|
|
252
337
|
if (rest)
|
|
@@ -256,15 +341,15 @@ export class SshTransport {
|
|
|
256
341
|
child.stderr.on("data", emit);
|
|
257
342
|
child.on("error", /** @param {Error} error */ /** @param {Error} error */ error => {
|
|
258
343
|
flush();
|
|
259
|
-
reject(error);
|
|
344
|
+
reject(new Error(redactText(error.message, knownSecrets)));
|
|
260
345
|
});
|
|
261
346
|
child.on("close", /** @param {number|null} code */ /** @param {number|null} code */ code => {
|
|
262
347
|
flush();
|
|
263
348
|
if (code === 0) {
|
|
264
|
-
resolve({ code, output });
|
|
349
|
+
resolve({ code, output: knownSecrets.some(Boolean) ? redactText(output, knownSecrets) : output });
|
|
265
350
|
}
|
|
266
351
|
else {
|
|
267
|
-
const error = /** @type {Error & {exitCode?: number}} */ (new Error(`Command failed with exit ${code}: ${redactText([plan.command, ...plan.args].join(" "))}\n${redactText(output)}`));
|
|
352
|
+
const error = /** @type {Error & {exitCode?: number}} */ (new Error(`Command failed with exit ${code}: ${redactText([plan.command, ...plan.args].join(" "), knownSecrets)}\n${redactText(output, knownSecrets)}`));
|
|
268
353
|
error.exitCode = code ?? undefined;
|
|
269
354
|
reject(error);
|
|
270
355
|
}
|
|
@@ -279,14 +364,14 @@ export class SshTransport {
|
|
|
279
364
|
*/
|
|
280
365
|
async runPipedCommandPlan(plan, { stream = true } = {}) {
|
|
281
366
|
const pipeTo = /** @type {import('#types').CommandPlan} */ (plan.pipeTo);
|
|
282
|
-
const
|
|
367
|
+
const shouldCapture = stream && this.reporter.capturesCommands;
|
|
283
368
|
return await new Promise((resolve, reject) => {
|
|
284
369
|
const source = spawn(plan.command, plan.args);
|
|
285
370
|
const target = spawn(pipeTo.command, pipeTo.args);
|
|
286
371
|
let output = "";
|
|
287
372
|
const redactor = new StreamingRedactor();
|
|
288
373
|
const flushOutput = () => {
|
|
289
|
-
if (!
|
|
374
|
+
if (!shouldCapture)
|
|
290
375
|
return;
|
|
291
376
|
const rest = redactor.flush();
|
|
292
377
|
if (rest)
|
|
@@ -303,7 +388,7 @@ export class SshTransport {
|
|
|
303
388
|
const append = /** @param {Buffer|string} chunk */ /** @param {Buffer|string} chunk */ chunk => {
|
|
304
389
|
const text = chunk.toString();
|
|
305
390
|
output += text;
|
|
306
|
-
if (!
|
|
391
|
+
if (!shouldCapture)
|
|
307
392
|
return;
|
|
308
393
|
const safe = redactor.push(text);
|
|
309
394
|
if (safe && !this.reporter.writeCommandOutput(safe)) {
|
|
@@ -386,10 +471,18 @@ export function shellQuote(value) {
|
|
|
386
471
|
* @returns {string}
|
|
387
472
|
*/
|
|
388
473
|
export function shellEnvKey(key) {
|
|
389
|
-
const text =
|
|
474
|
+
const text = shellEnvName(key);
|
|
390
475
|
if (isSecretKey(text))
|
|
391
476
|
throw new Error(`Secret-like environment variable cannot be passed through ssh command argv: ${text}`);
|
|
392
|
-
|
|
477
|
+
return text;
|
|
478
|
+
}
|
|
479
|
+
/**
|
|
480
|
+
* @param {unknown} key
|
|
481
|
+
* @returns {string}
|
|
482
|
+
*/
|
|
483
|
+
export function shellEnvName(key) {
|
|
484
|
+
const text = String(key);
|
|
485
|
+
if (isValidEnvironmentName(text))
|
|
393
486
|
return text;
|
|
394
487
|
throw new Error(`Invalid environment variable name for ssh command: ${text}`);
|
|
395
488
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ssh-transport.js","sourceRoot":"","sources":["../../../src/transports/ssh-transport.js"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ssh-transport.js","sourceRoot":"","sources":["../../../src/transports/ssh-transport.js"],"names":[],"mappings":"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"}
|
package/build/src/types.d.ts
CHANGED
|
@@ -35,6 +35,13 @@ export type TaskEntry = {
|
|
|
35
35
|
optional?: boolean | undefined;
|
|
36
36
|
onlyIfChanged?: string[] | undefined;
|
|
37
37
|
};
|
|
38
|
+
export type OperationalTaskEntry = {
|
|
39
|
+
name: string;
|
|
40
|
+
command: string;
|
|
41
|
+
cwd?: string | undefined;
|
|
42
|
+
env?: Record<string, string> | undefined;
|
|
43
|
+
forwardEnv?: string[] | undefined;
|
|
44
|
+
};
|
|
38
45
|
export type TaskResult = {
|
|
39
46
|
name: string;
|
|
40
47
|
command: string;
|
|
@@ -43,6 +50,13 @@ export type TaskResult = {
|
|
|
43
50
|
error?: string | undefined;
|
|
44
51
|
skipReason?: string | undefined;
|
|
45
52
|
};
|
|
53
|
+
export type OperationalTaskReport = {
|
|
54
|
+
application: string;
|
|
55
|
+
stage: string;
|
|
56
|
+
task: string;
|
|
57
|
+
releaseId: string;
|
|
58
|
+
status: "passed";
|
|
59
|
+
};
|
|
46
60
|
export type StageConfig = {
|
|
47
61
|
application: string;
|
|
48
62
|
stageName: string;
|
|
@@ -62,6 +76,7 @@ export type StageConfig = {
|
|
|
62
76
|
linkedFiles: LinkedEntry[];
|
|
63
77
|
linkedDirs: LinkedEntry[];
|
|
64
78
|
tasks: Record<string, TaskEntry[]>;
|
|
79
|
+
operationalTasks: Record<string, OperationalTaskEntry[]>;
|
|
65
80
|
hooks: Record<string, TaskEntry[]>;
|
|
66
81
|
healthChecks: HealthCheckEntry[];
|
|
67
82
|
runtime: RuntimeConfig;
|
|
@@ -181,6 +196,7 @@ export type ReleaseInfo = {
|
|
|
181
196
|
rampwayVersion: string;
|
|
182
197
|
};
|
|
183
198
|
export type LockInfo = {
|
|
199
|
+
id: string;
|
|
184
200
|
owner: string;
|
|
185
201
|
host: string;
|
|
186
202
|
pid: number;
|
|
@@ -190,6 +206,7 @@ export type CommandOptions = {
|
|
|
190
206
|
config?: string | undefined;
|
|
191
207
|
source?: string | undefined;
|
|
192
208
|
revision?: string | undefined;
|
|
209
|
+
task?: string | undefined;
|
|
193
210
|
branch?: string | undefined;
|
|
194
211
|
yes?: boolean | undefined;
|
|
195
212
|
dryRun?: boolean | undefined;
|
|
@@ -214,12 +231,15 @@ export type Transport = {
|
|
|
214
231
|
rm: (targetPath: string) => Promise<void>;
|
|
215
232
|
rename: (from: string, to: string) => Promise<void>;
|
|
216
233
|
writeFile: (filePath: string, content: string) => Promise<void>;
|
|
234
|
+
writeFileExclusive: (filePath: string, content: string) => Promise<boolean>;
|
|
235
|
+
removeFileIfContent: (filePath: string, expectedContent: string) => Promise<boolean>;
|
|
217
236
|
readFile: (filePath: string) => Promise<string>;
|
|
218
237
|
list: (targetPath: string) => Promise<string[]>;
|
|
219
238
|
copyDir: (from: string, to: string) => Promise<void>;
|
|
220
239
|
run: (command: string, opts?: {
|
|
221
240
|
cwd?: string;
|
|
222
241
|
env?: Record<string, string>;
|
|
242
|
+
secretEnv?: Record<string, string>;
|
|
223
243
|
}) => Promise<{
|
|
224
244
|
code: number;
|
|
225
245
|
output: string;
|
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;;;;;;;;;UAab,MAAM;cACN,OAAO;;;;;;;;UAgBP,MAAM;;;;;;;;;;;;aAgBN,MAAM;;;;;;;UAWN,MAAM;aACN,MAAM;;YAEN,QAAQ,GAAC,QAAQ,GAAC,SAAS;;;;;iBAS3B,MAAM;eACN,MAAM;;YAEN,MAAM;;cAEN,MAAM;cACN,YAAY,GAAC,YAAY,GAAC,gBAAgB;eAC1C,eAAe;;cACF,MAAM;eAAS,MAAM;eAAS,MAAM;gBAAU,MAAM,EAAE;;kBACnE,MAAM;iBACN,WAAW,EAAE;gBACb,WAAW,EAAE;WACb,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.js"],"names":[],"mappings":"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"}
|
package/docs/config-reference.md
CHANGED
|
@@ -8,6 +8,21 @@
|
|
|
8
8
|
|-------|------|----------|-------------|
|
|
9
9
|
| `application` | string | yes | Name of the application. Used in deploy metadata and reports. |
|
|
10
10
|
| `stages` | object | yes | Map of stage names to stage configs. |
|
|
11
|
+
| `deployLog` | object \| boolean | no | Per-deploy log settings, or a boolean to enable/disable with defaults. See Deploy log below. |
|
|
12
|
+
|
|
13
|
+
### Deploy log
|
|
14
|
+
|
|
15
|
+
Every `rampway <stage> deploy` writes a full transcript of its lifecycle steps and streamed command output (already redacted) to a timestamped file on the machine running the deploy — the kind of per-deploy log Capistrano keeps built in. The path is printed at the start of the run and in the final summary. Dry runs are not logged.
|
|
16
|
+
|
|
17
|
+
| Field | Type | Required | Default | Description |
|
|
18
|
+
|-------|------|----------|---------|-------------|
|
|
19
|
+
| `enabled` | boolean | no | `true` | Set to `false` (or set `deployLog: false`) to disable per-deploy logging. |
|
|
20
|
+
| `dir` | string | no | `"log/deploys"` | Log directory. Relative paths resolve against the deploy source; absolute paths are used as-is. |
|
|
21
|
+
| `keep` | number | no | `20` | Number of most-recent deploy logs to retain; older ones are pruned. |
|
|
22
|
+
|
|
23
|
+
Log files are named `<UTC-timestamp>-<stage>.log` (e.g. `20260722162000-production.log`). Only files matching that pattern are pruned, so unrelated files in the directory are never removed.
|
|
24
|
+
|
|
25
|
+
Malformed `deployLog` config fails loudly: `enabled` must be a boolean, `dir` a non-empty string, and `keep` a positive integer.
|
|
11
26
|
|
|
12
27
|
## Stage fields
|
|
13
28
|
|
|
@@ -23,6 +38,7 @@ Each stage under `stages` supports:
|
|
|
23
38
|
| `linkedFiles` | array | no | `[]` | Files symlinked from `shared/` into each release. See Linked files below. |
|
|
24
39
|
| `linkedDirs` | array | no | `[]` | Directories symlinked from `shared/` into each release. |
|
|
25
40
|
| `tasks` | object | no | `{}` | Named task groups executed in order during deploy. See Tasks below. |
|
|
41
|
+
| `operationalTasks` | object | no | `{}` | Explicit standalone tasks that run against the active release. See Operational tasks below. |
|
|
26
42
|
| `hooks` | object | no | `{}` | Lifecycle-phase hooks executed at specific points in the deploy pipeline. See Hooks below. |
|
|
27
43
|
| `runtime` | object | no | `{type: "none"}` | Runtime adapter config. See Runtime below. |
|
|
28
44
|
| `healthChecks` | array | no | `[]` | Checks run after tasks and before publish. See Health checks below. |
|
|
@@ -183,6 +199,47 @@ rampway production tasks --json
|
|
|
183
199
|
|
|
184
200
|
Each entry shows its command plus any `cwd`, `env`, `optional`, and `onlyIfChanged` metadata. Secret-like env values and `KEY=value` assignments in commands are redacted in both the human and `--json` output.
|
|
185
201
|
|
|
202
|
+
## Operational tasks
|
|
203
|
+
|
|
204
|
+
`operationalTasks` is a strict namespace for reusable standalone operations. It is separate from deploy lifecycle `tasks`: an operational task runs only when its exact configured name is invoked.
|
|
205
|
+
|
|
206
|
+
```js
|
|
207
|
+
operationalTasks: {
|
|
208
|
+
"cache:warm": [
|
|
209
|
+
{
|
|
210
|
+
command: "npm run cache:warm",
|
|
211
|
+
cwd: "backend",
|
|
212
|
+
env: {NODE_ENV: "production"},
|
|
213
|
+
forwardEnv: ["CACHE_WARM_CREDENTIAL"]
|
|
214
|
+
}
|
|
215
|
+
]
|
|
216
|
+
}
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
Each value is a command string, one entry object, or a non-empty ordered array of strings and entry objects. Entry objects accept only:
|
|
220
|
+
|
|
221
|
+
- `command` — required non-empty shell command from trusted configuration.
|
|
222
|
+
- `cwd` — optional non-empty release-relative directory; absolute and escaping paths are rejected.
|
|
223
|
+
- `env` — optional string-valued environment literals with safe shell names. Secret-like keys are rejected; use `forwardEnv`.
|
|
224
|
+
- `forwardEnv` — optional unique allowlist of safe environment names. Every named value must exist in Rampway's invocation environment and is always treated as sensitive.
|
|
225
|
+
|
|
226
|
+
Task names are 1–128 characters and match `^[A-Za-z0-9][A-Za-z0-9:_-]*$`. Selection is an exact name lookup; command text and arbitrary trailing arguments cannot come from the CLI.
|
|
227
|
+
|
|
228
|
+
```bash
|
|
229
|
+
CACHE_WARM_CREDENTIAL=... rampway production task cache:warm
|
|
230
|
+
CACHE_WARM_CREDENTIAL=... rampway production task cache:warm --json
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
Rampway resolves all forwarded values before transport work, acquires the same exclusive lock used by deploy and rollback, then strictly resolves `current` to one existing direct child of `releases/`. Every entry is required and runs in order against that immutable release path. Missing configuration, forwarded values, lock ownership, active release, command failures, and transport failures all fail closed. There is no task `--force`.
|
|
234
|
+
|
|
235
|
+
For SSH, forwarded values are sent to a fixed remote shell through stdin rather than SSH argv. Known values are redacted from streamed output, returned output, and errors even when echoed without their variable name or split across chunks. Human output identifies the application, stage, task, and release. JSON mode emits only:
|
|
236
|
+
|
|
237
|
+
```json
|
|
238
|
+
{"application":"demo","stage":"production","task":"cache:warm","releaseId":"20260728120000","status":"passed"}
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
Standalone task runs are not appended to the deployment report. The plural `rampway <stage> tasks` command remains a read-only inventory of deploy task groups.
|
|
242
|
+
|
|
186
243
|
## Hooks
|
|
187
244
|
|
|
188
245
|
Hooks are lifecycle-phase callbacks that run commands at specific points during the deploy pipeline, outside the fixed task-group slot. Each hook phase accepts an array of task entries (strings or objects, same format as tasks).
|
|
@@ -17,6 +17,7 @@ Rampway is a JS-native alternative to Capistrano for Node projects. This guide m
|
|
|
17
17
|
| `SSHKit` | `transport: {type: "ssh"}` |
|
|
18
18
|
| `after/before` hooks | `tasks` run in config order, or use lifecycle `hooks` for phase-specific callbacks |
|
|
19
19
|
| `deploy:starting` … `deploy:finished` | task groups + runtime deploy |
|
|
20
|
+
| Explicit custom task against `current` | `operationalTasks` + `rampway production task <exact-name>` |
|
|
20
21
|
| `cap production deploy` | `rampway production deploy` |
|
|
21
22
|
| `cap -T` / `cap production -T` | `rampway production tasks` |
|
|
22
23
|
| `cap production deploy:rollback` | `rampway production rollback` |
|
|
@@ -106,7 +107,27 @@ tasks: {
|
|
|
106
107
|
}
|
|
107
108
|
```
|
|
108
109
|
|
|
109
|
-
### 5. Convert
|
|
110
|
+
### 5. Convert standalone operational tasks
|
|
111
|
+
|
|
112
|
+
Keep operations that were invoked explicitly in Capistrano out of deploy task groups. Declare each one under the strict `operationalTasks` namespace and invoke its exact configured name:
|
|
113
|
+
|
|
114
|
+
```js
|
|
115
|
+
operationalTasks: {
|
|
116
|
+
"cache:warm": {
|
|
117
|
+
command: "npm run cache:warm",
|
|
118
|
+
cwd: "backend",
|
|
119
|
+
forwardEnv: ["CACHE_WARM_CREDENTIAL"]
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
```bash
|
|
125
|
+
CACHE_WARM_CREDENTIAL=... rampway production task cache:warm
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
Rampway owns the configured transport, shared deploy lock, active-release resolution, and secret-value redaction. Replace the former caller's direct SSH with the Rampway invocation; do not retain an SSH fallback. Operational tasks are explicit and never run as part of every deploy.
|
|
129
|
+
|
|
130
|
+
### 6. Convert process management
|
|
110
131
|
|
|
111
132
|
Capistrano relies on SSH-based process management (puma, sidekiq, etc.) or custom tasks:
|
|
112
133
|
|
|
@@ -136,7 +157,7 @@ Rollbridge handles zero-downtime restarts, health checks, and log access. Rampwa
|
|
|
136
157
|
|
|
137
158
|
For simple setups without a process manager, use `runtime: {type: "none"}` and handle process restarts yourself via task commands.
|
|
138
159
|
|
|
139
|
-
###
|
|
160
|
+
### 7. Run the first deploy
|
|
140
161
|
|
|
141
162
|
```bash
|
|
142
163
|
# Validate
|
|
@@ -149,7 +170,7 @@ rampway production plan
|
|
|
149
170
|
rampway production deploy
|
|
150
171
|
```
|
|
151
172
|
|
|
152
|
-
###
|
|
173
|
+
### 8. Verify and cleanup
|
|
153
174
|
|
|
154
175
|
```bash
|
|
155
176
|
rampway production status
|
|
@@ -162,6 +183,7 @@ After verifying the first deploy works, remove your old Capistrano config files.
|
|
|
162
183
|
|
|
163
184
|
- **No Ruby dependency.** Rampway runs on Node.js, matching your JS/TS stack.
|
|
164
185
|
- **Task groups replace hooks.** Order task groups instead of registering `after`/`before` callbacks. For Capistrano-style lifecycle callbacks, use `hooks` with named phases like `before_publish` and `after_cleanup`.
|
|
186
|
+
- **Operational tasks replace explicitly invoked remote tasks.** Configure an exact name under `operationalTasks`; Rampway executes it against the locked active release and securely forwards allowlisted caller environment values.
|
|
165
187
|
- **Runtime adapters replace process management tasks.** Rollbridge or a custom adapter handles zero-downtime handoff.
|
|
166
188
|
- **ESM config.** `rampway.config.mjs` uses ES module syntax, not Ruby DSL.
|
|
167
189
|
- **Health checks are built in.** Add `healthChecks` to verify deploy readiness before publishing.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "rampway",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "JS-native Capistrano-style release-directory deployments with Rollbridge integration.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"private": false,
|
|
@@ -78,7 +78,8 @@
|
|
|
78
78
|
"release:major": "npm version major && git push --follow-tags"
|
|
79
79
|
},
|
|
80
80
|
"dependencies": {
|
|
81
|
-
"@types/node": "^26.1.1"
|
|
81
|
+
"@types/node": "^26.1.1",
|
|
82
|
+
"typanic": "^1.0.9"
|
|
82
83
|
},
|
|
83
84
|
"devDependencies": {
|
|
84
85
|
"eslint": "^9.39.2",
|