rampway 0.2.2 → 0.2.3
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 +39 -19
- package/build/src/cli.d.ts +18 -1
- package/build/src/cli.d.ts.map +1 -1
- package/build/src/cli.js +46 -39
- package/build/src/cli.js.map +1 -1
- package/build/src/commands/context.d.ts +4 -1
- package/build/src/commands/context.d.ts.map +1 -1
- package/build/src/commands/context.js +4 -2
- package/build/src/commands/context.js.map +1 -1
- package/build/src/commands/deploy.d.ts.map +1 -1
- package/build/src/commands/deploy.js +25 -5
- package/build/src/commands/deploy.js.map +1 -1
- package/build/src/core/deploy-runner.d.ts +1 -1
- package/build/src/core/deploy-runner.d.ts.map +1 -1
- package/build/src/core/deploy-runner.js +19 -7
- package/build/src/core/deploy-runner.js.map +1 -1
- package/build/src/core/redaction.d.ts +46 -0
- package/build/src/core/redaction.d.ts.map +1 -1
- package/build/src/core/redaction.js +106 -0
- package/build/src/core/redaction.js.map +1 -1
- package/build/src/core/reporter.d.ts +68 -0
- package/build/src/core/reporter.d.ts.map +1 -0
- package/build/src/core/reporter.js +76 -0
- package/build/src/core/reporter.js.map +1 -0
- package/build/src/core/task-runner.d.ts +7 -4
- package/build/src/core/task-runner.d.ts.map +1 -1
- package/build/src/core/task-runner.js +12 -7
- package/build/src/core/task-runner.js.map +1 -1
- package/build/src/transports/local-transport.d.ts +8 -0
- package/build/src/transports/local-transport.d.ts.map +1 -1
- package/build/src/transports/local-transport.js +38 -4
- package/build/src/transports/local-transport.js.map +1 -1
- package/build/src/transports/ssh-transport.d.ts +7 -3
- package/build/src/transports/ssh-transport.d.ts.map +1 -1
- package/build/src/transports/ssh-transport.js +59 -25
- package/build/src/transports/ssh-transport.js.map +1 -1
- package/build/src/types.d.ts +1 -0
- package/build/src/types.d.ts.map +1 -1
- package/build/src/types.js +1 -0
- package/build/src/types.js.map +1 -1
- package/docs/migration-from-capistrano.md +7 -7
- package/package.json +4 -2
package/README.md
CHANGED
|
@@ -32,35 +32,55 @@ Migrating from Capistrano: [docs/migration-from-capistrano.md](docs/migration-fr
|
|
|
32
32
|
|
|
33
33
|
```bash
|
|
34
34
|
rampway init
|
|
35
|
-
rampway validate
|
|
36
|
-
rampway plan
|
|
37
|
-
rampway plan
|
|
38
|
-
rampway deploy
|
|
39
|
-
rampway
|
|
40
|
-
rampway
|
|
41
|
-
rampway
|
|
42
|
-
rampway
|
|
43
|
-
rampway
|
|
44
|
-
rampway
|
|
35
|
+
rampway production validate
|
|
36
|
+
rampway production plan
|
|
37
|
+
rampway production plan --json
|
|
38
|
+
rampway production deploy
|
|
39
|
+
rampway production deploy <revision>
|
|
40
|
+
rampway production status
|
|
41
|
+
rampway production releases
|
|
42
|
+
rampway production releases --json
|
|
43
|
+
rampway production rollback
|
|
44
|
+
rampway production doctor
|
|
45
|
+
rampway production doctor --json
|
|
45
46
|
|
|
46
47
|
# Rollbridge runtime helpers for the current release
|
|
47
|
-
rampway rollbridge-validate
|
|
48
|
-
rampway rollbridge-status
|
|
49
|
-
rampway rollbridge-logs
|
|
50
|
-
rampway rollbridge-recover
|
|
48
|
+
rampway production rollbridge-validate
|
|
49
|
+
rampway production rollbridge-status
|
|
50
|
+
rampway production rollbridge-logs
|
|
51
|
+
rampway production rollbridge-recover --yes
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
### Live deploy output and automation
|
|
55
|
+
|
|
56
|
+
A normal deploy reports real lifecycle steps and remote command output as it arrives, then ends with a concise result:
|
|
57
|
+
|
|
58
|
+
```text
|
|
59
|
+
$ rampway production deploy
|
|
60
|
+
→ Preparing release directory
|
|
61
|
+
→ Installing dependencies
|
|
62
|
+
$ npm ci --omit=dev
|
|
63
|
+
… command output …
|
|
64
|
+
✓ Deployed production revision 4f31c21 to /home/deploy/app/releases/20260715094500
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
Use `--json` when another program consumes the result. It suppresses lifecycle and command streaming and writes exactly one final JSON report:
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
rampway production deploy --json > deploy-report.json
|
|
51
71
|
```
|
|
52
72
|
|
|
53
73
|
For local development without installing the package globally:
|
|
54
74
|
|
|
55
75
|
```bash
|
|
56
76
|
node src/cli.js init
|
|
57
|
-
node src/cli.js validate --config examples/local/rampway.config.mjs
|
|
58
|
-
node src/cli.js plan --config examples/local/rampway.config.mjs
|
|
59
|
-
node src/cli.js deploy --config examples/local/rampway.config.mjs
|
|
77
|
+
node src/cli.js local validate --config examples/local/rampway.config.mjs
|
|
78
|
+
node src/cli.js local plan --config examples/local/rampway.config.mjs
|
|
79
|
+
node src/cli.js local deploy --config examples/local/rampway.config.mjs
|
|
60
80
|
|
|
61
81
|
# Monorepo example with backend + frontend stages
|
|
62
|
-
node src/cli.js validate --config examples/monorepo/rampway.config.mjs
|
|
63
|
-
node src/cli.js plan --config examples/monorepo/rampway.config.mjs
|
|
82
|
+
node src/cli.js local validate --config examples/monorepo/rampway.config.mjs
|
|
83
|
+
node src/cli.js local plan --config examples/monorepo/rampway.config.mjs
|
|
64
84
|
```
|
|
65
85
|
|
|
66
86
|
## Config example
|
package/build/src/cli.d.ts
CHANGED
|
@@ -1,3 +1,20 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
|
|
2
|
+
/**
|
|
3
|
+
* @param {string[]} argv
|
|
4
|
+
* @returns {Promise<void>}
|
|
5
|
+
*/
|
|
6
|
+
export function main(argv: string[]): Promise<void>;
|
|
7
|
+
/**
|
|
8
|
+
* Resolve raw argv using Capistrano-style stage-first grammar:
|
|
9
|
+
* `rampway <environment> <command> [revision]`. A stageless command such as
|
|
10
|
+
* `rampway init` is the only command-only form.
|
|
11
|
+
*
|
|
12
|
+
* @param {string[]} argv
|
|
13
|
+
* @returns {{command: string|undefined, stageName: string|undefined, options: import('#types').CommandOptions}}
|
|
14
|
+
*/
|
|
15
|
+
export function resolveInvocation(argv: string[]): {
|
|
16
|
+
command: string | undefined;
|
|
17
|
+
stageName: string | undefined;
|
|
18
|
+
options: import("#types").CommandOptions;
|
|
19
|
+
};
|
|
3
20
|
//# sourceMappingURL=cli.d.ts.map
|
package/build/src/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/cli.js"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/cli.js"],"names":[],"mappings":";AAyCA;;;GAGG;AACH,2BAHW,MAAM,EAAE,GACN,OAAO,CAAC,IAAI,CAAC,CAUzB;AAED;;;;;;;GAOG;AACH,wCAHW,MAAM,EAAE,GACN;IAAC,OAAO,EAAE,MAAM,GAAC,SAAS,CAAC;IAAC,SAAS,EAAE,MAAM,GAAC,SAAS,CAAC;IAAC,OAAO,EAAE,OAAO,QAAQ,EAAE,cAAc,CAAA;CAAC,CAgB9G"}
|
package/build/src/cli.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import
|
|
3
|
-
import
|
|
2
|
+
import { realpathSync } from "node:fs";
|
|
3
|
+
import { pathToFileURL } from "node:url";
|
|
4
4
|
import { validateCommand } from "./commands/validate.js";
|
|
5
5
|
import { planCommand } from "./commands/plan.js";
|
|
6
6
|
import { doctorCommand } from "./commands/doctor.js";
|
|
@@ -24,61 +24,64 @@ const COMMANDS = {
|
|
|
24
24
|
"rollbridge-recover": rollbridgeRecoverCommand,
|
|
25
25
|
doctor: doctorCommand
|
|
26
26
|
};
|
|
27
|
+
/**
|
|
28
|
+
* Commands invoked without an environment/stage, e.g. `rampway init`.
|
|
29
|
+
*
|
|
30
|
+
* @type {Set<string>}
|
|
31
|
+
*/
|
|
32
|
+
const STAGELESS_COMMANDS = new Set(["init"]);
|
|
33
|
+
/** @type {string[]} */
|
|
34
|
+
const BOOLEAN_FLAGS = ["yes", "dry-run", "force", "allow-dirty", "json"];
|
|
35
|
+
const USAGE = "Usage: rampway <environment> <command> [revision] [--config path] (for example: rampway production deploy) OR rampway init";
|
|
27
36
|
/**
|
|
28
37
|
* @param {string[]} argv
|
|
29
38
|
* @returns {Promise<void>}
|
|
30
39
|
*/
|
|
31
40
|
async function main(argv) {
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
if (command && stageName && !COMMANDS[command] && COMMANDS[stageName] && stageFileExists(command, options.config)) {
|
|
36
|
-
[command, stageName] = [stageName, command];
|
|
37
|
-
}
|
|
41
|
+
const { command, stageName, options } = resolveInvocation(argv);
|
|
42
|
+
if (!command)
|
|
43
|
+
throw new Error(USAGE);
|
|
38
44
|
if (!COMMANDS[command])
|
|
39
45
|
throw new Error(`Unknown command '${command}'. Supported: ${Object.keys(COMMANDS).join(", ")}`);
|
|
40
|
-
if (!stageName && command
|
|
41
|
-
throw new Error(`Usage: rampway <
|
|
46
|
+
if (!stageName && !STAGELESS_COMMANDS.has(command))
|
|
47
|
+
throw new Error(`Usage: rampway <environment> ${command} [--config path] (for example: rampway production ${command})`);
|
|
42
48
|
await COMMANDS[command]({ stageName, options });
|
|
43
49
|
}
|
|
44
50
|
/**
|
|
45
|
-
*
|
|
46
|
-
*
|
|
47
|
-
*
|
|
51
|
+
* Resolve raw argv using Capistrano-style stage-first grammar:
|
|
52
|
+
* `rampway <environment> <command> [revision]`. A stageless command such as
|
|
53
|
+
* `rampway init` is the only command-only form.
|
|
54
|
+
*
|
|
55
|
+
* @param {string[]} argv
|
|
56
|
+
* @returns {{command: string|undefined, stageName: string|undefined, options: import('#types').CommandOptions}}
|
|
48
57
|
*/
|
|
49
|
-
function
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
let dir = process.cwd();
|
|
55
|
-
for (let i = 0; i < 5; i++) {
|
|
56
|
-
const candidate = path.join(dir, "deploy", "environments", `${stageName}.js`);
|
|
57
|
-
try {
|
|
58
|
-
if (fs.statSync(candidate).isFile())
|
|
59
|
-
return true;
|
|
60
|
-
}
|
|
61
|
-
catch { /* continue */ }
|
|
62
|
-
const parent = path.dirname(dir);
|
|
63
|
-
if (parent === dir)
|
|
64
|
-
break;
|
|
65
|
-
dir = parent;
|
|
58
|
+
function resolveInvocation(argv) {
|
|
59
|
+
const { positional, options } = parseArgs(argv);
|
|
60
|
+
// Command-only form: `rampway init`.
|
|
61
|
+
if (STAGELESS_COMMANDS.has(positional[0])) {
|
|
62
|
+
return { command: positional[0], stageName: undefined, options };
|
|
66
63
|
}
|
|
67
|
-
|
|
64
|
+
// Stage-first form: `rampway <environment> <command> [revision]`.
|
|
65
|
+
const [stageName, command, revision] = positional;
|
|
66
|
+
// An explicit positional revision overrides every other source; otherwise the
|
|
67
|
+
// precedence in deployCommand (--revision, --branch, configured values) stands.
|
|
68
|
+
if (revision !== undefined)
|
|
69
|
+
options.revision = revision;
|
|
70
|
+
return { command, stageName, options };
|
|
68
71
|
}
|
|
69
72
|
/**
|
|
70
73
|
* @param {string[]} argv
|
|
71
|
-
* @returns {{
|
|
74
|
+
* @returns {{positional: string[], options: import('#types').CommandOptions}}
|
|
72
75
|
*/
|
|
73
76
|
function parseArgs(argv) {
|
|
74
77
|
const positional = [];
|
|
75
|
-
/** @type {Record<string, string|boolean>} */
|
|
78
|
+
/** @type {Record<string, string|boolean|undefined>} */
|
|
76
79
|
const options = {};
|
|
77
80
|
for (let index = 0; index < argv.length; index += 1) {
|
|
78
81
|
const arg = argv[index];
|
|
79
82
|
if (arg.startsWith("--")) {
|
|
80
83
|
const name = arg.slice(2);
|
|
81
|
-
if (
|
|
84
|
+
if (BOOLEAN_FLAGS.includes(name))
|
|
82
85
|
options[toCamel(name)] = true;
|
|
83
86
|
else {
|
|
84
87
|
index += 1;
|
|
@@ -88,7 +91,7 @@ function parseArgs(argv) {
|
|
|
88
91
|
else
|
|
89
92
|
positional.push(arg);
|
|
90
93
|
}
|
|
91
|
-
return {
|
|
94
|
+
return { positional, options: /** @type {import('#types').CommandOptions} */ (options) };
|
|
92
95
|
}
|
|
93
96
|
/**
|
|
94
97
|
* @param {string} name
|
|
@@ -97,8 +100,12 @@ function parseArgs(argv) {
|
|
|
97
100
|
function toCamel(name) {
|
|
98
101
|
return name.replace(/-([a-z])/g, (_, letter) => letter.toUpperCase());
|
|
99
102
|
}
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
process.
|
|
103
|
-
|
|
103
|
+
const invokedPath = process.argv[1] ? pathToFileURL(realpathSync(process.argv[1])).href : null;
|
|
104
|
+
if (invokedPath && import.meta.url === invokedPath) {
|
|
105
|
+
main(process.argv.slice(2)).catch(error => {
|
|
106
|
+
console.error(error.message);
|
|
107
|
+
process.exitCode = 1;
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
export { main, resolveInvocation };
|
|
104
111
|
//# sourceMappingURL=cli.js.map
|
package/build/src/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.js"],"names":[],"mappings":";AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.js"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @param {import('#types').CommandOptions} options
|
|
3
3
|
* @param {string} stageName
|
|
4
|
+
* @param {{reporter?: import('../core/reporter.js').Reporter}} [opts]
|
|
4
5
|
* @returns {Promise<{config: object, configPath: string, stage: import('#types').StageConfig, transport: import('#types').Transport}>}
|
|
5
6
|
*/
|
|
6
|
-
export function commandContext(options: import("#types").CommandOptions, stageName: string
|
|
7
|
+
export function commandContext(options: import("#types").CommandOptions, stageName: string, { reporter }?: {
|
|
8
|
+
reporter?: import("../core/reporter.js").Reporter;
|
|
9
|
+
}): Promise<{
|
|
7
10
|
config: object;
|
|
8
11
|
configPath: string;
|
|
9
12
|
stage: import("#types").StageConfig;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/commands/context.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/commands/context.js"],"names":[],"mappings":"AAMA;;;;;GAKG;AACH,wCALW,OAAO,QAAQ,EAAE,cAAc,aAC/B,MAAM,iBACN;IAAC,QAAQ,CAAC,EAAE,OAAO,qBAAqB,EAAE,QAAQ,CAAA;CAAC,GACjD,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,QAAQ,EAAE,WAAW,CAAC;IAAC,SAAS,EAAE,OAAO,QAAQ,EAAE,SAAS,CAAA;CAAC,CAAC,CAOrI"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
// @ts-check
|
|
1
2
|
import { loadConfig } from "../config/load-config.js";
|
|
2
3
|
import { validateConfig } from "../config/validate-config.js";
|
|
3
4
|
import { LocalTransport } from "../transports/local-transport.js";
|
|
@@ -5,12 +6,13 @@ import { SshTransport } from "../transports/ssh-transport.js";
|
|
|
5
6
|
/**
|
|
6
7
|
* @param {import('#types').CommandOptions} options
|
|
7
8
|
* @param {string} stageName
|
|
9
|
+
* @param {{reporter?: import('../core/reporter.js').Reporter}} [opts]
|
|
8
10
|
* @returns {Promise<{config: object, configPath: string, stage: import('#types').StageConfig, transport: import('#types').Transport}>}
|
|
9
11
|
*/
|
|
10
|
-
export async function commandContext(options, stageName) {
|
|
12
|
+
export async function commandContext(options, stageName, { reporter } = {}) {
|
|
11
13
|
const { config, configPath } = await loadConfig(options.config, stageName);
|
|
12
14
|
const stage = validateConfig(/** @type {Record<string, unknown>} */ (config), stageName);
|
|
13
|
-
const transport = stage.transport.type === "ssh" ? SshTransport.fromStage(stage) : new LocalTransport();
|
|
15
|
+
const transport = stage.transport.type === "ssh" ? SshTransport.fromStage(stage, reporter) : new LocalTransport({ reporter });
|
|
14
16
|
return { config, configPath, stage, transport };
|
|
15
17
|
}
|
|
16
18
|
//# sourceMappingURL=context.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/commands/context.js"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,0BAA0B,CAAA;AACnD,OAAO,EAAC,cAAc,EAAC,MAAM,8BAA8B,CAAA;AAC3D,OAAO,EAAC,cAAc,EAAC,MAAM,kCAAkC,CAAA;AAC/D,OAAO,EAAC,YAAY,EAAC,MAAM,gCAAgC,CAAA;AAE3D
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/commands/context.js"],"names":[],"mappings":"AAAA,YAAY;AACZ,OAAO,EAAC,UAAU,EAAC,MAAM,0BAA0B,CAAA;AACnD,OAAO,EAAC,cAAc,EAAC,MAAM,8BAA8B,CAAA;AAC3D,OAAO,EAAC,cAAc,EAAC,MAAM,kCAAkC,CAAA;AAC/D,OAAO,EAAC,YAAY,EAAC,MAAM,gCAAgC,CAAA;AAE3D;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,OAAO,EAAE,SAAS,EAAE,EAAC,QAAQ,EAAC,GAAG,EAAE;IACtE,MAAM,EAAC,MAAM,EAAE,UAAU,EAAC,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;IACxE,MAAM,KAAK,GAAG,cAAc,CAAC,sCAAsC,CAAC,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC,CAAA;IACxF,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,cAAc,CAAC,EAAC,QAAQ,EAAC,CAAC,CAAA;IAC3H,OAAO,EAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,EAAC,CAAA;AAC/C,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../../src/commands/deploy.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../../src/commands/deploy.js"],"names":[],"mappings":"AAKA;;;GAGG;AACH,sEAHW,OAAO,QAAQ,EAAE,WAAW,GAC1B,OAAO,CAAC,IAAI,CAAC,CAazB"}
|
|
@@ -1,14 +1,34 @@
|
|
|
1
|
+
// @ts-check
|
|
1
2
|
import { commandContext as defaultCommandContext } from "./context.js";
|
|
2
3
|
import { deploy } from "../core/deploy-runner.js";
|
|
4
|
+
import { humanReporter, jsonReporter } from "../core/reporter.js";
|
|
3
5
|
/**
|
|
4
6
|
* @param {import('#types').CommandArgs} args
|
|
5
7
|
* @returns {Promise<void>}
|
|
6
8
|
*/
|
|
7
9
|
export async function deployCommand({ stageName, options, commandContext = defaultCommandContext }) {
|
|
8
|
-
const
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
const reporter = options.json ? jsonReporter() : humanReporter();
|
|
11
|
+
const { stage, transport } = await commandContext(options, stageName, { reporter });
|
|
12
|
+
const report = await deploy({ transport, stage, sourcePath: options.source ?? process.cwd(), revision: options.revision ?? options.branch ?? stage.revision ?? stage.branch, branch: options.branch ?? stage.branch, dryRun: options.dryRun, force: options.force, reporter });
|
|
13
|
+
if (options.json || "plan" in report) {
|
|
14
|
+
console.log(JSON.stringify(report, null, 2));
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
printSummary(/** @type {import('#types').DeployReport} */ (report));
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Prints a concise Capistrano-style final summary of a successful deploy.
|
|
21
|
+
*
|
|
22
|
+
* @param {import('#types').DeployReport} report
|
|
23
|
+
* @returns {void}
|
|
24
|
+
*/
|
|
25
|
+
function printSummary(report) {
|
|
26
|
+
const seconds = report.durationMs === undefined ? undefined : (report.durationMs / 1000).toFixed(1);
|
|
27
|
+
console.log(`✔ Deployed ${report.application}/${report.stage} revision ${report.revision} as release ${report.releaseId}${seconds === undefined ? "" : ` in ${seconds}s`}`);
|
|
28
|
+
if (report.previousRelease)
|
|
29
|
+
console.log(` Previous release: ${report.previousRelease}`);
|
|
30
|
+
console.log(` Health checks: ${report.healthChecks ?? "n/a"}`);
|
|
31
|
+
const removed = report.cleanupRemoved ?? [];
|
|
32
|
+
console.log(` Cleaned up: ${removed.length} old release${removed.length === 1 ? "" : "s"}`);
|
|
13
33
|
}
|
|
14
34
|
//# sourceMappingURL=deploy.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deploy.js","sourceRoot":"","sources":["../../../src/commands/deploy.js"],"names":[],"mappings":"AAAA,OAAO,EAAC,cAAc,IAAI,qBAAqB,EAAC,MAAM,cAAc,CAAA;AACpE,OAAO,EAAC,MAAM,EAAC,MAAM,0BAA0B,CAAA;AAE/
|
|
1
|
+
{"version":3,"file":"deploy.js","sourceRoot":"","sources":["../../../src/commands/deploy.js"],"names":[],"mappings":"AAAA,YAAY;AACZ,OAAO,EAAC,cAAc,IAAI,qBAAqB,EAAC,MAAM,cAAc,CAAA;AACpE,OAAO,EAAC,MAAM,EAAC,MAAM,0BAA0B,CAAA;AAC/C,OAAO,EAAC,aAAa,EAAE,YAAY,EAAC,MAAM,qBAAqB,CAAA;AAE/D;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,EAAC,SAAS,EAAE,OAAO,EAAE,cAAc,GAAG,qBAAqB,EAAC;IAC9F,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,aAAa,EAAE,CAAA;IAChE,MAAM,EAAC,KAAK,EAAE,SAAS,EAAC,GAAG,MAAM,cAAc,CAAC,OAAO,EAAE,SAAS,EAAE,EAAC,QAAQ,EAAC,CAAC,CAAA;IAC/E,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,EAAC,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,MAAM,IAAI,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,QAAQ,EAAC,CAAC,CAAA;IAE5Q,IAAI,OAAO,CAAC,IAAI,IAAI,MAAM,IAAI,MAAM,EAAE,CAAC;QACrC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;QAC5C,OAAM;IACR,CAAC;IAED,YAAY,CAAC,4CAA4C,CAAC,CAAC,MAAM,CAAC,CAAC,CAAA;AACrE,CAAC;AAED;;;;;GAKG;AACH,SAAS,YAAY,CAAC,MAAM;IAC1B,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;IACnG,OAAO,CAAC,GAAG,CAAC,cAAc,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,KAAK,aAAa,MAAM,CAAC,QAAQ,eAAe,MAAM,CAAC,SAAS,GAAG,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,OAAO,GAAG,EAAE,CAAC,CAAA;IAC3K,IAAI,MAAM,CAAC,eAAe;QAAE,OAAO,CAAC,GAAG,CAAC,uBAAuB,MAAM,CAAC,eAAe,EAAE,CAAC,CAAA;IACxF,OAAO,CAAC,GAAG,CAAC,oBAAoB,MAAM,CAAC,YAAY,IAAI,KAAK,EAAE,CAAC,CAAA;IAC/D,MAAM,OAAO,GAAG,MAAM,CAAC,cAAc,IAAI,EAAE,CAAA;IAC3C,OAAO,CAAC,GAAG,CAAC,iBAAiB,OAAO,CAAC,MAAM,eAAe,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAA;AAC9F,CAAC"}
|
|
@@ -20,7 +20,7 @@ export function createDeployPlanDetails(stage: import("#types").StageConfig, { r
|
|
|
20
20
|
* @param {import('#types').DeployOptions} opts
|
|
21
21
|
* @returns {Promise<import('#types').DeployReport|{plan: string[]}>}
|
|
22
22
|
*/
|
|
23
|
-
export function deploy({ transport, stage, sourcePath, revision, branch, dryRun, releaseId, force }: import("#types").DeployOptions): Promise<import("#types").DeployReport | {
|
|
23
|
+
export function deploy({ transport, stage, sourcePath, revision, branch, dryRun, releaseId, force, reporter }: import("#types").DeployOptions): Promise<import("#types").DeployReport | {
|
|
24
24
|
plan: string[];
|
|
25
25
|
}>;
|
|
26
26
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deploy-runner.d.ts","sourceRoot":"","sources":["../../../src/core/deploy-runner.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"deploy-runner.d.ts","sourceRoot":"","sources":["../../../src/core/deploy-runner.js"],"names":[],"mappings":"AAgBA;;;;GAIG;AACH,wCAJW,OAAO,QAAQ,EAAE,WAAW,4BAC5B;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAC,GACrC,MAAM,EAAE,CAIpB;AAED;;;;GAIG;AACH,+CAJW,OAAO,QAAQ,EAAE,WAAW,4BAC5B;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAC,GACrC,OAAO,QAAQ,EAAE,cAAc,EAAE,CAkB7C;AAaD;;;GAGG;AACH,+GAHW,OAAO,QAAQ,EAAE,aAAa,GAC5B,OAAO,CAAC,OAAO,QAAQ,EAAE,YAAY,GAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAA;CAAC,CAAC,CAqEnE;AAED;;;GAGG;AACH,mDAHW;IAAC,SAAS,EAAE,OAAO,QAAQ,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,OAAO,QAAQ,EAAE,WAAW,CAAC;IAAC,EAAE,CAAC,EAAE,MAAM,CAAA;CAAC,GACvF,OAAO,CAAC,OAAO,QAAQ,EAAE,cAAc,CAAC,CAkBpD;AAED;;;GAGG;AACH,6FAHW;IAAC,KAAK,EAAE,KAAK,CAAC;IAAC,SAAS,EAAE,OAAO,CAAC;IAAC,cAAc,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,OAAO,QAAQ,EAAE,WAAW,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAC,GAClH,MAAM,CAqBlB"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
|
+
// @ts-check
|
|
1
2
|
import path from "node:path";
|
|
2
3
|
import os from "node:os";
|
|
4
|
+
import { Reporter } from "./reporter.js";
|
|
3
5
|
import { releaseIdFromDate } from "./release-id.js";
|
|
4
6
|
import { deployPaths } from "./paths.js";
|
|
5
7
|
import { acquireLock, releaseLock } from "./locks.js";
|
|
@@ -56,7 +58,7 @@ function sourcePlanDetail(stage, revision) {
|
|
|
56
58
|
* @param {import('#types').DeployOptions} opts
|
|
57
59
|
* @returns {Promise<import('#types').DeployReport|{plan: string[]}>}
|
|
58
60
|
*/
|
|
59
|
-
export async function deploy({ transport, stage, sourcePath = process.cwd(), revision, branch = stage.branch, dryRun = false, releaseId = releaseIdFromDate(), force = false }) {
|
|
61
|
+
export async function deploy({ transport, stage, sourcePath = process.cwd(), revision, branch = stage.branch, dryRun = false, releaseId = releaseIdFromDate(), force = false, reporter = new Reporter({ lifecycle: false }) }) {
|
|
60
62
|
const releaseRevision = /** @type {string} */ (revision ?? stage.revision ?? (branch ?? stage.branch));
|
|
61
63
|
if (dryRun)
|
|
62
64
|
return { plan: createDeployPlan(stage, { revision: releaseRevision, releaseId }) };
|
|
@@ -69,15 +71,19 @@ export async function deploy({ transport, stage, sourcePath = process.cwd(), rev
|
|
|
69
71
|
const startedAt = new Date();
|
|
70
72
|
let published = false;
|
|
71
73
|
let releaseCreated = false;
|
|
74
|
+
reporter.line(`Deploying ${stage.application}/${stage.stageName} revision ${releaseRevision} as release ${releaseId}`);
|
|
72
75
|
await runHooks(transport, stage, null, "before_deploy");
|
|
76
|
+
reporter.line(" * Preparing deploy directories");
|
|
73
77
|
await ensureBaseDirs(transport, stage);
|
|
74
78
|
await runHooks(transport, stage, null, "before_lock");
|
|
79
|
+
reporter.line(" * Acquiring deploy lock");
|
|
75
80
|
await acquireLock(transport, stage, { force });
|
|
76
81
|
await runHooks(transport, stage, null, "after_lock");
|
|
77
82
|
try {
|
|
78
83
|
if (await transport.exists(releasePath))
|
|
79
84
|
throw new Error(`Release already exists: ${releasePath}`);
|
|
80
85
|
await runHooks(transport, stage, null, "before_source");
|
|
86
|
+
reporter.line(` * ${sourcePlanDetail(resolvedStage, releaseRevision).detail}`);
|
|
81
87
|
if (stage.strategy === "local-copy") {
|
|
82
88
|
await transport.copyDir(sourcePath, releasePath);
|
|
83
89
|
}
|
|
@@ -89,24 +95,30 @@ export async function deploy({ transport, stage, sourcePath = process.cwd(), rev
|
|
|
89
95
|
}
|
|
90
96
|
releaseCreated = true;
|
|
91
97
|
await runHooks(transport, stage, releasePath, "after_source");
|
|
98
|
+
reporter.line(" * Linking shared files and directories");
|
|
92
99
|
await prepareSharedLinks(transport, stage, releasePath);
|
|
93
100
|
await writeMetadata(transport, stage, { releaseId, revision: releaseRevision, branch, releasePath });
|
|
94
101
|
const previousReleasePath = await resolveCurrentReleasePath(transport, paths.currentPath);
|
|
95
102
|
await runHooks(transport, stage, releasePath, "before_tasks", { previousReleasePath });
|
|
96
|
-
await runTasks(transport, stage, releasePath, { previousReleasePath });
|
|
103
|
+
await runTasks(transport, stage, releasePath, { previousReleasePath, reporter });
|
|
97
104
|
await runHooks(transport, stage, releasePath, "after_tasks", { previousReleasePath });
|
|
98
105
|
await runHooks(transport, stage, releasePath, "before_runtime", { previousReleasePath });
|
|
106
|
+
reporter.line(` * Handing off to ${runtimeFor(stage).type ?? stage.runtime.type} runtime`);
|
|
99
107
|
const runtimeResult = await runtimeFor(stage).deploy(transport, { releasePath, currentPath: paths.currentPath, releaseId, revision: releaseRevision });
|
|
100
108
|
await runHooks(transport, stage, releasePath, "after_runtime", { previousReleasePath });
|
|
101
109
|
await runHooks(transport, stage, releasePath, "before_health", { previousReleasePath });
|
|
110
|
+
if (stage.healthChecks.length > 0)
|
|
111
|
+
reporter.line(" * Running health checks");
|
|
102
112
|
await runHealthChecks(transport, stage.healthChecks, releasePath);
|
|
103
113
|
await runHooks(transport, stage, releasePath, "after_health", { previousReleasePath });
|
|
104
114
|
const previous = await currentReleaseId(transport, stage);
|
|
105
115
|
await runHooks(transport, stage, releasePath, "before_publish", { previousReleasePath });
|
|
116
|
+
reporter.line(" * Publishing current symlink");
|
|
106
117
|
await publishCurrent(transport, stage, releasePath);
|
|
107
118
|
published = true;
|
|
108
119
|
await runHooks(transport, stage, releasePath, "after_publish", { previousReleasePath });
|
|
109
120
|
await runHooks(transport, stage, releasePath, "before_cleanup", { previousReleasePath });
|
|
121
|
+
reporter.line(` * Cleaning up old releases keeping ${stage.keepReleases}`);
|
|
110
122
|
const removed = await cleanupReleases(transport, stage);
|
|
111
123
|
await runHooks(transport, stage, releasePath, "after_cleanup", { previousReleasePath });
|
|
112
124
|
const report = { application: stage.application, stage: stage.stageName, releaseId, revision: releaseRevision, branch, deployedAt: new Date().toISOString(), event: "deploy", durationMs: Date.now() - startedAt.getTime(), previousRelease: previous ?? undefined, healthChecks: "passed", runtime: runtimeResult, cleanupRemoved: removed };
|
|
@@ -152,14 +164,14 @@ export async function rollback({ transport, stage, to }) {
|
|
|
152
164
|
*/
|
|
153
165
|
export function deployFailureMessage({ error, published, releaseCreated = false, stage, releaseId }) {
|
|
154
166
|
const beforePublishHints = [
|
|
155
|
-
`- Fix the failure and rerun: rampway
|
|
167
|
+
`- Fix the failure and rerun: rampway ${stage.stageName} deploy`,
|
|
156
168
|
releaseCreated ? `- The failed release directory can be removed after inspection: ${path.join(deployPaths(stage).releasesPath, releaseId)}` : "- Do not remove an existing release directory unless you have confirmed it is not current or needed for rollback.",
|
|
157
169
|
"- If a stale deploy lock remains after verification, rerun with --force."
|
|
158
170
|
];
|
|
159
171
|
const afterPublishHints = [
|
|
160
|
-
`- Inspect deployed state with: rampway
|
|
161
|
-
`- Inspect release history with: rampway
|
|
162
|
-
`- Roll back if needed: rampway
|
|
172
|
+
`- Inspect deployed state with: rampway ${stage.stageName} status`,
|
|
173
|
+
`- Inspect release history with: rampway ${stage.stageName} releases`,
|
|
174
|
+
`- Roll back if needed: rampway ${stage.stageName} rollback`
|
|
163
175
|
];
|
|
164
176
|
const lines = [
|
|
165
177
|
`Deploy failed ${published ? "after" : "before"} publish for ${stage.application}/${stage.stageName} release ${releaseId}.`,
|
|
@@ -179,7 +191,7 @@ export function deployFailureMessage({ error, published, releaseCreated = false,
|
|
|
179
191
|
async function writeMetadata(transport, stage, { releaseId, revision, branch, releasePath }) {
|
|
180
192
|
await transport.writeFile(path.join(releasePath, "REVISION"), `${revision}
|
|
181
193
|
`);
|
|
182
|
-
await transport.writeFile(path.join(releasePath, "
|
|
194
|
+
await transport.writeFile(path.join(releasePath, "TRESTLE_RELEASE.json"), JSON.stringify({
|
|
183
195
|
application: stage.application,
|
|
184
196
|
stage: stage.stageName,
|
|
185
197
|
releaseId,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deploy-runner.js","sourceRoot":"","sources":["../../../src/core/deploy-runner.js"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"deploy-runner.js","sourceRoot":"","sources":["../../../src/core/deploy-runner.js"],"names":[],"mappings":"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"}
|
|
@@ -19,4 +19,50 @@ export function redactEnv(env?: Record<string, string>): Record<string, string>;
|
|
|
19
19
|
* @returns {string}
|
|
20
20
|
*/
|
|
21
21
|
export function redactText(text: string): string;
|
|
22
|
+
/**
|
|
23
|
+
* Incrementally redacts a command output stream without ever emitting a
|
|
24
|
+
* possibly-incomplete sensitive tail.
|
|
25
|
+
*
|
|
26
|
+
* Secret assignments (`KEY=value`) and credential URLs
|
|
27
|
+
* (`https://user:pass@host`) are always terminated by whitespace and contain no
|
|
28
|
+
* internal whitespace, so any token preceding the final whitespace in the
|
|
29
|
+
* buffer is complete and safe to redact and emit. The unterminated trailing
|
|
30
|
+
* token is held back until more input (or {@link StreamingRedactor#flush})
|
|
31
|
+
* arrives. Notably `https://user:pass` without a terminating `@host` is not a
|
|
32
|
+
* credential URL at all, so holding it back until whitespace guarantees the
|
|
33
|
+
* `@host` half has arrived before anything is emitted.
|
|
34
|
+
*
|
|
35
|
+
* The held-back tail is bounded. An over-long non-sensitive token is trimmed to
|
|
36
|
+
* its trailing `maxHold` characters. An over-long secret assignment is redacted
|
|
37
|
+
* once and then discarded until its terminating whitespace, so no suffix can
|
|
38
|
+
* escape and memory remains bounded.
|
|
39
|
+
*/
|
|
40
|
+
export class StreamingRedactor {
|
|
41
|
+
/**
|
|
42
|
+
* @param {{maxHold?: number}} [opts]
|
|
43
|
+
*/
|
|
44
|
+
constructor({ maxHold }?: {
|
|
45
|
+
maxHold?: number;
|
|
46
|
+
});
|
|
47
|
+
/** @type {string} */
|
|
48
|
+
pending: string;
|
|
49
|
+
/** @type {number} */
|
|
50
|
+
maxHold: number;
|
|
51
|
+
/** @type {boolean} */
|
|
52
|
+
discardingSecretValue: boolean;
|
|
53
|
+
/**
|
|
54
|
+
* Appends a chunk and returns the redacted text that is safe to emit now.
|
|
55
|
+
*
|
|
56
|
+
* @param {string} chunk
|
|
57
|
+
* @returns {string}
|
|
58
|
+
*/
|
|
59
|
+
push(chunk: string): string;
|
|
60
|
+
/**
|
|
61
|
+
* Emits and clears any buffered tail. At end of stream the final token is
|
|
62
|
+
* complete, so redactText fully masks any secret it contains.
|
|
63
|
+
*
|
|
64
|
+
* @returns {string}
|
|
65
|
+
*/
|
|
66
|
+
flush(): string;
|
|
67
|
+
}
|
|
22
68
|
//# sourceMappingURL=redaction.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"redaction.d.ts","sourceRoot":"","sources":["../../../src/core/redaction.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"redaction.d.ts","sourceRoot":"","sources":["../../../src/core/redaction.js"],"names":[],"mappings":"AAMA;;;GAGG;AACH,iCAHW,OAAO,GACL,OAAO,CAInB;AAED;;;;GAIG;AACH,iCAJW,OAAO,SACP,OAAO,GACL,MAAM,CAKlB;AAED;;;GAGG;AACH,gCAHW,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACpB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAOlC;AAED;;;GAGG;AACH,iCAHW,MAAM,GACJ,MAAM,CAIlB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH;IACE;;OAEG;IACH,0BAFW;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAC,EAS5B;IANC,qBAAqB;IACrB,SADW,MAAM,CACA;IACjB,qBAAqB;IACrB,SADW,MAAM,CACK;IACtB,sBAAsB;IACtB,uBADW,OAAO,CACgB;IAGpC;;;;;OAKG;IACH,YAHW,MAAM,GACJ,MAAM,CA6BlB;IAED;;;;;OAKG;IACH,SAFa,MAAM,CAMlB;CACF"}
|