@nrwl/nx-cloud 15.0.1-beta.1 → 15.0.2-beta.1
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/bin/nx-cloud.js +7 -0
- package/bin/nx-cloud.js.map +1 -1
- package/lib/core/commands/upload-and-show-run-details.d.ts +1 -0
- package/lib/core/commands/upload-and-show-run-details.js +60 -0
- package/lib/core/commands/upload-and-show-run-details.js.map +1 -0
- package/lib/core/runners/cloud-enabled/cloud-enabled-life-cycle.d.ts +0 -4
- package/lib/core/runners/cloud-enabled/cloud-enabled-life-cycle.js +2 -49
- package/lib/core/runners/cloud-enabled/cloud-enabled-life-cycle.js.map +1 -1
- package/lib/core/terminal-output/end-of-run-message.js +3 -3
- package/lib/core/terminal-output/end-of-run-message.js.map +1 -1
- package/lib/core/terminal-output/read-task-terminal-output.d.ts +2 -0
- package/lib/core/terminal-output/read-task-terminal-output.js +60 -0
- package/lib/core/terminal-output/read-task-terminal-output.js.map +1 -0
- package/package.json +1 -1
package/bin/nx-cloud.js
CHANGED
|
@@ -6,6 +6,7 @@ const record_output_1 = require("../lib/core/commands/record-output");
|
|
|
6
6
|
const start_ci_run_1 = require("../lib/core/commands/start-ci-run");
|
|
7
7
|
const stop_all_agents_1 = require("../lib/core/commands/stop-all-agents");
|
|
8
8
|
const distributed_agent_impl_1 = require("../lib/core/runners/distributed-agent/distributed-agent.impl");
|
|
9
|
+
const upload_and_show_run_details_1 = require("../lib/core/commands/upload-and-show-run-details");
|
|
9
10
|
const command = process.argv[2];
|
|
10
11
|
if (command === 'start-agent') {
|
|
11
12
|
(0, distributed_agent_impl_1.startAgent)().catch((e) => {
|
|
@@ -37,6 +38,12 @@ else if (command === 'record') {
|
|
|
37
38
|
process.exit(1);
|
|
38
39
|
});
|
|
39
40
|
}
|
|
41
|
+
else if (command === 'upload-and-show-run-details') {
|
|
42
|
+
(0, upload_and_show_run_details_1.uploadAndShowRunDetails)().catch((e) => {
|
|
43
|
+
console.error(e);
|
|
44
|
+
process.exit(1);
|
|
45
|
+
});
|
|
46
|
+
}
|
|
40
47
|
else {
|
|
41
48
|
console.log('Pass start-agent, stop-all-agents, or clean-up-agents');
|
|
42
49
|
}
|
package/bin/nx-cloud.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nx-cloud.js","sourceRoot":"","sources":["../../../../../libs/nx-packages/nx-cloud/bin/nx-cloud.ts"],"names":[],"mappings":";;;AAEA,0EAAqE;AACrE,sEAA+E;AAC/E,oEAA+D;AAC/D,0EAAqE;AACrE,yGAA0F;
|
|
1
|
+
{"version":3,"file":"nx-cloud.js","sourceRoot":"","sources":["../../../../../libs/nx-packages/nx-cloud/bin/nx-cloud.ts"],"names":[],"mappings":";;;AAEA,0EAAqE;AACrE,sEAA+E;AAC/E,oEAA+D;AAC/D,0EAAqE;AACrE,yGAA0F;AAC1F,kGAA2F;AAE3F,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAEhC,IAAI,OAAO,KAAK,aAAa,EAAE;IAC7B,IAAA,mCAAU,GAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;QACvB,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACjB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;CACJ;KAAM,IAAI,OAAO,KAAK,iBAAiB,EAAE;IACxC,IAAA,+BAAa,GAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;QAC1B,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACjB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;CACJ;KAAM,IAAI,OAAO,KAAK,cAAc,EAAE;IACrC,IAAA,yBAAU,GAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;QACvB,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACjB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;CACJ;KAAM,IAAI,OAAO,KAAK,iBAAiB,EAAE;IACxC,IAAA,+BAAa,GAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;QAC1B,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACjB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;CACJ;KAAM,IAAI,OAAO,KAAK,QAAQ,EAAE;IAC/B,IAAA,yCAAyB,GAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;QACtC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACjB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;CACJ;KAAM,IAAI,OAAO,KAAK,6BAA6B,EAAE;IACpD,IAAA,qDAAuB,GAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;QACpC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACjB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;CACJ;KAAM;IACL,OAAO,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAC;CACtE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function uploadAndShowRunDetails(): Promise<void>;
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.uploadAndShowRunDetails = void 0;
|
|
13
|
+
const environment_1 = require("../../utilities/environment");
|
|
14
|
+
const cloud_run_api_1 = require("../runners/cloud-enabled/cloud-run.api");
|
|
15
|
+
const message_reporter_1 = require("../terminal-output/message-reporter");
|
|
16
|
+
const fs_1 = require("fs");
|
|
17
|
+
const path_1 = require("path");
|
|
18
|
+
const id_generator_1 = require("../runners/cloud-enabled/id-generator");
|
|
19
|
+
const open = require("open");
|
|
20
|
+
const read_task_terminal_output_1 = require("../terminal-output/read-task-terminal-output");
|
|
21
|
+
const output_obfuscator_1 = require("../terminal-output/output-obfuscator");
|
|
22
|
+
const { workspaceRoot, output } = require('../../utilities/nx-imports');
|
|
23
|
+
function uploadRunDetails(options) {
|
|
24
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
25
|
+
const errors = new message_reporter_1.MessageReporter(options);
|
|
26
|
+
const runContext = {};
|
|
27
|
+
const machineInfo = (0, environment_1.getMachineInfo)(options);
|
|
28
|
+
const api = new cloud_run_api_1.CloudRunApi(errors, runContext, options, machineInfo);
|
|
29
|
+
const directory = options.cacheDirectory || './node_modules/.cache/nx';
|
|
30
|
+
const outputObfusactor = new output_obfuscator_1.OutputObfuscator(options.maskedProperties);
|
|
31
|
+
const runInfo = JSON.parse((0, fs_1.readFileSync)((0, path_1.join)(directory, 'run.json')).toString());
|
|
32
|
+
// we need to connect to cloud if not connected yet
|
|
33
|
+
const tasks = runInfo.tasks.map((t) => (Object.assign(Object.assign({}, t), { terminalOutput: (0, read_task_terminal_output_1.readTaskTerminalOutput)(directory, outputObfusactor, t.hash, t.cacheStatus, t.status) })));
|
|
34
|
+
const linkId = (0, id_generator_1.generateUniqueLinkId)();
|
|
35
|
+
yield api.endRun(runInfo.run, tasks, linkId);
|
|
36
|
+
return `${options.url || 'https://nx.app'}/runs/${linkId}`;
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
function uploadAndShowRunDetails() {
|
|
40
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
41
|
+
const options = readOptions();
|
|
42
|
+
const url = yield uploadRunDetails(options);
|
|
43
|
+
output.success({
|
|
44
|
+
title: 'Successfully uploaded the run details',
|
|
45
|
+
bodyLines: [`View run details at ${url}`],
|
|
46
|
+
});
|
|
47
|
+
open(url);
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
exports.uploadAndShowRunDetails = uploadAndShowRunDetails;
|
|
51
|
+
function readOptions() {
|
|
52
|
+
var _a, _b, _c;
|
|
53
|
+
try {
|
|
54
|
+
return (_c = (_b = (_a = JSON.parse((0, fs_1.readFileSync)((0, path_1.join)(workspaceRoot, 'nx.json')).toString())) === null || _a === void 0 ? void 0 : _a.tasksRunnerOptions) === null || _b === void 0 ? void 0 : _b.default) === null || _c === void 0 ? void 0 : _c.options;
|
|
55
|
+
}
|
|
56
|
+
catch (e) {
|
|
57
|
+
return {};
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=upload-and-show-run-details.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"upload-and-show-run-details.js","sourceRoot":"","sources":["../../../../../../../libs/nx-packages/nx-cloud/lib/core/commands/upload-and-show-run-details.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6DAA6D;AAC7D,0EAAqE;AACrE,0EAAsE;AACtE,2BAAkC;AAClC,+BAA4B;AAC5B,wEAA6E;AAC7E,6BAA6B;AAC7B,4FAAsF;AACtF,4EAAwE;AAExE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,4BAA4B,CAAC,CAAC;AAExE,SAAe,gBAAgB,CAAC,OAAY;;QAC1C,MAAM,MAAM,GAAG,IAAI,kCAAe,CAAC,OAAO,CAAC,CAAC;QAC5C,MAAM,UAAU,GAAG,EAAS,CAAC;QAC7B,MAAM,WAAW,GAAG,IAAA,4BAAc,EAAC,OAAO,CAAC,CAAC;QAC5C,MAAM,GAAG,GAAG,IAAI,2BAAW,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;QAEtE,MAAM,SAAS,GAAG,OAAO,CAAC,cAAc,IAAI,0BAA0B,CAAC;QACvE,MAAM,gBAAgB,GAAG,IAAI,oCAAgB,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;QAExE,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CACxB,IAAA,iBAAY,EAAC,IAAA,WAAI,EAAC,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,QAAQ,EAAE,CACrD,CAAC;QAEF,mDAAmD;QACnD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,iCAClC,CAAC,KACJ,cAAc,EAAE,IAAA,kDAAsB,EACpC,SAAS,EACT,gBAAgB,EAChB,CAAC,CAAC,IAAI,EACN,CAAC,CAAC,WAAW,EACb,CAAC,CAAC,MAAM,CACT,IACD,CAAC,CAAC;QAEJ,MAAM,MAAM,GAAG,IAAA,mCAAoB,GAAE,CAAC;QACtC,MAAM,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;QAC7C,OAAO,GAAG,OAAO,CAAC,GAAG,IAAI,gBAAgB,SAAS,MAAM,EAAE,CAAC;IAC7D,CAAC;CAAA;AAED,SAAsB,uBAAuB;;QAC3C,MAAM,OAAO,GAAG,WAAW,EAAE,CAAC;QAC9B,MAAM,GAAG,GAAG,MAAM,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAC5C,MAAM,CAAC,OAAO,CAAC;YACb,KAAK,EAAE,uCAAuC;YAC9C,SAAS,EAAE,CAAC,uBAAuB,GAAG,EAAE,CAAC;SAC1C,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,CAAC,CAAC;IACZ,CAAC;CAAA;AARD,0DAQC;AAED,SAAS,WAAW;;IAClB,IAAI;QACF,OAAO,MAAA,MAAA,MAAA,IAAI,CAAC,KAAK,CAAC,IAAA,iBAAY,EAAC,IAAA,WAAI,EAAC,aAAa,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,0CACtE,kBAAkB,0CAAE,OAAO,0CAAE,OAAO,CAAC;KAC1C;IAAC,OAAO,CAAC,EAAE;QACV,OAAO,EAAE,CAAC;KACX;AACH,CAAC"}
|
|
@@ -9,9 +9,6 @@ export declare class CloudEnabledLifeCycle {
|
|
|
9
9
|
private readonly cacheableOperations;
|
|
10
10
|
private readonly outputObfuscator;
|
|
11
11
|
private readonly tasks;
|
|
12
|
-
private static MAX_CHARACTERS_FAILED_TASK;
|
|
13
|
-
private static MAX_CHARACTERS_SUCCESSFUL_TASK;
|
|
14
|
-
private static MAX_CHARACTERS_CACHED_TASK;
|
|
15
12
|
constructor(runContext: RunContext, cacheDirectory: string | undefined, skipNxCache: boolean, collectTerminalOutput: boolean, cacheableOperations: string[], outputObfuscator: OutputObfuscator, tasks: TaskExecution[]);
|
|
16
13
|
scheduleTask(task: Task): void;
|
|
17
14
|
startTask(task: Task): void;
|
|
@@ -21,5 +18,4 @@ export declare class CloudEnabledLifeCycle {
|
|
|
21
18
|
private updateStartedTask;
|
|
22
19
|
private getTerminalOutput;
|
|
23
20
|
private cleanUpHashDetails;
|
|
24
|
-
private readTerminalOutputFile;
|
|
25
21
|
}
|
|
@@ -1,11 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.CloudEnabledLifeCycle = void 0;
|
|
4
|
-
const path = require("path");
|
|
5
|
-
const path_1 = require("path");
|
|
6
|
-
const fs_1 = require("fs");
|
|
7
|
-
const environment_1 = require("../../../utilities/environment");
|
|
8
4
|
const serializer_overrides_1 = require("../../../utilities/serializer-overrides");
|
|
5
|
+
const read_task_terminal_output_1 = require("../../terminal-output/read-task-terminal-output");
|
|
9
6
|
const { workspaceRoot } = require('../../../utilities/nx-imports');
|
|
10
7
|
class CloudEnabledLifeCycle {
|
|
11
8
|
constructor(runContext, cacheDirectory, skipNxCache, collectTerminalOutput, cacheableOperations, outputObfuscator, tasks) {
|
|
@@ -92,35 +89,7 @@ class CloudEnabledLifeCycle {
|
|
|
92
89
|
}
|
|
93
90
|
}
|
|
94
91
|
getTerminalOutput(hash, cacheStatus, code) {
|
|
95
|
-
|
|
96
|
-
if (this.cacheDirectory) {
|
|
97
|
-
if (this.cacheDirectory.startsWith('./')) {
|
|
98
|
-
dir = (0, path_1.join)(workspaceRoot, this.cacheDirectory);
|
|
99
|
-
}
|
|
100
|
-
else {
|
|
101
|
-
dir = this.cacheDirectory;
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
else {
|
|
105
|
-
dir = (0, path_1.join)(workspaceRoot, 'node_modules', '.cache', 'nx');
|
|
106
|
-
}
|
|
107
|
-
try {
|
|
108
|
-
const taskOutput = this.readTerminalOutputFile(dir, hash);
|
|
109
|
-
const taskOutputSanitized = this.outputObfuscator.obfuscate(taskOutput);
|
|
110
|
-
if (environment_1.NX_CLOUD_UNLIMITED_OUTPUT)
|
|
111
|
-
return taskOutputSanitized;
|
|
112
|
-
const maxCharacters = cacheStatus === 'cache-miss'
|
|
113
|
-
? code === 0
|
|
114
|
-
? CloudEnabledLifeCycle.MAX_CHARACTERS_SUCCESSFUL_TASK
|
|
115
|
-
: CloudEnabledLifeCycle.MAX_CHARACTERS_FAILED_TASK
|
|
116
|
-
: CloudEnabledLifeCycle.MAX_CHARACTERS_CACHED_TASK;
|
|
117
|
-
return taskOutputSanitized.length > maxCharacters
|
|
118
|
-
? `TRUNCATED\n\n${taskOutputSanitized.slice(taskOutputSanitized.length - maxCharacters)}`
|
|
119
|
-
: taskOutputSanitized;
|
|
120
|
-
}
|
|
121
|
-
catch (e) {
|
|
122
|
-
return '';
|
|
123
|
-
}
|
|
92
|
+
return (0, read_task_terminal_output_1.readTaskTerminalOutput)(this.cacheDirectory, this.outputObfuscator, hash, cacheStatus, code);
|
|
124
93
|
}
|
|
125
94
|
cleanUpHashDetails(hashDetails) {
|
|
126
95
|
const nodes = {};
|
|
@@ -135,22 +104,6 @@ class CloudEnabledLifeCycle {
|
|
|
135
104
|
implicitDeps: hashDetails.implicitDeps,
|
|
136
105
|
};
|
|
137
106
|
}
|
|
138
|
-
readTerminalOutputFile(dir, hash) {
|
|
139
|
-
try {
|
|
140
|
-
return (0, fs_1.readFileSync)(path.join(dir, 'terminalOutputs', hash)).toString();
|
|
141
|
-
}
|
|
142
|
-
catch (_a) {
|
|
143
|
-
try {
|
|
144
|
-
return (0, fs_1.readFileSync)(path.join(dir, hash, 'terminalOutput')).toString();
|
|
145
|
-
}
|
|
146
|
-
catch (_b) {
|
|
147
|
-
return '';
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
107
|
}
|
|
152
108
|
exports.CloudEnabledLifeCycle = CloudEnabledLifeCycle;
|
|
153
|
-
CloudEnabledLifeCycle.MAX_CHARACTERS_FAILED_TASK = 200000;
|
|
154
|
-
CloudEnabledLifeCycle.MAX_CHARACTERS_SUCCESSFUL_TASK = 20000;
|
|
155
|
-
CloudEnabledLifeCycle.MAX_CHARACTERS_CACHED_TASK = 20000;
|
|
156
109
|
//# sourceMappingURL=cloud-enabled-life-cycle.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cloud-enabled-life-cycle.js","sourceRoot":"","sources":["../../../../../../../../libs/nx-packages/nx-cloud/lib/core/runners/cloud-enabled/cloud-enabled-life-cycle.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"cloud-enabled-life-cycle.js","sourceRoot":"","sources":["../../../../../../../../libs/nx-packages/nx-cloud/lib/core/runners/cloud-enabled/cloud-enabled-life-cycle.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,10 +21,10 @@ class EndOfRunMessage {
|
|
|
21
21
|
.map((t) => t.projectName);
|
|
22
22
|
const message = [];
|
|
23
23
|
if (anyErrors) {
|
|
24
|
-
message.push(`
|
|
24
|
+
message.push(`View structured, searchable error logs at ${this.runContext.runUrl}`);
|
|
25
25
|
}
|
|
26
26
|
else if (anyCacheMisses) {
|
|
27
|
-
message.push(`
|
|
27
|
+
message.push(`View logs and investigate cache misses at ${this.runContext.runUrl}`);
|
|
28
28
|
}
|
|
29
29
|
else if (hits.length > 0) {
|
|
30
30
|
const tasks = hits.length === 1 ? hits[0] : `${hits.length} tasks`;
|
|
@@ -32,7 +32,7 @@ class EndOfRunMessage {
|
|
|
32
32
|
}
|
|
33
33
|
else {
|
|
34
34
|
if (this.runContext.runUrl) {
|
|
35
|
-
message.push(`
|
|
35
|
+
message.push(`View logs and run details at ${this.runContext.runUrl}`);
|
|
36
36
|
}
|
|
37
37
|
}
|
|
38
38
|
if (message.length > 0) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"end-of-run-message.js","sourceRoot":"","sources":["../../../../../../../libs/nx-packages/nx-cloud/lib/core/terminal-output/end-of-run-message.ts"],"names":[],"mappings":";;;AAEA,6DAAqF;AACrF,iEAA6D;AAE7D,MAAa,eAAe;IAC1B,YACmB,UAAsB,EACtB,cAA+B;QAD/B,eAAU,GAAV,UAAU,CAAY;QACtB,mBAAc,GAAd,cAAc,CAAiB;IAC/C,CAAC;IAEJ,qBAAqB;QACnB,IAAI,oDAAsC;YAAE,OAAO;QAEnD,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;YAC3B,OAAO;SACR;QAED,MAAM,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC;QACtE,MAAM,cAAc,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAC/C,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,WAAW,KAAK,YAAY,CACxC,CAAC;QAEF,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc;aAC7B,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,kBAAkB,CAAC;aACtE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;QAE7B,MAAM,OAAO,GAAG,EAAW,CAAC;QAC5B,IAAI,SAAS,EAAE;YACb,OAAO,CAAC,IAAI,
|
|
1
|
+
{"version":3,"file":"end-of-run-message.js","sourceRoot":"","sources":["../../../../../../../libs/nx-packages/nx-cloud/lib/core/terminal-output/end-of-run-message.ts"],"names":[],"mappings":";;;AAEA,6DAAqF;AACrF,iEAA6D;AAE7D,MAAa,eAAe;IAC1B,YACmB,UAAsB,EACtB,cAA+B;QAD/B,eAAU,GAAV,UAAU,CAAY;QACtB,mBAAc,GAAd,cAAc,CAAiB;IAC/C,CAAC;IAEJ,qBAAqB;QACnB,IAAI,oDAAsC;YAAE,OAAO;QAEnD,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;YAC3B,OAAO;SACR;QAED,MAAM,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC;QACtE,MAAM,cAAc,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAC/C,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,WAAW,KAAK,YAAY,CACxC,CAAC;QAEF,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc;aAC7B,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,kBAAkB,CAAC;aACtE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;QAE7B,MAAM,OAAO,GAAG,EAAW,CAAC;QAC5B,IAAI,SAAS,EAAE;YACb,OAAO,CAAC,IAAI,CACV,6CAA6C,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CACtE,CAAC;SACH;aAAM,IAAI,cAAc,EAAE;YACzB,OAAO,CAAC,IAAI,CACV,6CAA6C,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CACtE,CAAC;SACH;aAAM,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;YAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,QAAQ,CAAC;YACnE,OAAO,CAAC,IAAI,CACV,sCAAsC,KAAK,KAAK,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CACzE,CAAC;SACH;aAAM;YACL,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;gBAC1B,OAAO,CAAC,IAAI,CAAC,gCAAgC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;aACxE;SACF;QACD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;YACtB,IAAA,4BAAY,EAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;SACjC;IACH,CAAC;CACF;AA7CD,0CA6CC"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { OutputObfuscator } from './output-obfuscator';
|
|
2
|
+
export declare function readTaskTerminalOutput(cacheDirectory: string | undefined, outputObfuscator: OutputObfuscator, hash: string, cacheStatus: 'remote-cache-hit' | 'local-cache-hit' | 'cache-miss', code: number): string;
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.readTaskTerminalOutput = void 0;
|
|
4
|
+
const path_1 = require("path");
|
|
5
|
+
const { workspaceRoot } = require('../../utilities/nx-imports');
|
|
6
|
+
const environment_1 = require("../../utilities/environment");
|
|
7
|
+
const fs_1 = require("fs");
|
|
8
|
+
const path = require("path");
|
|
9
|
+
const MAX_CHARACTERS_FAILED_TASK = 200000;
|
|
10
|
+
const MAX_CHARACTERS_SUCCESSFUL_TASK = 20000;
|
|
11
|
+
const MAX_CHARACTERS_CACHED_TASK = 20000;
|
|
12
|
+
function readTaskTerminalOutput(cacheDirectory, outputObfuscator, hash, cacheStatus, code) {
|
|
13
|
+
let dir;
|
|
14
|
+
if (cacheDirectory) {
|
|
15
|
+
if (cacheDirectory.startsWith('./')) {
|
|
16
|
+
dir = (0, path_1.join)(workspaceRoot, cacheDirectory);
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
dir = cacheDirectory;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
dir = (0, path_1.join)(workspaceRoot, 'node_modules', '.cache', 'nx');
|
|
24
|
+
}
|
|
25
|
+
try {
|
|
26
|
+
const taskOutput = readTerminalOutputFile(dir, hash);
|
|
27
|
+
const taskOutputSanitized = outputObfuscator.obfuscate(taskOutput);
|
|
28
|
+
if (environment_1.NX_CLOUD_UNLIMITED_OUTPUT)
|
|
29
|
+
return taskOutputSanitized;
|
|
30
|
+
const maxCharacters = cacheStatus === 'cache-miss'
|
|
31
|
+
? code === 0
|
|
32
|
+
? MAX_CHARACTERS_SUCCESSFUL_TASK
|
|
33
|
+
: MAX_CHARACTERS_FAILED_TASK
|
|
34
|
+
: MAX_CHARACTERS_CACHED_TASK;
|
|
35
|
+
return taskOutputSanitized.length > maxCharacters
|
|
36
|
+
? `TRUNCATED\n\n${taskOutputSanitized.slice(taskOutputSanitized.length - maxCharacters)}`
|
|
37
|
+
: taskOutputSanitized;
|
|
38
|
+
}
|
|
39
|
+
catch (e) {
|
|
40
|
+
if (process.env.NX_VERBOSE_LOGGING === 'true') {
|
|
41
|
+
console.error(e);
|
|
42
|
+
}
|
|
43
|
+
return '';
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
exports.readTaskTerminalOutput = readTaskTerminalOutput;
|
|
47
|
+
function readTerminalOutputFile(dir, hash) {
|
|
48
|
+
try {
|
|
49
|
+
return (0, fs_1.readFileSync)(path.join(dir, 'terminalOutputs', hash)).toString();
|
|
50
|
+
}
|
|
51
|
+
catch (_a) {
|
|
52
|
+
try {
|
|
53
|
+
return (0, fs_1.readFileSync)(path.join(dir, hash, 'terminalOutput')).toString();
|
|
54
|
+
}
|
|
55
|
+
catch (_b) {
|
|
56
|
+
return '';
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=read-task-terminal-output.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"read-task-terminal-output.js","sourceRoot":"","sources":["../../../../../../../libs/nx-packages/nx-cloud/lib/core/terminal-output/read-task-terminal-output.ts"],"names":[],"mappings":";;;AAAA,+BAA4B;AAE5B,MAAM,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC,4BAA4B,CAAC,CAAC;AAChE,6DAAwE;AACxE,2BAAkC;AAClC,6BAA6B;AAG7B,MAAM,0BAA0B,GAAG,MAAM,CAAC;AAC1C,MAAM,8BAA8B,GAAG,KAAK,CAAC;AAC7C,MAAM,0BAA0B,GAAG,KAAK,CAAC;AAEzC,SAAgB,sBAAsB,CACpC,cAAkC,EAClC,gBAAkC,EAClC,IAAY,EACZ,WAAkE,EAClE,IAAY;IAEZ,IAAI,GAAG,CAAC;IACR,IAAI,cAAc,EAAE;QAClB,IAAI,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;YACnC,GAAG,GAAG,IAAA,WAAI,EAAC,aAAa,EAAE,cAAc,CAAC,CAAC;SAC3C;aAAM;YACL,GAAG,GAAG,cAAc,CAAC;SACtB;KACF;SAAM;QACL,GAAG,GAAG,IAAA,WAAI,EAAC,aAAa,EAAE,cAAc,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;KAC3D;IACD,IAAI;QACF,MAAM,UAAU,GAAG,sBAAsB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACrD,MAAM,mBAAmB,GAAG,gBAAgB,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QACnE,IAAI,uCAAyB;YAAE,OAAO,mBAAmB,CAAC;QAE1D,MAAM,aAAa,GACjB,WAAW,KAAK,YAAY;YAC1B,CAAC,CAAC,IAAI,KAAK,CAAC;gBACV,CAAC,CAAC,8BAA8B;gBAChC,CAAC,CAAC,0BAA0B;YAC9B,CAAC,CAAC,0BAA0B,CAAC;QACjC,OAAO,mBAAmB,CAAC,MAAM,GAAG,aAAa;YAC/C,CAAC,CAAC,gBAAgB,mBAAmB,CAAC,KAAK,CACvC,mBAAmB,CAAC,MAAM,GAAG,aAAa,CAC3C,EAAE;YACL,CAAC,CAAC,mBAAmB,CAAC;KACzB;IAAC,OAAO,CAAC,EAAE;QACV,IAAI,OAAO,CAAC,GAAG,CAAC,kBAAkB,KAAK,MAAM,EAAE;YAC7C,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SAClB;QACD,OAAO,EAAE,CAAC;KACX;AACH,CAAC;AAvCD,wDAuCC;AAED,SAAS,sBAAsB,CAAC,GAAW,EAAE,IAAY;IACvD,IAAI;QACF,OAAO,IAAA,iBAAY,EAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,iBAAiB,EAAE,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;KACzE;IAAC,WAAM;QACN,IAAI;YACF,OAAO,IAAA,iBAAY,EAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,gBAAgB,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;SACxE;QAAC,WAAM;YACN,OAAO,EAAE,CAAC;SACX;KACF;AACH,CAAC"}
|