@devalade/shipnode 2.0.6 → 2.0.7
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/dist/cli/commands/deploy.d.ts.map +1 -1
- package/dist/cli/commands/deploy.js +3 -4
- package/dist/cli/commands/deploy.js.map +1 -1
- package/dist/domain/deploy/backend-strategy.js +1 -1
- package/dist/domain/deploy/backend-strategy.js.map +1 -1
- package/dist/domain/deploy/frontend-strategy.js +1 -1
- package/dist/domain/deploy/frontend-strategy.js.map +1 -1
- package/dist/infrastructure/ssh/logging-executor.d.ts +10 -0
- package/dist/infrastructure/ssh/logging-executor.d.ts.map +1 -0
- package/dist/infrastructure/ssh/logging-executor.js +24 -0
- package/dist/infrastructure/ssh/logging-executor.js.map +1 -0
- package/dist/services/health.service.d.ts.map +1 -1
- package/dist/services/health.service.js +14 -1
- package/dist/services/health.service.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/deploy.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/deploy.ts"],"names":[],"mappings":"AAQA,wBAAsB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA2B/H"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import chalk from 'chalk';
|
|
2
2
|
import { loadConfig } from '../../config/loader.js';
|
|
3
3
|
import { DeployService } from '../../services/deploy.service.js';
|
|
4
|
+
import { LoggingExecutor } from '../../infrastructure/ssh/logging-executor.js';
|
|
4
5
|
import { runRemoteCommand } from '../runner.js';
|
|
5
6
|
import { ui } from '../ui.js';
|
|
6
7
|
export async function cmdDeploy(cwd, options) {
|
|
@@ -11,11 +12,9 @@ export async function cmdDeploy(cwd, options) {
|
|
|
11
12
|
}
|
|
12
13
|
await runRemoteCommand(cwd, async ({ config, executor }) => {
|
|
13
14
|
ui.banner();
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
const deployer = new DeployService(executor, config, cwd);
|
|
15
|
+
ui.step(`Deploying ${chalk.bold(config.pm2?.name ?? config.app)} → ${config.ssh.user}@${config.ssh.host}`);
|
|
16
|
+
const deployer = new DeployService(new LoggingExecutor(executor), config, cwd);
|
|
17
17
|
await deployer.execute(options.skipBuild ?? false);
|
|
18
|
-
spin.stop(`Deployed ${chalk.bold(config.pm2?.name ?? config.app)}`);
|
|
19
18
|
const lines = [
|
|
20
19
|
`host ${config.ssh.user}@${config.ssh.host}`,
|
|
21
20
|
config.domain ? `url https://${config.domain}` : '',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deploy.js","sourceRoot":"","sources":["../../../src/cli/commands/deploy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,EAAE,EAAE,MAAM,UAAU,CAAC;AAG9B,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,GAAW,EAAE,OAAmE;IAC9G,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAErD,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,SAAS,IAAI,KAAK,CAAC,CAAC;QAChD,OAAO;IACT,CAAC;IAED,MAAM,gBAAgB,CACpB,GAAG,EACH,KAAK,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE;QAC7B,EAAE,CAAC,MAAM,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"deploy.js","sourceRoot":"","sources":["../../../src/cli/commands/deploy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,8CAA8C,CAAC;AAC/E,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,EAAE,EAAE,MAAM,UAAU,CAAC;AAG9B,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,GAAW,EAAE,OAAmE;IAC9G,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAErD,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,SAAS,IAAI,KAAK,CAAC,CAAC;QAChD,OAAO;IACT,CAAC;IAED,MAAM,gBAAgB,CACpB,GAAG,EACH,KAAK,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE;QAC7B,EAAE,CAAC,MAAM,EAAE,CAAC;QACZ,EAAE,CAAC,IAAI,CAAC,aAAa,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,IAAI,MAAM,CAAC,GAAG,CAAC,MAAM,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;QAE3G,MAAM,QAAQ,GAAG,IAAI,aAAa,CAAC,IAAI,eAAe,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;QAC/E,MAAM,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,IAAI,KAAK,CAAC,CAAC;QAEnD,MAAM,KAAK,GAAG;YACZ,YAAY,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE;YAChD,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,oBAAoB,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE;SACzD,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE7B,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACvB,EAAE,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC;IACrD,CAAC,EACD,EAAE,UAAU,EAAE,OAAO,CAAC,MAAM,EAAE,CAC/B,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,MAAsB,EAAE,SAAkB;IAC7D,EAAE,CAAC,MAAM,EAAE,CAAC;IAEZ,MAAM,UAAU,GAAuB;QACrC,CAAC,UAAU,EAAE,MAAM,CAAC,GAAG,CAAC;QACxB,CAAC,MAAM,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QACpE,CAAC,aAAa,EAAE,MAAM,CAAC,UAAU,CAAC;QAClC,CAAC,MAAM,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,uBAAuB,MAAM,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC;KACzF,CAAC;IAEF,IAAI,MAAM,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;QAC7B,IAAI,MAAM,CAAC,GAAG,EAAE,IAAI;YAAE,UAAU,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;QACrE,UAAU,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;IAClE,CAAC;IAED,IAAI,MAAM,CAAC,MAAM;QAAE,UAAU,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IAE9D,MAAM,SAAS,GAAuB,EAAE,CAAC;IACzC,IAAI,SAAS,EAAE,CAAC;QACd,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;IAC5D,CAAC;SAAM,IAAI,MAAM,CAAC,GAAG,KAAK,UAAU,EAAE,CAAC;QACrC,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,eAAe,CAAC,CAAC,CAAC;QACtC,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,uBAAuB,CAAC,CAAC,CAAC;IACzE,CAAC;SAAM,CAAC;QACN,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC;IAC3D,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,CAAC,YAAY;QAC/B,CAAC,CAAC;YACE,qBAAqB;YACrB,0BAA0B;YAC1B,aAAa;YACb,sBAAsB;YACtB,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,EAAE;YACnD,yBAAyB;YACzB,MAAM,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE;YAC5C,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,gBAAgB,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE;YAC3E,gBAAgB;YAChB,oBAAoB;YACpB,MAAM,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE;YACrD,cAAc;SACf,CAAC,MAAM,CAAC,OAAO,CAAC;QACnB,CAAC,CAAC;YACE,aAAa;YACb,sBAAsB;YACtB,MAAM,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE;YAC5C,MAAM,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE;SACtD,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAEtB,MAAM,QAAQ,GAAuB,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAW,CAAC,CAAC,CAAC;IAErF,EAAE,CAAC,IAAI,CACL;QACE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;QACpB,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;QAClE,EAAE;QACF,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;QACnB,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;QACjE,EAAE;QACF,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC;QACzB,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;KAChE,CAAC,IAAI,CAAC,IAAI,CAAC,EACZ,mCAAmC,CACpC,CAAC;AACJ,CAAC"}
|
|
@@ -24,7 +24,7 @@ export class BackendStrategy {
|
|
|
24
24
|
`${this.cwd}/`,
|
|
25
25
|
`${this.config.ssh.user}@${this.config.ssh.host}:${ctx.workDir}/`,
|
|
26
26
|
];
|
|
27
|
-
await execa('rsync', args);
|
|
27
|
+
await execa('rsync', args, { stdio: 'inherit' });
|
|
28
28
|
}
|
|
29
29
|
async setupEnvironment(ctx) {
|
|
30
30
|
const pkgManager = await this.resolvePkgManager();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"backend-strategy.js","sourceRoot":"","sources":["../../../src/domain/deploy/backend-strategy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAC9B,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAE/B,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC9F,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAGnE,MAAM,OAAO,eAAe;IAIhB;IACA;IAJD,IAAI,GAAG,SAAS,CAAC;IAE1B,YACU,MAAsB,EACtB,GAAW;QADX,WAAM,GAAN,MAAM,CAAgB;QACtB,QAAG,GAAH,GAAG,CAAQ;IAClB,CAAC;IAEJ,KAAK,CAAC,KAAK,CAAC,GAAoB;QAC9B,MAAM,QAAQ,GAAG,CAAC,GAAG,sBAAsB,CAAC,CAAC;QAC7C,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC;QACxD,MAAM,aAAa,GAAG,MAAM,UAAU,CAAC,UAAU,CAAC,CAAC;QAEnD,MAAM,IAAI,GAAG;YACX,MAAM;YACN,YAAY;YACZ,IAAI,EAAE,UAAU,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE;YACtC,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;YAC5C,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,gBAAgB,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACxD,GAAG,IAAI,CAAC,GAAG,GAAG;YACd,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,OAAO,GAAG;SAClE,CAAC;QAEF,MAAM,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"backend-strategy.js","sourceRoot":"","sources":["../../../src/domain/deploy/backend-strategy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAC9B,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAE/B,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC9F,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAGnE,MAAM,OAAO,eAAe;IAIhB;IACA;IAJD,IAAI,GAAG,SAAS,CAAC;IAE1B,YACU,MAAsB,EACtB,GAAW;QADX,WAAM,GAAN,MAAM,CAAgB;QACtB,QAAG,GAAH,GAAG,CAAQ;IAClB,CAAC;IAEJ,KAAK,CAAC,KAAK,CAAC,GAAoB;QAC9B,MAAM,QAAQ,GAAG,CAAC,GAAG,sBAAsB,CAAC,CAAC;QAC7C,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC;QACxD,MAAM,aAAa,GAAG,MAAM,UAAU,CAAC,UAAU,CAAC,CAAC;QAEnD,MAAM,IAAI,GAAG;YACX,MAAM;YACN,YAAY;YACZ,IAAI,EAAE,UAAU,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE;YACtC,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;YAC5C,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,gBAAgB,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACxD,GAAG,IAAI,CAAC,GAAG,GAAG;YACd,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,OAAO,GAAG;SAClE,CAAC;QAEF,MAAM,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IACnD,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,GAAoB;QACzC,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAClD,MAAM,UAAU,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAC;QACjD,MAAM,MAAM,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC;QAEzC,MAAM,QAAQ,GAAG;YACf,OAAO,GAAG,CAAC,OAAO,GAAG;YACrB,oEAAoE;YACpE,qBAAqB,IAAI,CAAC,MAAM,CAAC,WAAW,GAAG;YAC/C,iBAAiB;SAClB,CAAC;QAEF,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;YACtD,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,6BAA6B,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;QACjE,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACxB,QAAQ,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,MAAM,CAAC,UAAU,oBAAoB,CAAC,CAAC;QACvE,CAAC;QAED,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAE1B,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;YACnB,QAAQ,CAAC,IAAI,CAAC,uFAAuF,MAAM,YAAY,CAAC,CAAC;QAC3H,CAAC;QAED,QAAQ,CAAC,IAAI,CAAC,gDAAgD,GAAG,CAAC,OAAO,uBAAuB,CAAC,CAAC;QAElG,MAAM,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IACjD,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,GAAoB;QACjC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG;YAAE,OAAO;QAE7B,MAAM,gBAAgB,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;QACtD,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY;YAC5C,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,8BAA8B;YACzD,CAAC,CAAC,GAAG,GAAG,CAAC,OAAO,uBAAuB,CAAC;QAE1C,MAAM,OAAO,GAAG,gBAAgB,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAC1D,MAAM,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,OAAO,QAAQ,aAAa,GAAG,CAAC,CAAC;QAElE,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC;QAC5F,MAAM,GAAG,CAAC,QAAQ,CAAC,IAAI,CACrB,OAAO,MAAM,OAAO;YACpB,wEAAwE;YACxE,mCAAmC,aAAa,oBAAoB;YACpE,uBAAuB,CACxB,CAAC;IACJ,CAAC;IAEO,qBAAqB;QAC3B,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG;YAAE,OAAO,EAAE,CAAC;QAEhC,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,IAAI,IAAI,CAAC;QAC/C,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;QAClC,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,IAAI,CAAC,CAAC;QACjD,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,IAAI,MAAM,CAAC;QAEtD,OAAO;;aAEE,IAAI;;iBAEA,SAAS;;2BAEC,SAAS;;;cAGtB,IAAI;;;GAGf,CAAC;IACF,CAAC;IAEO,6BAA6B,CAAC,OAAe;QACnD,MAAM,QAAQ,GAAa,EAAE,CAAC;QAE9B,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;YAC3B,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;gBACzC,QAAQ,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,MAAM,CAAC,UAAU,WAAW,GAAG,GAAG,CAAC,CAAC;gBACpE,QAAQ,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,MAAM,CAAC,UAAU,WAAW,GAAG,MAAM,OAAO,IAAI,GAAG,GAAG,CAAC,CAAC;YACzF,CAAC;QACH,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;YAC5B,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;gBAC3C,QAAQ,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,MAAM,CAAC,UAAU,WAAW,IAAI,MAAM,OAAO,IAAI,IAAI,GAAG,CAAC,CAAC;YAC1F,CAAC;QACH,CAAC;QAED,OAAO,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC;IAEO,KAAK,CAAC,iBAAiB;QAC7B,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU;YAAE,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;QAC1D,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAClD,OAAO,QAAQ,IAAI,KAAK,CAAC;IAC3B,CAAC;CACF"}
|
|
@@ -29,7 +29,7 @@ export class FrontendStrategy {
|
|
|
29
29
|
...(hasIgnoreFile ? ['--exclude-from', ignoreFile] : []),
|
|
30
30
|
`${this.cwd}/${buildDir}/`,
|
|
31
31
|
`${this.config.ssh.user}@${this.config.ssh.host}:${ctx.workDir}/`,
|
|
32
|
-
]);
|
|
32
|
+
], { stdio: 'inherit' });
|
|
33
33
|
}
|
|
34
34
|
async buildFrontend() {
|
|
35
35
|
const pkgManager = await this.resolvePkgManager();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"frontend-strategy.js","sourceRoot":"","sources":["../../../src/domain/deploy/frontend-strategy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAC9B,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAE/B,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAG3E,MAAM,OAAO,gBAAgB;IAIjB;IACA;IAJD,IAAI,GAAG,UAAU,CAAC;IAE3B,YACU,MAAsB,EACtB,GAAW;QADX,WAAM,GAAN,MAAM,CAAgB;QACtB,QAAG,GAAH,GAAG,CAAQ;IAClB,CAAC;IAEJ,KAAK,CAAC,KAAK,CAAC,GAAoB;QAC9B,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;YACnB,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAC7B,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,sBAAsB,EAAE,CAAC;QACrD,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC;QACxD,MAAM,aAAa,GAAG,MAAM,UAAU,CAAC,UAAU,CAAC,CAAC;QAEnD,MAAM,KAAK,CAAC,OAAO,EAAE;YACnB,MAAM;YACN,YAAY;YACZ,UAAU;YACV,IAAI,EAAE,UAAU,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE;YACtC,WAAW,EAAE,SAAS;YACtB,WAAW,EAAE,YAAY;YACzB,WAAW,EAAE,WAAW;YACxB,WAAW,EAAE,SAAS;YACtB,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,gBAAgB,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACxD,GAAG,IAAI,CAAC,GAAG,IAAI,QAAQ,GAAG;YAC1B,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,OAAO,GAAG;SAClE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"frontend-strategy.js","sourceRoot":"","sources":["../../../src/domain/deploy/frontend-strategy.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { RemoteExecutor } from '../../domain/remote/executor.js';
|
|
2
|
+
import type { ExecResult } from '../../shared/types.js';
|
|
3
|
+
export declare class LoggingExecutor implements RemoteExecutor {
|
|
4
|
+
private inner;
|
|
5
|
+
constructor(inner: RemoteExecutor);
|
|
6
|
+
exec(command: string, options?: {
|
|
7
|
+
timeout?: number;
|
|
8
|
+
}): Promise<ExecResult>;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=logging-executor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logging-executor.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/ssh/logging-executor.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAExD,qBAAa,eAAgB,YAAW,cAAc;IACxC,OAAO,CAAC,KAAK;gBAAL,KAAK,EAAE,cAAc;IAEnC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,UAAU,CAAC;CAcjF"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
export class LoggingExecutor {
|
|
3
|
+
inner;
|
|
4
|
+
constructor(inner) {
|
|
5
|
+
this.inner = inner;
|
|
6
|
+
}
|
|
7
|
+
async exec(command, options) {
|
|
8
|
+
const result = await this.inner.exec(command, options);
|
|
9
|
+
if (result.stdout) {
|
|
10
|
+
for (const line of result.stdout.split('\n')) {
|
|
11
|
+
if (line.trim())
|
|
12
|
+
process.stdout.write(chalk.dim(' remote: ' + line) + '\n');
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
if (result.stderr) {
|
|
16
|
+
for (const line of result.stderr.split('\n')) {
|
|
17
|
+
if (line.trim())
|
|
18
|
+
process.stderr.write(chalk.yellow(' remote: ' + line) + '\n');
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
return result;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=logging-executor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logging-executor.js","sourceRoot":"","sources":["../../../src/infrastructure/ssh/logging-executor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,MAAM,OAAO,eAAe;IACN;IAApB,YAAoB,KAAqB;QAArB,UAAK,GAAL,KAAK,CAAgB;IAAG,CAAC;IAE7C,KAAK,CAAC,IAAI,CAAC,OAAe,EAAE,OAA8B;QACxD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACvD,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAClB,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC7C,IAAI,IAAI,CAAC,IAAI,EAAE;oBAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;YAC/E,CAAC;QACH,CAAC;QACD,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAClB,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC7C,IAAI,IAAI,CAAC,IAAI,EAAE;oBAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;YAClF,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"health.service.d.ts","sourceRoot":"","sources":["../../src/services/health.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAGnE,qBAAa,kBAAkB;IAE3B,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,MAAM;gBADN,QAAQ,EAAE,cAAc,EACxB,MAAM,EAAE,cAAc;IAG1B,OAAO,IAAI,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"health.service.d.ts","sourceRoot":"","sources":["../../src/services/health.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAGnE,qBAAa,kBAAkB;IAE3B,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,MAAM;gBADN,QAAQ,EAAE,cAAc,EACxB,MAAM,EAAE,cAAc;IAG1B,OAAO,IAAI,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;IAuDlE,OAAO,CAAC,KAAK;CAGd"}
|
|
@@ -28,8 +28,21 @@ export class HealthCheckService {
|
|
|
28
28
|
if (lastStatus >= 200 && lastStatus < 400) {
|
|
29
29
|
return { attempts: attempt, responseMs: lastResponseMs };
|
|
30
30
|
}
|
|
31
|
+
if (attempt < retries) {
|
|
32
|
+
await this.sleep(2000);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
// Fetch PM2 logs to help diagnose why the app didn't start
|
|
36
|
+
let diagnostics = '';
|
|
37
|
+
if (this.config.pm2?.name) {
|
|
38
|
+
const nodeVersion = this.config.nodeVersion === 'lts' ? '24' : this.config.nodeVersion;
|
|
39
|
+
const mise = `export PATH="$HOME/.local/bin:$HOME/.local/share/mise/shims:$PATH"`;
|
|
40
|
+
const logResult = await this.executor.exec(`${mise}; mise exec node@${nodeVersion} -- pm2 logs ${this.config.pm2.name} --lines 30 --nostream 2>&1 || true`).catch(() => ({ stdout: '', stderr: '' }));
|
|
41
|
+
const logs = logResult.stdout.trim();
|
|
42
|
+
if (logs)
|
|
43
|
+
diagnostics = `\n\nPM2 logs (last 30 lines):\n${logs}`;
|
|
31
44
|
}
|
|
32
|
-
throw new HealthCheckError(`Health check failed after ${retries} attempts. Last status: ${lastStatus}
|
|
45
|
+
throw new HealthCheckError(`Health check failed after ${retries} attempts. Last status: ${lastStatus}` + diagnostics, retries, lastStatus);
|
|
33
46
|
}
|
|
34
47
|
sleep(ms) {
|
|
35
48
|
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"health.service.js","sourceRoot":"","sources":["../../src/services/health.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEvD,MAAM,OAAO,kBAAkB;IAEnB;IACA;IAFV,YACU,QAAwB,EACxB,MAAsB;QADtB,aAAQ,GAAR,QAAQ,CAAgB;QACxB,WAAM,GAAN,MAAM,CAAgB;IAC7B,CAAC;IAEJ,KAAK,CAAC,OAAO;QACX,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;YACrC,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC;QACxC,CAAC;QAED,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;QACzE,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,IAAI,IAAI,CAAC;QAC/C,MAAM,GAAG,GAAG,oBAAoB,IAAI,GAAG,IAAI,EAAE,CAAC;QAE9C,yBAAyB;QACzB,MAAM,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;QAEtC,IAAI,UAAU,GAAG,CAAC,CAAC;QACnB,IAAI,cAAc,GAAG,CAAC,CAAC;QAEvB,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC;YACpD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CACrC,4BAA4B;gBAC5B,8DAA8D,OAAO,KAAK,GAAG,MAAM;gBACnF,0BAA0B;gBAC1B,yDAAyD,CAC1D,CAAC;YAEF,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACvC,UAAU,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACpC,cAAc,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAExC,IAAI,UAAU,IAAI,GAAG,IAAI,UAAU,GAAG,GAAG,EAAE,CAAC;gBAC1C,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,CAAC;YAC3D,CAAC;QACH,CAAC;QAED,MAAM,IAAI,gBAAgB,CACxB,6BAA6B,OAAO,2BAA2B,UAAU,EAAE,
|
|
1
|
+
{"version":3,"file":"health.service.js","sourceRoot":"","sources":["../../src/services/health.service.ts"],"names":[],"mappings":"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"}
|