@nrwl/nx-cloud 12.5.0 → 12.5.4
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 +4 -4
- package/bin/nx-cloud.js.map +1 -1
- package/lib/core/api/run-group.api.d.ts +1 -1
- package/lib/core/api/run-group.api.js +1 -1
- package/lib/core/api/run-group.api.js.map +1 -1
- package/lib/core/commands/clean-up-agents.js +2 -2
- package/lib/core/commands/clean-up-agents.js.map +1 -1
- package/lib/core/commands/start-ci-run.js +4 -4
- package/lib/core/commands/start-ci-run.js.map +1 -1
- package/lib/core/commands/stop-all-agents.js +3 -3
- package/lib/core/commands/stop-all-agents.js.map +1 -1
- package/lib/core/file-storage/e2e-encryption.js +7 -7
- package/lib/core/file-storage/e2e-encryption.js.map +1 -1
- package/lib/core/file-storage/file-storage.js +43 -24
- package/lib/core/file-storage/file-storage.js.map +1 -1
- package/lib/core/models/run-data.model.d.ts +1 -1
- package/lib/core/runners/cloud-enabled/cloud-enabled.runner.js +1 -1
- package/lib/core/runners/cloud-enabled/cloud-enabled.runner.js.map +1 -1
- package/lib/core/runners/cloud-enabled/cloud-remote-cache.js +1 -1
- package/lib/core/runners/cloud-enabled/cloud-remote-cache.js.map +1 -1
- package/lib/core/runners/cloud-enabled/cloud-run.api.js +1 -1
- package/lib/core/runners/cloud-enabled/cloud-run.api.js.map +1 -1
- package/lib/core/runners/cloud-enabled/task-runner-life-cycle.js +1 -1
- package/lib/core/runners/cloud-enabled/task-runner-life-cycle.js.map +1 -1
- package/lib/core/runners/distributed-agent/distributed-agent.api.js +1 -1
- package/lib/core/runners/distributed-agent/distributed-agent.api.js.map +1 -1
- package/lib/core/runners/distributed-agent/distributed-agent.runner.js +1 -1
- package/lib/core/runners/distributed-agent/distributed-agent.runner.js.map +1 -1
- package/lib/core/runners/distributed-execution/distributed-execution.api.d.ts +1 -1
- package/lib/core/runners/distributed-execution/distributed-execution.api.js +1 -1
- package/lib/core/runners/distributed-execution/distributed-execution.api.js.map +1 -1
- package/lib/core/runners/distributed-execution/distributed-execution.runner.js +1 -1
- package/lib/core/runners/distributed-execution/distributed-execution.runner.js.map +1 -1
- package/lib/core/terminal-output/end-of-run-message.js +1 -1
- package/lib/core/terminal-output/end-of-run-message.js.map +1 -1
- package/lib/core/terminal-output/message-reporter.js +1 -1
- package/lib/core/terminal-output/message-reporter.js.map +1 -1
- package/lib/core/terminal-output/output-obfuscator.js +1 -1
- package/lib/core/terminal-output/output-obfuscator.js.map +1 -1
- package/lib/generators/init/init.js +1 -1
- package/lib/generators/init/init.js.map +1 -1
- package/lib/nx-cloud-tasks-runner.js +7 -7
- package/lib/nx-cloud-tasks-runner.js.map +1 -1
- package/lib/utilities/axios.js +1 -1
- package/lib/utilities/axios.js.map +1 -1
- package/lib/utilities/environment.d.ts +2 -1
- package/lib/utilities/environment.js +7 -6
- package/lib/utilities/environment.js.map +1 -1
- package/lib/utilities/metric-logger.d.ts +34 -0
- package/lib/utilities/metric-logger.js +77 -0
- package/lib/utilities/metric-logger.js.map +1 -0
- package/package.json +1 -1
|
@@ -18,10 +18,10 @@ const axios_1 = require("./utilities/axios");
|
|
|
18
18
|
const cloud_enabled_runner_1 = require("./core/runners/cloud-enabled/cloud-enabled.runner");
|
|
19
19
|
const nxCloudTasksRunner = (tasks, options, context) => {
|
|
20
20
|
if (!environment_1.ACCESS_TOKEN && !options.accessToken) {
|
|
21
|
-
return tasks_runner_v2_1.tasksRunnerV2(tasks, options, context);
|
|
21
|
+
return (0, tasks_runner_v2_1.tasksRunnerV2)(tasks, options, context);
|
|
22
22
|
}
|
|
23
23
|
if (environment_1.INVOKED_BY_RUNNER) {
|
|
24
|
-
return tasks_runner_v2_1.tasksRunnerV2(tasks, options, context);
|
|
24
|
+
return (0, tasks_runner_v2_1.tasksRunnerV2)(tasks, options, context);
|
|
25
25
|
}
|
|
26
26
|
if (environment_1.AGENT_RUNNING_IN_DISTRIBUTED_EXECUTION) {
|
|
27
27
|
verifyAllOperationsAreCacheableOnAgent(tasks, options);
|
|
@@ -30,7 +30,7 @@ const nxCloudTasksRunner = (tasks, options, context) => {
|
|
|
30
30
|
if (process.env.NX_CLOUD_DISTRIBUTED_EXECUTION === 'true' &&
|
|
31
31
|
!environment_1.AGENT_RUNNING_IN_DISTRIBUTED_EXECUTION) {
|
|
32
32
|
verifyAllOperationsAreCacheableOnMainJob(tasks, options);
|
|
33
|
-
return from_1.from(verifyNxCloudWorkspaceEnabled(options)).pipe(switchMap_1.switchMap((res) => {
|
|
33
|
+
return (0, from_1.from)(verifyNxCloudWorkspaceEnabled(options)).pipe((0, switchMap_1.switchMap)((res) => {
|
|
34
34
|
if (res.data.enabled) {
|
|
35
35
|
return require('./core/runners/distributed-execution/distributed-execution.runner').nxCloudDistributedTasksRunner(tasks, options, context);
|
|
36
36
|
}
|
|
@@ -45,15 +45,15 @@ const nxCloudTasksRunner = (tasks, options, context) => {
|
|
|
45
45
|
'Execution will now continue using this machine only.',
|
|
46
46
|
],
|
|
47
47
|
});
|
|
48
|
-
return cloud_enabled_runner_1.cloudEnabledTasksRunner(tasks, options, context);
|
|
48
|
+
return (0, cloud_enabled_runner_1.cloudEnabledTasksRunner)(tasks, options, context);
|
|
49
49
|
}));
|
|
50
50
|
}
|
|
51
|
-
return cloud_enabled_runner_1.cloudEnabledTasksRunner(tasks, options, context);
|
|
51
|
+
return (0, cloud_enabled_runner_1.cloudEnabledTasksRunner)(tasks, options, context);
|
|
52
52
|
};
|
|
53
53
|
function verifyNxCloudWorkspaceEnabled(options) {
|
|
54
54
|
return __awaiter(this, void 0, void 0, function* () {
|
|
55
|
-
const axiosInstance = axios_1.createApiAxiosInstance(options);
|
|
56
|
-
return yield axios_1.axiosMultipleTries(() => axiosInstance.get('/nx-cloud/executions/workspace-status'), 30);
|
|
55
|
+
const axiosInstance = (0, axios_1.createApiAxiosInstance)(options);
|
|
56
|
+
return yield (0, axios_1.axiosMultipleTries)(() => axiosInstance.get('/nx-cloud/executions/workspace-status'), 30);
|
|
57
57
|
});
|
|
58
58
|
}
|
|
59
59
|
function verifyAllOperationsAreCacheableOnMainJob(tasks, options) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nx-cloud-tasks-runner.js","sourceRoot":"","sources":["../../../../../libs/nx-packages/nx-cloud/src/lib/nx-cloud-tasks-runner.ts"],"names":[],"mappings":";;;;;;;;;;;AAMA,wDAAqD;AACrD,iEAA8D;AAC9D,sFAAiF;AACjF,iEAA8D;AAE9D,yDAMiC;AACjC,6CAA+E;AAC/E,4FAA4F;AAE5F,MAAM,kBAAkB,GAAQ,CAC9B,KAAa,EACb,OAA+B,EAC/B,OAAY,EACe,EAAE;IAC7B,IAAI,CAAC,0BAAY,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE;QACzC,OAAO,+BAAa,
|
|
1
|
+
{"version":3,"file":"nx-cloud-tasks-runner.js","sourceRoot":"","sources":["../../../../../libs/nx-packages/nx-cloud/src/lib/nx-cloud-tasks-runner.ts"],"names":[],"mappings":"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"}
|
package/lib/utilities/axios.js
CHANGED
|
@@ -58,7 +58,7 @@ function axiosMultipleTries(axiosCallCreator, attemptsLeft = 10) {
|
|
|
58
58
|
title: `Received ${code}. Retrying in 10 seconds.`,
|
|
59
59
|
});
|
|
60
60
|
}
|
|
61
|
-
yield waiter_1.wait(10000);
|
|
61
|
+
yield (0, waiter_1.wait)(10000);
|
|
62
62
|
return axiosMultipleTries(axiosCallCreator, attemptsLeft - 1);
|
|
63
63
|
}
|
|
64
64
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"axios.js","sourceRoot":"","sources":["../../../../../../libs/nx-packages/nx-cloud/src/lib/utilities/axios.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,iEAA8D;AAC9D,+CAKuB;AACvB,qCAAgC;AAGhC,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;AAE/B,MAAa,cAAc;IACzB,YACkB,IAA2B,EAC3B,OAAe,EACf,cAAmB;QAFnB,SAAI,GAAJ,IAAI,CAAuB;QAC3B,YAAO,GAAP,OAAO,CAAQ;QACf,mBAAc,GAAd,cAAc,CAAK;IAClC,CAAC;CACL;AAND,wCAMC;AAED,SAAgB,sBAAsB,CAAC,OAA+B;IACpE,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,IAAI,qBAAqB,CAAC;IACrD,MAAM,SAAS,GAAG,0BAAY,CAAC,CAAC,CAAC,0BAAY,CAAC,CAAC,CAAC,OAAO,CAAC,WAAY,CAAC;IAErE,IAAI,CAAC,SAAS,EAAE;QACd,MAAM,IAAI,KAAK,CAAC,2BAA2B,SAAS,EAAE,CAAC,CAAC;KACzD;IAED,OAAO,KAAK,CAAC,MAAM,CAAC;QAClB,OAAO,EAAE,OAAO;QAChB,OAAO,EAAE,kCAAoB,CAAC,CAAC,CAAC,+BAAiB,CAAC,CAAC,CAAC,KAAK;QACzD,OAAO,EAAE,EAAE,aAAa,EAAE,SAAS,EAAE;KACtC,CAAC,CAAC;AACL,CAAC;AAbD,wDAaC;AAED,SAAsB,kBAAkB,CACtC,gBAAoC,EACpC,YAAY,GAAG,EAAE;;QAEjB,IAAI;YACF,OAAO,MAAM,gBAAgB,EAAE,CAAC;SACjC;QAAC,OAAO,
|
|
1
|
+
{"version":3,"file":"axios.js","sourceRoot":"","sources":["../../../../../../libs/nx-packages/nx-cloud/src/lib/utilities/axios.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,iEAA8D;AAC9D,+CAKuB;AACvB,qCAAgC;AAGhC,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;AAE/B,MAAa,cAAc;IACzB,YACkB,IAA2B,EAC3B,OAAe,EACf,cAAmB;QAFnB,SAAI,GAAJ,IAAI,CAAuB;QAC3B,YAAO,GAAP,OAAO,CAAQ;QACf,mBAAc,GAAd,cAAc,CAAK;IAClC,CAAC;CACL;AAND,wCAMC;AAED,SAAgB,sBAAsB,CAAC,OAA+B;IACpE,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,IAAI,qBAAqB,CAAC;IACrD,MAAM,SAAS,GAAG,0BAAY,CAAC,CAAC,CAAC,0BAAY,CAAC,CAAC,CAAC,OAAO,CAAC,WAAY,CAAC;IAErE,IAAI,CAAC,SAAS,EAAE;QACd,MAAM,IAAI,KAAK,CAAC,2BAA2B,SAAS,EAAE,CAAC,CAAC;KACzD;IAED,OAAO,KAAK,CAAC,MAAM,CAAC;QAClB,OAAO,EAAE,OAAO;QAChB,OAAO,EAAE,kCAAoB,CAAC,CAAC,CAAC,+BAAiB,CAAC,CAAC,CAAC,KAAK;QACzD,OAAO,EAAE,EAAE,aAAa,EAAE,SAAS,EAAE;KACtC,CAAC,CAAC;AACL,CAAC;AAbD,wDAaC;AAED,SAAsB,kBAAkB,CACtC,gBAAoC,EACpC,YAAY,GAAG,EAAE;;QAEjB,IAAI;YACF,OAAO,MAAM,gBAAgB,EAAE,CAAC;SACjC;QAAC,OAAO,CAAM,EAAE;YACf,MAAM,IAAI,GACR,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;YACxE,IACE,IAAI,KAAK,cAAc;gBACvB,IAAI,KAAK,cAAc;gBACvB,IAAI,KAAK,WAAW;gBACpB,IAAI,KAAK,WAAW;gBACpB,IAAI,KAAK,QAAQ;gBACjB,IAAI,KAAK,GAAG;gBACZ,IAAI,KAAK,GAAG,EACZ;gBACA,IAAI,YAAY,KAAK,CAAC,EAAE;oBACtB,MAAM,IAAI,cAAc,CACtB,SAAS,EACT,qCAAqC,IAAI,EAAE,EAC3C,CAAC,CACF,CAAC;iBACH;qBAAM;oBACL,IAAI,6BAAe,EAAE;wBACnB,eAAM,CAAC,IAAI,CAAC;4BACV,KAAK,EAAE,YAAY,IAAI,2BAA2B;yBACnD,CAAC,CAAC;qBACJ;oBACD,MAAM,IAAA,aAAI,EAAC,KAAK,CAAC,CAAC;oBAClB,OAAO,kBAAkB,CAAC,gBAAgB,EAAE,YAAY,GAAG,CAAC,CAAC,CAAC;iBAC/D;aACF;iBAAM;gBACL,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE;oBACf,MAAM,IAAI,cAAc,CACtB,SAAS,EACT,6CAA6C,CAAC,CAAC,OAAO,EAAE,EACxD,CAAC,CACF,CAAC;iBACH;gBACD,IAAI,OAAO,GAAG,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO;oBACnC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO;oBACzB,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;gBACpB,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;oBAC/B,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC;iBACrB;gBACD,MAAM,IAAI,cAAc,CACtB,SAAS,EACT,6CAA6C,OAAO,EAAE,EACtD,CAAC,CACF,CAAC;aACH;SACF;IACH,CAAC;CAAA;AAtDD,gDAsDC"}
|
|
@@ -7,12 +7,13 @@ export declare const INVOKED_BY_RUNNER: boolean;
|
|
|
7
7
|
export declare const NX_CLOUD_DISTRIBUTED_EXECUTION_ID: string | undefined;
|
|
8
8
|
export declare const AGENT_RUNNING_IN_DISTRIBUTED_EXECUTION: boolean;
|
|
9
9
|
export declare const NUMBER_OF_TRIES: number;
|
|
10
|
+
export declare const NX_CLOUD_FORCE_METRICS: boolean;
|
|
10
11
|
export declare let ACCESS_TOKEN: any;
|
|
11
12
|
export declare let ENCRYPTION_KEY: any;
|
|
12
13
|
export declare let VERBOSE_LOGGING: any;
|
|
13
14
|
export declare let NX_CLOUD_NO_TIMEOUTS: any;
|
|
14
15
|
export declare function extractGitSha(): string | undefined;
|
|
15
16
|
export declare function getRunGroup(): string | undefined;
|
|
16
|
-
export declare function getBranch(): string |
|
|
17
|
+
export declare function getBranch(): string | null;
|
|
17
18
|
export declare function getMachineInfo(options: CloudTaskRunnerOptions): MachineInfo;
|
|
18
19
|
export declare function parseCommand(): string;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.parseCommand = exports.getMachineInfo = exports.getBranch = exports.getRunGroup = exports.extractGitSha = exports.NX_CLOUD_NO_TIMEOUTS = exports.VERBOSE_LOGGING = exports.ENCRYPTION_KEY = exports.ACCESS_TOKEN = exports.NUMBER_OF_TRIES = exports.AGENT_RUNNING_IN_DISTRIBUTED_EXECUTION = exports.NX_CLOUD_DISTRIBUTED_EXECUTION_ID = exports.INVOKED_BY_RUNNER = exports.DISTRIBUTED_TASK_EXECUTION_INTERNAL_ERROR_STATUS_CODE = exports.NO_MESSAGES_TIMEOUT = exports.UNLIMITED_TIMEOUT = void 0;
|
|
3
|
+
exports.parseCommand = exports.getMachineInfo = exports.getBranch = exports.getRunGroup = exports.extractGitSha = exports.NX_CLOUD_NO_TIMEOUTS = exports.VERBOSE_LOGGING = exports.ENCRYPTION_KEY = exports.ACCESS_TOKEN = exports.NX_CLOUD_FORCE_METRICS = exports.NUMBER_OF_TRIES = exports.AGENT_RUNNING_IN_DISTRIBUTED_EXECUTION = exports.NX_CLOUD_DISTRIBUTED_EXECUTION_ID = exports.INVOKED_BY_RUNNER = exports.DISTRIBUTED_TASK_EXECUTION_INTERNAL_ERROR_STATUS_CODE = exports.NO_MESSAGES_TIMEOUT = exports.UNLIMITED_TIMEOUT = void 0;
|
|
4
4
|
const node_machine_id_1 = require("node-machine-id");
|
|
5
5
|
const child_process_1 = require("child_process");
|
|
6
6
|
const fs_1 = require("fs");
|
|
@@ -14,10 +14,11 @@ exports.INVOKED_BY_RUNNER = process.env.NX_INVOKED_BY_RUNNER === 'true';
|
|
|
14
14
|
exports.NX_CLOUD_DISTRIBUTED_EXECUTION_ID = process.env.NX_CLOUD_DISTRIBUTED_EXECUTION_ID;
|
|
15
15
|
exports.AGENT_RUNNING_IN_DISTRIBUTED_EXECUTION = !!exports.NX_CLOUD_DISTRIBUTED_EXECUTION_ID;
|
|
16
16
|
exports.NUMBER_OF_TRIES = exports.AGENT_RUNNING_IN_DISTRIBUTED_EXECUTION ? 3 : 1;
|
|
17
|
+
exports.NX_CLOUD_FORCE_METRICS = process.env.NX_CLOUD_FORCE_METRICS === 'true';
|
|
17
18
|
loadEnvVars();
|
|
18
19
|
function extractGitSha() {
|
|
19
20
|
try {
|
|
20
|
-
return child_process_1.execSync(`git rev-parse HEAD`).toString().trim();
|
|
21
|
+
return (0, child_process_1.execSync)(`git rev-parse HEAD`).toString().trim();
|
|
21
22
|
}
|
|
22
23
|
catch (e) {
|
|
23
24
|
return undefined;
|
|
@@ -26,7 +27,7 @@ function extractGitSha() {
|
|
|
26
27
|
exports.extractGitSha = extractGitSha;
|
|
27
28
|
function parseEnv() {
|
|
28
29
|
try {
|
|
29
|
-
const envContents = fs_1.readFileSync(path_1.join(app_root_1.appRootPath, 'nx-cloud.env'));
|
|
30
|
+
const envContents = (0, fs_1.readFileSync)((0, path_1.join)(app_root_1.appRootPath, 'nx-cloud.env'));
|
|
30
31
|
return dotenv.parse(envContents);
|
|
31
32
|
}
|
|
32
33
|
catch (e) {
|
|
@@ -59,7 +60,7 @@ function getRunGroup() {
|
|
|
59
60
|
return process.env.TRAVIS_BUILD_ID;
|
|
60
61
|
}
|
|
61
62
|
if (process.env.GITHUB_ACTIONS && process.env.GITHUB_RUN_ID) {
|
|
62
|
-
return process.env.GITHUB_RUN_ID
|
|
63
|
+
return `${process.env.GITHUB_RUN_ID}-${process.env.GITHUB_RUN_ATTEMPT}`;
|
|
63
64
|
}
|
|
64
65
|
if (process.env.BUILD_BUILDID) {
|
|
65
66
|
return process.env.BUILD_BUILDID;
|
|
@@ -102,7 +103,7 @@ function getBranch() {
|
|
|
102
103
|
if (process.env.CI_MERGE_REQUEST_SOURCE_BRANCH_NAME !== undefined) {
|
|
103
104
|
return process.env.CI_MERGE_REQUEST_SOURCE_BRANCH_NAME;
|
|
104
105
|
}
|
|
105
|
-
return
|
|
106
|
+
return null;
|
|
106
107
|
}
|
|
107
108
|
exports.getBranch = getBranch;
|
|
108
109
|
function getMachineInfo(options) {
|
|
@@ -111,7 +112,7 @@ function getMachineInfo(options) {
|
|
|
111
112
|
// TODO: vsavkin remove it
|
|
112
113
|
if (options.canTrackAnalytics) {
|
|
113
114
|
try {
|
|
114
|
-
machineId = node_machine_id_1.machineIdSync();
|
|
115
|
+
machineId = (0, node_machine_id_1.machineIdSync)();
|
|
115
116
|
}
|
|
116
117
|
catch (_a) { }
|
|
117
118
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"environment.js","sourceRoot":"","sources":["../../../../../../libs/nx-packages/nx-cloud/src/lib/utilities/environment.ts"],"names":[],"mappings":";;;AACA,qDAAgD;AAEhD,iDAAyC;AACzC,2BAAkC;AAClC,+BAA4B;AAC5B,2DAA2D;AAC3D,iCAAiC;AAEpB,QAAA,iBAAiB,GAAG,OAAO,CAAC;AAC5B,QAAA,mBAAmB,GAAG,OAAO,CAAC,CAAC,aAAa;AAC5C,QAAA,qDAAqD,GAAG,GAAG,CAAC;AAC5D,QAAA,iBAAiB,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,KAAK,MAAM,CAAC;AAChE,QAAA,iCAAiC,GAC5C,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC;AACnC,QAAA,sCAAsC,GACjD,CAAC,CAAC,yCAAiC,CAAC;AACzB,QAAA,eAAe,GAAG,8CAAsC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"environment.js","sourceRoot":"","sources":["../../../../../../libs/nx-packages/nx-cloud/src/lib/utilities/environment.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { CloudTaskRunnerOptions } from '../core/models/cloud-task-runner-options';
|
|
2
|
+
export interface NxCloudPerfEntry {
|
|
3
|
+
durationMs?: number;
|
|
4
|
+
success: boolean;
|
|
5
|
+
statusCode: number;
|
|
6
|
+
}
|
|
7
|
+
export interface FileStoragePerfEntry extends NxCloudPerfEntry {
|
|
8
|
+
fileSize: number;
|
|
9
|
+
}
|
|
10
|
+
export interface NxCloudPerformanceMap {
|
|
11
|
+
storeFile: FileStoragePerfEntry[];
|
|
12
|
+
retrieveFile: FileStoragePerfEntry[];
|
|
13
|
+
startRun: NxCloudPerfEntry[];
|
|
14
|
+
endRun: NxCloudPerfEntry[];
|
|
15
|
+
createRunGroup: NxCloudPerfEntry[];
|
|
16
|
+
completeRunGroup: NxCloudPerfEntry[];
|
|
17
|
+
dtePollTasks: NxCloudPerfEntry[];
|
|
18
|
+
dteStatus: NxCloudPerfEntry[];
|
|
19
|
+
dteStart: NxCloudPerfEntry[];
|
|
20
|
+
}
|
|
21
|
+
export interface MetricRecorder {
|
|
22
|
+
recordMetric: <T extends NxCloudPerfEntry>(metadata: T) => void;
|
|
23
|
+
}
|
|
24
|
+
export declare const createMetricRecorder: (type: string) => MetricRecorder;
|
|
25
|
+
/**
|
|
26
|
+
* Handles creating metadata for metrics that only need an NxCloudPerfEntry
|
|
27
|
+
* @param resp response from nx-api
|
|
28
|
+
*/
|
|
29
|
+
export declare const mapRespToPerfEntry: (resp: any) => NxCloudPerfEntry;
|
|
30
|
+
/**
|
|
31
|
+
* Constant to represent metrics when something goes wrong on the runner side
|
|
32
|
+
*/
|
|
33
|
+
export declare const RUNNER_FAILURE_PERF_ENTRY: NxCloudPerfEntry;
|
|
34
|
+
export declare const submitRunMetrics: (options: CloudTaskRunnerOptions) => any;
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.submitRunMetrics = exports.RUNNER_FAILURE_PERF_ENTRY = exports.mapRespToPerfEntry = exports.createMetricRecorder = void 0;
|
|
4
|
+
const perf_hooks_1 = require("perf_hooks");
|
|
5
|
+
const axios_1 = require("./axios");
|
|
6
|
+
const environment_1 = require("./environment");
|
|
7
|
+
const print_message_1 = require("./print-message");
|
|
8
|
+
const performanceEntries = {
|
|
9
|
+
storeFile: [],
|
|
10
|
+
retrieveFile: [],
|
|
11
|
+
startRun: [],
|
|
12
|
+
endRun: [],
|
|
13
|
+
createRunGroup: [],
|
|
14
|
+
completeRunGroup: [],
|
|
15
|
+
dtePollTasks: [],
|
|
16
|
+
dteStatus: [],
|
|
17
|
+
dteStart: [],
|
|
18
|
+
};
|
|
19
|
+
const createMetricRecorder = (type) => {
|
|
20
|
+
const startTime = perf_hooks_1.performance.now();
|
|
21
|
+
const recorder = {
|
|
22
|
+
recordMetric: (metadata) => {
|
|
23
|
+
const endTime = perf_hooks_1.performance.now();
|
|
24
|
+
metadata.durationMs = endTime - startTime;
|
|
25
|
+
performanceEntries[type].push(metadata);
|
|
26
|
+
},
|
|
27
|
+
};
|
|
28
|
+
return recorder;
|
|
29
|
+
};
|
|
30
|
+
exports.createMetricRecorder = createMetricRecorder;
|
|
31
|
+
/**
|
|
32
|
+
* Handles creating metadata for metrics that only need an NxCloudPerfEntry
|
|
33
|
+
* @param resp response from nx-api
|
|
34
|
+
*/
|
|
35
|
+
const mapRespToPerfEntry = (resp) => {
|
|
36
|
+
var _a, _b, _c;
|
|
37
|
+
return ({
|
|
38
|
+
success: (_b = (_a = resp === null || resp === void 0 ? void 0 : resp.status) === null || _a === void 0 ? void 0 : _a.toString().startsWith('2')) !== null && _b !== void 0 ? _b : false,
|
|
39
|
+
statusCode: (_c = resp === null || resp === void 0 ? void 0 : resp.status) !== null && _c !== void 0 ? _c : -1,
|
|
40
|
+
});
|
|
41
|
+
};
|
|
42
|
+
exports.mapRespToPerfEntry = mapRespToPerfEntry;
|
|
43
|
+
/**
|
|
44
|
+
* Constant to represent metrics when something goes wrong on the runner side
|
|
45
|
+
*/
|
|
46
|
+
exports.RUNNER_FAILURE_PERF_ENTRY = {
|
|
47
|
+
success: false,
|
|
48
|
+
statusCode: -1,
|
|
49
|
+
};
|
|
50
|
+
const CI_SAMPLE_RATE = 0.1; // Record metrics for 1/10 CI runs
|
|
51
|
+
const NON_CI_SAMPLE_RATE = 0.02; // Record metrics for 1/50 non-CI runs
|
|
52
|
+
const submitRunMetrics = (options) => {
|
|
53
|
+
let sampleRate;
|
|
54
|
+
if ((0, environment_1.getBranch)()) {
|
|
55
|
+
sampleRate = CI_SAMPLE_RATE;
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
sampleRate = NON_CI_SAMPLE_RATE;
|
|
59
|
+
}
|
|
60
|
+
try {
|
|
61
|
+
if (environment_1.NX_CLOUD_FORCE_METRICS || Math.random() < sampleRate) {
|
|
62
|
+
if (environment_1.VERBOSE_LOGGING) {
|
|
63
|
+
(0, print_message_1.printMessage)('Submitting runner metrics for this run.');
|
|
64
|
+
}
|
|
65
|
+
const axiosInstance = (0, axios_1.createApiAxiosInstance)(options);
|
|
66
|
+
return axiosInstance
|
|
67
|
+
.post('/nx-cloud/save-metrics', Object.assign({ branch: (0, environment_1.getBranch)() }, performanceEntries))
|
|
68
|
+
.catch((e) => { });
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
return Promise.resolve();
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
catch (e) { }
|
|
75
|
+
};
|
|
76
|
+
exports.submitRunMetrics = submitRunMetrics;
|
|
77
|
+
//# sourceMappingURL=metric-logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metric-logger.js","sourceRoot":"","sources":["../../../../../../libs/nx-packages/nx-cloud/src/lib/utilities/metric-logger.ts"],"names":[],"mappings":";;;AAAA,2CAAyC;AACzC,mCAAqE;AACrE,+CAKuB;AAEvB,mDAA+C;AAwB/C,MAAM,kBAAkB,GAA0B;IAChD,SAAS,EAAE,EAAE;IACb,YAAY,EAAE,EAAE;IAChB,QAAQ,EAAE,EAAE;IACZ,MAAM,EAAE,EAAE;IACV,cAAc,EAAE,EAAE;IAClB,gBAAgB,EAAE,EAAE;IACpB,YAAY,EAAE,EAAE;IAChB,SAAS,EAAE,EAAE;IACb,QAAQ,EAAE,EAAE;CACb,CAAC;AAMK,MAAM,oBAAoB,GAAG,CAAC,IAAY,EAAkB,EAAE;IACnE,MAAM,SAAS,GAAG,wBAAW,CAAC,GAAG,EAAE,CAAC;IAEpC,MAAM,QAAQ,GAAmB;QAC/B,YAAY,EAAE,CAAC,QAAQ,EAAE,EAAE;YACzB,MAAM,OAAO,GAAG,wBAAW,CAAC,GAAG,EAAE,CAAC;YAClC,QAAQ,CAAC,UAAU,GAAG,OAAO,GAAG,SAAS,CAAC;YAE1C,kBAAkB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC1C,CAAC;KACF,CAAC;IAEF,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC;AAbW,QAAA,oBAAoB,wBAa/B;AAEF;;;GAGG;AACI,MAAM,kBAAkB,GAAG,CAAC,IAAS,EAAoB,EAAE;;IAAC,OAAA,CAAC;QAClE,OAAO,EAAE,MAAA,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,MAAM,0CAAE,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,mCAAI,KAAK;QAC1D,UAAU,EAAE,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,MAAM,mCAAI,CAAC,CAAC;KAC/B,CAAC,CAAA;CAAA,CAAC;AAHU,QAAA,kBAAkB,sBAG5B;AAEH;;GAEG;AACU,QAAA,yBAAyB,GAAqB;IACzD,OAAO,EAAE,KAAK;IACd,UAAU,EAAE,CAAC,CAAC;CACf,CAAC;AAEF,MAAM,cAAc,GAAG,GAAG,CAAC,CAAC,kCAAkC;AAC9D,MAAM,kBAAkB,GAAG,IAAI,CAAC,CAAC,sCAAsC;AAEhE,MAAM,gBAAgB,GAAG,CAAC,OAA+B,EAAE,EAAE;IAClE,IAAI,UAAU,CAAC;IACf,IAAI,IAAA,uBAAS,GAAE,EAAE;QACf,UAAU,GAAG,cAAc,CAAC;KAC7B;SAAM;QACL,UAAU,GAAG,kBAAkB,CAAC;KACjC;IAED,IAAI;QACF,IAAI,oCAAsB,IAAI,IAAI,CAAC,MAAM,EAAE,GAAG,UAAU,EAAE;YACxD,IAAI,6BAAe,EAAE;gBACnB,IAAA,4BAAY,EAAC,yCAAyC,CAAC,CAAC;aACzD;YAED,MAAM,aAAa,GAAG,IAAA,8BAAsB,EAAC,OAAO,CAAC,CAAC;YAEtD,OAAO,aAAa;iBACjB,IAAI,CAAC,wBAAwB,kBAC5B,MAAM,EAAE,IAAA,uBAAS,GAAE,IAChB,kBAAkB,EACrB;iBACD,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,GAAE,CAAC,CAAC,CAAC;SACrB;aAAM;YACL,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;SAC1B;KACF;IAAC,OAAO,CAAC,EAAE,GAAE;AAChB,CAAC,CAAC;AA1BW,QAAA,gBAAgB,oBA0B3B"}
|