@nrwl/nx-cloud 14.0.3-beta.1 → 14.0.3-beta.2

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.
Files changed (121) hide show
  1. package/bin/nx-cloud.d.ts +2 -0
  2. package/bin/nx-cloud.js +43 -0
  3. package/bin/nx-cloud.js.map +1 -0
  4. package/index.d.ts +2 -0
  5. package/index.js +5 -0
  6. package/index.js.map +1 -0
  7. package/lib/core/api/run-group.api.d.ts +7 -0
  8. package/lib/core/api/run-group.api.js +65 -0
  9. package/lib/core/api/run-group.api.js.map +1 -0
  10. package/lib/core/commands/clean-up-agents.d.ts +1 -0
  11. package/lib/core/commands/clean-up-agents.js +34 -0
  12. package/lib/core/commands/clean-up-agents.js.map +1 -0
  13. package/lib/core/commands/record-output.d.ts +16 -0
  14. package/lib/core/commands/record-output.js +203 -0
  15. package/lib/core/commands/record-output.js.map +1 -0
  16. package/lib/core/commands/start-ci-run.d.ts +1 -0
  17. package/lib/core/commands/start-ci-run.js +38 -0
  18. package/lib/core/commands/start-ci-run.js.map +1 -0
  19. package/lib/core/commands/stop-all-agents.d.ts +1 -0
  20. package/lib/core/commands/stop-all-agents.js +37 -0
  21. package/lib/core/commands/stop-all-agents.js.map +1 -0
  22. package/lib/core/error/print-run-group-error.d.ts +1 -0
  23. package/lib/core/error/print-run-group-error.js +16 -0
  24. package/lib/core/error/print-run-group-error.js.map +1 -0
  25. package/lib/core/file-storage/e2e-encryption.d.ts +9 -0
  26. package/lib/core/file-storage/e2e-encryption.js +46 -0
  27. package/lib/core/file-storage/e2e-encryption.js.map +1 -0
  28. package/lib/core/file-storage/file-storage.d.ts +13 -0
  29. package/lib/core/file-storage/file-storage.js +174 -0
  30. package/lib/core/file-storage/file-storage.js.map +1 -0
  31. package/lib/core/models/cache-urls.model.d.ts +6 -0
  32. package/lib/core/models/cache-urls.model.js +3 -0
  33. package/lib/core/models/cache-urls.model.js.map +1 -0
  34. package/lib/core/models/cloud-task-runner-options.d.ts +20 -0
  35. package/lib/core/models/cloud-task-runner-options.js +3 -0
  36. package/lib/core/models/cloud-task-runner-options.js.map +1 -0
  37. package/lib/core/models/distributed-agent/grouped-tasks.model.d.ts +6 -0
  38. package/lib/core/models/distributed-agent/grouped-tasks.model.js +3 -0
  39. package/lib/core/models/distributed-agent/grouped-tasks.model.js.map +1 -0
  40. package/lib/core/models/distributed-agent/index.d.ts +3 -0
  41. package/lib/core/models/distributed-agent/index.js +20 -0
  42. package/lib/core/models/distributed-agent/index.js.map +1 -0
  43. package/lib/core/models/distributed-agent/task-to-execute.model.d.ts +7 -0
  44. package/lib/core/models/distributed-agent/task-to-execute.model.js +3 -0
  45. package/lib/core/models/distributed-agent/task-to-execute.model.js.map +1 -0
  46. package/lib/core/models/distributed-agent/tasks-api-response.model.d.ts +9 -0
  47. package/lib/core/models/distributed-agent/tasks-api-response.model.js +3 -0
  48. package/lib/core/models/distributed-agent/tasks-api-response.model.js.map +1 -0
  49. package/lib/core/models/machine-info.model.d.ts +6 -0
  50. package/lib/core/models/machine-info.model.js +3 -0
  51. package/lib/core/models/machine-info.model.js.map +1 -0
  52. package/lib/core/models/run-context.model.d.ts +42 -0
  53. package/lib/core/models/run-context.model.js +3 -0
  54. package/lib/core/models/run-context.model.js.map +1 -0
  55. package/lib/core/models/run-data.model.d.ts +11 -0
  56. package/lib/core/models/run-data.model.js +3 -0
  57. package/lib/core/models/run-data.model.js.map +1 -0
  58. package/lib/core/models/task-execution.model.d.ts +13 -0
  59. package/lib/core/models/task-execution.model.js +3 -0
  60. package/lib/core/models/task-execution.model.js.map +1 -0
  61. package/lib/core/runners/cloud-enabled/cloud-enabled-life-cycle.d.ts +25 -0
  62. package/lib/core/runners/cloud-enabled/cloud-enabled-life-cycle.js +138 -0
  63. package/lib/core/runners/cloud-enabled/cloud-enabled-life-cycle.js.map +1 -0
  64. package/lib/core/runners/cloud-enabled/cloud-enabled.runner.d.ts +4 -0
  65. package/lib/core/runners/cloud-enabled/cloud-enabled.runner.js +167 -0
  66. package/lib/core/runners/cloud-enabled/cloud-enabled.runner.js.map +1 -0
  67. package/lib/core/runners/cloud-enabled/cloud-remote-cache.d.ts +16 -0
  68. package/lib/core/runners/cloud-enabled/cloud-remote-cache.js +113 -0
  69. package/lib/core/runners/cloud-enabled/cloud-remote-cache.js.map +1 -0
  70. package/lib/core/runners/cloud-enabled/cloud-run.api.d.ts +17 -0
  71. package/lib/core/runners/cloud-enabled/cloud-run.api.js +158 -0
  72. package/lib/core/runners/cloud-enabled/cloud-run.api.js.map +1 -0
  73. package/lib/core/runners/distributed-agent/distributed-agent.api.d.ts +13 -0
  74. package/lib/core/runners/distributed-agent/distributed-agent.api.js +79 -0
  75. package/lib/core/runners/distributed-agent/distributed-agent.api.js.map +1 -0
  76. package/lib/core/runners/distributed-agent/distributed-agent.impl.d.ts +1 -0
  77. package/lib/core/runners/distributed-agent/distributed-agent.impl.js +239 -0
  78. package/lib/core/runners/distributed-agent/distributed-agent.impl.js.map +1 -0
  79. package/lib/core/runners/distributed-execution/distributed-execution.api.d.ts +10 -0
  80. package/lib/core/runners/distributed-execution/distributed-execution.api.js +130 -0
  81. package/lib/core/runners/distributed-execution/distributed-execution.api.js.map +1 -0
  82. package/lib/core/runners/distributed-execution/distributed-execution.runner.d.ts +12 -0
  83. package/lib/core/runners/distributed-execution/distributed-execution.runner.js +306 -0
  84. package/lib/core/runners/distributed-execution/distributed-execution.runner.js.map +1 -0
  85. package/lib/core/terminal-output/end-of-run-message.d.ts +8 -0
  86. package/lib/core/terminal-output/end-of-run-message.js +37 -0
  87. package/lib/core/terminal-output/end-of-run-message.js.map +1 -0
  88. package/lib/core/terminal-output/message-reporter.d.ts +11 -0
  89. package/lib/core/terminal-output/message-reporter.js +71 -0
  90. package/lib/core/terminal-output/message-reporter.js.map +1 -0
  91. package/lib/core/terminal-output/output-obfuscator.d.ts +6 -0
  92. package/lib/core/terminal-output/output-obfuscator.js +48 -0
  93. package/lib/core/terminal-output/output-obfuscator.js.map +1 -0
  94. package/lib/generators/init/init.d.ts +2 -0
  95. package/lib/generators/init/init.js +126 -0
  96. package/lib/generators/init/init.js.map +1 -0
  97. package/lib/nx-cloud-tasks-runner.d.ts +2 -0
  98. package/lib/nx-cloud-tasks-runner.js +102 -0
  99. package/lib/nx-cloud-tasks-runner.js.map +1 -0
  100. package/lib/utilities/axios.d.ts +9 -0
  101. package/lib/utilities/axios.js +73 -0
  102. package/lib/utilities/axios.js.map +1 -0
  103. package/lib/utilities/create-no-new-messages-timeout.d.ts +1 -0
  104. package/lib/utilities/create-no-new-messages-timeout.js +25 -0
  105. package/lib/utilities/create-no-new-messages-timeout.js.map +1 -0
  106. package/lib/utilities/environment.d.ts +24 -0
  107. package/lib/utilities/environment.js +156 -0
  108. package/lib/utilities/environment.js.map +1 -0
  109. package/lib/utilities/metric-logger.d.ts +22 -0
  110. package/lib/utilities/metric-logger.js +70 -0
  111. package/lib/utilities/metric-logger.js.map +1 -0
  112. package/lib/utilities/nx-imports.d.ts +0 -0
  113. package/lib/utilities/nx-imports.js +39 -0
  114. package/lib/utilities/nx-imports.js.map +1 -0
  115. package/lib/utilities/print-message.d.ts +1 -0
  116. package/lib/utilities/print-message.js +35 -0
  117. package/lib/utilities/print-message.js.map +1 -0
  118. package/lib/utilities/waiter.d.ts +6 -0
  119. package/lib/utilities/waiter.js +36 -0
  120. package/lib/utilities/waiter.js.map +1 -0
  121. package/package.json +1 -1
@@ -0,0 +1,167 @@
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.cloudEnabledTasksRunner = void 0;
13
+ const Subject_1 = require("rxjs/internal/Subject");
14
+ const message_reporter_1 = require("../../terminal-output/message-reporter");
15
+ const end_of_run_message_1 = require("../../terminal-output/end-of-run-message");
16
+ const output_obfuscator_1 = require("../../terminal-output/output-obfuscator");
17
+ const cloud_enabled_life_cycle_1 = require("./cloud-enabled-life-cycle");
18
+ const file_storage_1 = require("../../file-storage/file-storage");
19
+ const e2e_encryption_1 = require("../../file-storage/e2e-encryption");
20
+ const environment_1 = require("../../../utilities/environment");
21
+ const cloud_remote_cache_1 = require("./cloud-remote-cache");
22
+ const cloud_run_api_1 = require("./cloud-run.api");
23
+ const fs_1 = require("fs");
24
+ const path = require("path");
25
+ const metric_logger_1 = require("../../../utilities/metric-logger");
26
+ const { tasksRunnerV2, output } = require('../../../utilities/nx-imports');
27
+ function createApi(errors, options, runContext) {
28
+ const machineInfo = (0, environment_1.getMachineInfo)(options);
29
+ return new cloud_run_api_1.CloudRunApi(errors, runContext, options, machineInfo);
30
+ }
31
+ function storeTaskHashes(taskExecutions, directory, distributedExecutionId) {
32
+ const hashes = JSON.stringify(taskExecutions.map((t) => ({
33
+ taskId: t.taskId,
34
+ hash: t.hash,
35
+ })));
36
+ if (environment_1.VERBOSE_LOGGING) {
37
+ output.note({
38
+ title: `Executed tasks with hashes: ${hashes}`,
39
+ });
40
+ }
41
+ (0, fs_1.writeFileSync)(path.join(directory, `tasks-hashes-${distributedExecutionId}`), hashes);
42
+ }
43
+ function onComplete(lifeCycle, options, remoteCache, api, outputObfuscator, runStartTime, messages, endOfRunMessage, taskExecutions, versionOfNxBefore133, inner) {
44
+ return __awaiter(this, void 0, void 0, function* () {
45
+ const runEndTime = new Date().toISOString();
46
+ if (environment_1.AGENT_RUNNING_IN_DISTRIBUTED_EXECUTION) {
47
+ storeTaskHashes(taskExecutions, options.cacheDirectory || './node_modules/.cache/nx', environment_1.NX_CLOUD_DISTRIBUTED_EXECUTION_ID);
48
+ }
49
+ const branch = (0, environment_1.getBranch)();
50
+ const endRequest = yield Promise.all([
51
+ remoteCache.waitForStoreRequestsToComplete(),
52
+ api.endRun({
53
+ command: outputObfuscator.obfuscate((0, environment_1.parseCommand)()),
54
+ startTime: runStartTime,
55
+ endTime: runEndTime,
56
+ distributedExecutionId: environment_1.NX_CLOUD_DISTRIBUTED_EXECUTION_ID,
57
+ branch: branch,
58
+ scan: true,
59
+ runGroup: (0, environment_1.getRunGroup)(),
60
+ // only set sha if branch is set because we invoke a separate process,
61
+ // which adds a few millis
62
+ sha: branch ? (0, environment_1.extractGitSha)() : undefined,
63
+ inner: inner,
64
+ }, taskExecutions),
65
+ ]);
66
+ // this workaround is required because prior to Nx 13.3 we printed
67
+ // the end message after the runner completes, so we need to wait for the
68
+ // message to appear in the right place
69
+ if (versionOfNxBefore133) {
70
+ setTimeout(() => {
71
+ messages.printMessages();
72
+ if (!messages.anyErrors && !inner) {
73
+ endOfRunMessage.printCacheHitsMessage();
74
+ }
75
+ }, 0);
76
+ }
77
+ else {
78
+ messages.printMessages();
79
+ if (!messages.anyErrors && !inner) {
80
+ endOfRunMessage.printCacheHitsMessage();
81
+ }
82
+ }
83
+ if (environment_1.AGENT_RUNNING_IN_DISTRIBUTED_EXECUTION) {
84
+ if (!endRequest[0]) {
85
+ output.error({
86
+ title: `Agent wasn't able to store artifacts`,
87
+ });
88
+ messages.printMessages();
89
+ process.exit(environment_1.DISTRIBUTED_TASK_EXECUTION_INTERNAL_ERROR_STATUS_CODE);
90
+ }
91
+ if (!endRequest[1]) {
92
+ output.error({
93
+ title: `Agent wasn't able to record its run`,
94
+ });
95
+ messages.printMessages();
96
+ process.exit(environment_1.DISTRIBUTED_TASK_EXECUTION_INTERNAL_ERROR_STATUS_CODE);
97
+ }
98
+ }
99
+ yield (0, metric_logger_1.submitRunMetrics)(options);
100
+ });
101
+ }
102
+ function createLifeCycle(runContext, options, outputObfuscator, tasks) {
103
+ const cloudEnabledLifeCycle = new cloud_enabled_life_cycle_1.CloudEnabledLifeCycle(runContext, options.cacheDirectory, !!options.skipNxCache, options.scan === undefined ? true : options.scan, options.cacheableOperations || [], outputObfuscator, tasks);
104
+ try {
105
+ const { CompositeLifeCycle } = require('../../../utilities/nx-imports');
106
+ if (!CompositeLifeCycle)
107
+ return cloudEnabledLifeCycle;
108
+ return new CompositeLifeCycle([options.lifeCycle, cloudEnabledLifeCycle]);
109
+ }
110
+ catch (e) {
111
+ return cloudEnabledLifeCycle;
112
+ }
113
+ }
114
+ function cloudEnabledTasksRunner(tasks, options, context, inner = false) {
115
+ const runContext = {
116
+ statuses: {},
117
+ scheduledTasks: [],
118
+ requests: {},
119
+ allTasks: tasks,
120
+ };
121
+ const versionOfNxBefore133 = options.lifeCycle === undefined;
122
+ const taskExecutions = [];
123
+ const messages = new message_reporter_1.MessageReporter(options);
124
+ const api = createApi(messages, options, runContext);
125
+ const endOfRunMessage = new end_of_run_message_1.EndOfRunMessage(runContext, taskExecutions);
126
+ const outputObfuscator = new output_obfuscator_1.OutputObfuscator(options.maskedProperties);
127
+ const hashes = tasks.map((t) => t.hash).filter((h) => !!h);
128
+ const startRunRequest = api.startRun(environment_1.NX_CLOUD_DISTRIBUTED_EXECUTION_ID, hashes);
129
+ hashes.forEach((hash) => {
130
+ runContext.requests[hash] = startRunRequest;
131
+ });
132
+ const runStartTime = new Date().toISOString();
133
+ const lifeCycle = createLifeCycle(runContext, options, outputObfuscator, taskExecutions);
134
+ const encryption = new e2e_encryption_1.E2EEncryption(environment_1.ENCRYPTION_KEY || options.encryptionKey);
135
+ const fileStorage = new file_storage_1.FileStorage(encryption);
136
+ const remoteCache = new cloud_remote_cache_1.CloudRemoteCache(messages, api, runContext, fileStorage);
137
+ // have to reset it so we don't capture inner tasks
138
+ delete process.env.NX_CLOUD_DISTRIBUTED_EXECUTION_ID;
139
+ const res = tasksRunnerV2(tasks, Object.assign(Object.assign({}, options), { remoteCache, lifeCycle }), context);
140
+ // observable -> legacy
141
+ if (res.subscribe) {
142
+ const wrappedRes = new Subject_1.Subject();
143
+ res.subscribe({
144
+ next: (value) => wrappedRes.next(value),
145
+ error: (err) => wrappedRes.error(err),
146
+ complete: () => __awaiter(this, void 0, void 0, function* () {
147
+ yield onComplete(lifeCycle, options, remoteCache, api, outputObfuscator, runStartTime, messages, endOfRunMessage, taskExecutions, versionOfNxBefore133, inner);
148
+ wrappedRes.complete();
149
+ }),
150
+ });
151
+ return wrappedRes;
152
+ // promise
153
+ }
154
+ else {
155
+ return res
156
+ .then((r) => __awaiter(this, void 0, void 0, function* () {
157
+ yield onComplete(lifeCycle, options, remoteCache, api, outputObfuscator, runStartTime, messages, endOfRunMessage, taskExecutions, versionOfNxBefore133, inner);
158
+ return r;
159
+ }))
160
+ .catch((e) => __awaiter(this, void 0, void 0, function* () {
161
+ yield onComplete(lifeCycle, options, remoteCache, api, outputObfuscator, runStartTime, messages, endOfRunMessage, taskExecutions, versionOfNxBefore133, inner);
162
+ throw e;
163
+ }));
164
+ }
165
+ }
166
+ exports.cloudEnabledTasksRunner = cloudEnabledTasksRunner;
167
+ //# sourceMappingURL=cloud-enabled.runner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloud-enabled.runner.js","sourceRoot":"","sources":["../../../../../../../../libs/nx-packages/nx-cloud/lib/core/runners/cloud-enabled/cloud-enabled.runner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { CloudRunApi } from './cloud-run.api';
2
+ import { RunContext } from '../../models/run-context.model';
3
+ import { FileStorage } from '../../file-storage/file-storage';
4
+ import { MessageReporter } from '../../terminal-output/message-reporter';
5
+ export declare class CloudRemoteCache {
6
+ private readonly messages;
7
+ private readonly api;
8
+ private readonly runContext;
9
+ private readonly fileStorage;
10
+ private readonly storeRequests;
11
+ constructor(messages: MessageReporter, api: CloudRunApi, runContext: RunContext, fileStorage: FileStorage);
12
+ retrieve(hash: string, cacheDirectory: string): Promise<boolean>;
13
+ store(hash: string, cacheDirectory: string): Promise<boolean>;
14
+ private hashUrls;
15
+ waitForStoreRequestsToComplete(): Promise<boolean>;
16
+ }
@@ -0,0 +1,113 @@
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.CloudRemoteCache = void 0;
13
+ const environment_1 = require("../../../utilities/environment");
14
+ const { output } = require('../../../utilities/nx-imports');
15
+ class CloudRemoteCache {
16
+ constructor(messages, api, runContext, fileStorage) {
17
+ this.messages = messages;
18
+ this.api = api;
19
+ this.runContext = runContext;
20
+ this.fileStorage = fileStorage;
21
+ this.storeRequests = [];
22
+ }
23
+ retrieve(hash, cacheDirectory) {
24
+ var _a;
25
+ return __awaiter(this, void 0, void 0, function* () {
26
+ if (this.messages.cacheError)
27
+ return false;
28
+ const hashUrls = yield this.hashUrls(hash);
29
+ if (!hashUrls || !hashUrls.get) {
30
+ if (environment_1.VERBOSE_LOGGING) {
31
+ output.note({ title: `Nx Cloud: Cache miss ${hash}.` });
32
+ }
33
+ this.runContext.statuses[hash] = 'cache-miss';
34
+ return false;
35
+ }
36
+ try {
37
+ yield this.fileStorage.retrieve(hash, hashUrls.get, cacheDirectory);
38
+ this.runContext.statuses[hash] = 'remote-cache-hit';
39
+ return true;
40
+ }
41
+ catch (ee) {
42
+ const e = (_a = ee.axiosException) !== null && _a !== void 0 ? _a : ee;
43
+ if (e.response && e.response.status === 404) {
44
+ if (environment_1.VERBOSE_LOGGING) {
45
+ output.note({ title: `Nx Cloud: Cache miss ${hash}. Status 404.` });
46
+ }
47
+ // cache miss. print nothing
48
+ }
49
+ else {
50
+ this.messages.cacheError = this.messages.extractErrorMessage(e, 'storage');
51
+ }
52
+ this.runContext.statuses[hash] = 'cache-miss';
53
+ return false;
54
+ }
55
+ });
56
+ }
57
+ store(hash, cacheDirectory) {
58
+ return __awaiter(this, void 0, void 0, function* () {
59
+ if (this.messages.cacheError)
60
+ return false;
61
+ const res = Promise.resolve().then(() => __awaiter(this, void 0, void 0, function* () {
62
+ var _a;
63
+ const hashUrls = yield this.hashUrls(hash);
64
+ if (!hashUrls)
65
+ return false;
66
+ if (!hashUrls.put) {
67
+ if (environment_1.VERBOSE_LOGGING) {
68
+ output.note({
69
+ title: `Nx Cloud: Skipping storing ${hash}. Read only token is used.`,
70
+ });
71
+ }
72
+ return true;
73
+ }
74
+ try {
75
+ yield this.fileStorage.store(hash, hashUrls.put, cacheDirectory);
76
+ return true;
77
+ }
78
+ catch (ee) {
79
+ const e = (_a = ee.axiosException) !== null && _a !== void 0 ? _a : ee;
80
+ this.messages.cacheError = this.messages.extractErrorMessage(e, 'storage');
81
+ return false;
82
+ }
83
+ }));
84
+ this.storeRequests.push(res);
85
+ return res;
86
+ });
87
+ }
88
+ hashUrls(hash) {
89
+ return __awaiter(this, void 0, void 0, function* () {
90
+ if (hash in this.runContext.requests) {
91
+ return (yield this.runContext.requests[hash])[hash];
92
+ }
93
+ else {
94
+ const scheduledTaskHashesWithoutRequests = this.runContext.scheduledTasks
95
+ .filter((t) => !this.runContext.requests[t.hash])
96
+ .map((t) => t.hash);
97
+ if (scheduledTaskHashesWithoutRequests.indexOf(hash) === -1) {
98
+ scheduledTaskHashesWithoutRequests.push(hash);
99
+ }
100
+ const request = this.api.startRun(environment_1.NX_CLOUD_DISTRIBUTED_EXECUTION_ID, scheduledTaskHashesWithoutRequests);
101
+ scheduledTaskHashesWithoutRequests.forEach((taskHash) => {
102
+ this.runContext.requests[taskHash] = request;
103
+ });
104
+ return (yield request)[hash];
105
+ }
106
+ });
107
+ }
108
+ waitForStoreRequestsToComplete() {
109
+ return Promise.all(this.storeRequests).then((r) => r.reduce((a, b) => a && b, true));
110
+ }
111
+ }
112
+ exports.CloudRemoteCache = CloudRemoteCache;
113
+ //# sourceMappingURL=cloud-remote-cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloud-remote-cache.js","sourceRoot":"","sources":["../../../../../../../../libs/nx-packages/nx-cloud/lib/core/runners/cloud-enabled/cloud-remote-cache.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import { RunContext } from '../../models/run-context.model';
2
+ import { MachineInfo } from '../../models/machine-info.model';
3
+ import { CacheUrls } from '../../models/cache-urls.model';
4
+ import { CloudTaskRunnerOptions } from '../../models/cloud-task-runner-options';
5
+ import { RunData } from '../../models/run-data.model';
6
+ import { MessageReporter } from '../../terminal-output/message-reporter';
7
+ import { TaskExecution } from '../../models/task-execution.model';
8
+ export declare class CloudRunApi {
9
+ private readonly messages;
10
+ private readonly runContext;
11
+ private readonly machineInfo;
12
+ private apiAxiosInstance;
13
+ constructor(messages: MessageReporter, runContext: RunContext, options: CloudTaskRunnerOptions, machineInfo: MachineInfo);
14
+ startRun(distributedExecutionId: string | undefined, hashes: string[]): Promise<CacheUrls>;
15
+ endRun(run: RunData, tasks: TaskExecution[]): Promise<boolean>;
16
+ private nxCloudVersion;
17
+ }
@@ -0,0 +1,158 @@
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.CloudRunApi = void 0;
13
+ const axios_1 = require("../../../utilities/axios");
14
+ const environment_1 = require("../../../utilities/environment");
15
+ const fs_1 = require("fs");
16
+ const zlib_1 = require("zlib");
17
+ const util_1 = require("util");
18
+ const metric_logger_1 = require("../../../utilities/metric-logger");
19
+ const { output } = require('../../../utilities/nx-imports');
20
+ class CloudRunApi {
21
+ constructor(messages, runContext, options, machineInfo) {
22
+ this.messages = messages;
23
+ this.runContext = runContext;
24
+ this.machineInfo = machineInfo;
25
+ this.apiAxiosInstance = (0, axios_1.createApiAxiosInstance)(options);
26
+ }
27
+ startRun(distributedExecutionId, hashes) {
28
+ var _a;
29
+ return __awaiter(this, void 0, void 0, function* () {
30
+ const recorder = (0, metric_logger_1.createMetricRecorder)('startRun');
31
+ try {
32
+ const request = {
33
+ meta: {
34
+ nxCloudVersion: this.nxCloudVersion(),
35
+ },
36
+ branch: (0, environment_1.getBranch)(),
37
+ runGroup: (0, environment_1.getRunGroup)(),
38
+ distributedExecutionId,
39
+ hashes,
40
+ };
41
+ if (environment_1.VERBOSE_LOGGING) {
42
+ output.note({
43
+ title: 'RunStart',
44
+ bodyLines: ['\n' + JSON.stringify(request, null, 2)],
45
+ });
46
+ }
47
+ const resp = yield (0, axios_1.axiosMultipleTries)(() => this.apiAxiosInstance.post('/nx-cloud/runs/start', request));
48
+ recorder.recordMetric((0, metric_logger_1.mapRespToPerfEntry)(resp));
49
+ if (resp.data && resp.data.message) {
50
+ this.messages.message = resp.data.message;
51
+ }
52
+ if (!resp.data || !resp.data.urls) {
53
+ this.messages.apiError = `Invalid Nx Cloud response: ${JSON.stringify(resp.data)}`;
54
+ return {};
55
+ }
56
+ return resp.data.urls;
57
+ }
58
+ catch (e) {
59
+ recorder.recordMetric(((_a = e === null || e === void 0 ? void 0 : e.axiosException) === null || _a === void 0 ? void 0 : _a.response)
60
+ ? (0, metric_logger_1.mapRespToPerfEntry)(e.axiosException.response)
61
+ : metric_logger_1.RUNNER_FAILURE_PERF_ENTRY);
62
+ this.messages.apiError = this.messages.extractErrorMessage(e, 'api');
63
+ return {};
64
+ }
65
+ });
66
+ }
67
+ endRun(run, tasks) {
68
+ var _a, _b;
69
+ return __awaiter(this, void 0, void 0, function* () {
70
+ // API is not working, don't make the end request
71
+ if (this.messages.apiError)
72
+ return false;
73
+ const uncompressedReqBody = {
74
+ meta: {
75
+ nxCloudVersion: this.nxCloudVersion(),
76
+ },
77
+ tasks,
78
+ run: run,
79
+ machineInfo: this.machineInfo,
80
+ };
81
+ const uncompressedBuffer = Buffer.from(JSON.stringify(uncompressedReqBody));
82
+ const compressedBuffer = yield (0, util_1.promisify)(zlib_1.gzip)(uncompressedBuffer);
83
+ const recorder = (0, metric_logger_1.createMetricRecorder)('endRun');
84
+ try {
85
+ if (environment_1.VERBOSE_LOGGING) {
86
+ const t = tasks.map((tt) => {
87
+ return Object.assign(Object.assign({}, tt), { terminalOutput: tt.terminalOutput
88
+ ? `${tt.terminalOutput.slice(0, 20)}...`
89
+ : undefined });
90
+ });
91
+ output.note({
92
+ title: 'RunEnd. Completed tasks',
93
+ bodyLines: ['\n' + JSON.stringify(t, null, 2)],
94
+ });
95
+ }
96
+ const resp = yield (0, axios_1.axiosMultipleTries)(() => this.apiAxiosInstance.post('/nx-cloud/runs/end', compressedBuffer, {
97
+ headers: Object.assign(Object.assign({}, this.apiAxiosInstance.defaults.headers), { 'Content-Encoding': 'gzip', 'Content-Type': 'application/octet-stream' }),
98
+ }));
99
+ if (resp) {
100
+ recorder.recordMetric((0, metric_logger_1.mapRespToPerfEntry)(resp));
101
+ if (resp.data && resp.data.runUrl && resp.data.status === 'success') {
102
+ this.runContext.runUrl = resp.data.runUrl;
103
+ return true;
104
+ }
105
+ if (resp.data && resp.data.status) {
106
+ this.messages.apiError = `Invalid end run response: ${JSON.stringify(resp.data.message)}`;
107
+ }
108
+ else if (resp.data && typeof resp.data === 'string') {
109
+ if (resp.data !== 'success') {
110
+ this.messages.apiError = `Invalid end run response: ${JSON.stringify(resp.data)}`;
111
+ }
112
+ }
113
+ else {
114
+ this.messages.apiError = `Invalid end run response: ${JSON.stringify(resp.data)}`;
115
+ }
116
+ if (environment_1.VERBOSE_LOGGING) {
117
+ output.note({
118
+ title: 'Invalid end run response',
119
+ bodyLines: [JSON.stringify(resp.data, null, 2)],
120
+ });
121
+ }
122
+ }
123
+ else {
124
+ output.error({
125
+ title: 'Nx Cloud: Unknown Error Occurred',
126
+ bodyLines: [
127
+ 'Run completion responded with `undefined`.',
128
+ 'Run Details:',
129
+ JSON.stringify(run, null, 2),
130
+ 'Stack Trace:',
131
+ JSON.stringify(new Error().stack, null, 2),
132
+ ],
133
+ });
134
+ }
135
+ return false;
136
+ }
137
+ catch (ee) {
138
+ recorder.recordMetric(((_a = ee === null || ee === void 0 ? void 0 : ee.axiosException) === null || _a === void 0 ? void 0 : _a.response)
139
+ ? (0, metric_logger_1.mapRespToPerfEntry)(ee.axiosException.response)
140
+ : metric_logger_1.RUNNER_FAILURE_PERF_ENTRY);
141
+ const e = (_b = ee.axiosException) !== null && _b !== void 0 ? _b : ee;
142
+ this.messages.apiError = this.messages.extractErrorMessage(e, 'api');
143
+ return false;
144
+ }
145
+ });
146
+ }
147
+ nxCloudVersion() {
148
+ try {
149
+ const v = JSON.parse((0, fs_1.readFileSync)(`package.json`).toString());
150
+ return v.devDependencies['@nrwl/nx-cloud'];
151
+ }
152
+ catch (e) {
153
+ return 'unknown';
154
+ }
155
+ }
156
+ }
157
+ exports.CloudRunApi = CloudRunApi;
158
+ //# sourceMappingURL=cloud-run.api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloud-run.api.js","sourceRoot":"","sources":["../../../../../../../../libs/nx-packages/nx-cloud/lib/core/runners/cloud-enabled/cloud-run.api.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { CloudTaskRunnerOptions } from '../../models/cloud-task-runner-options';
2
+ import { TasksApiResponse } from '../../models/distributed-agent/tasks-api-response.model';
3
+ export declare class DistributedAgentApi {
4
+ private readonly runGroup;
5
+ private readonly agentName;
6
+ private apiAxiosInstance;
7
+ constructor(options: CloudTaskRunnerOptions, runGroup: string, agentName: string);
8
+ tasks(executionId: string | null, statusCode: number | null, completedTasks: {
9
+ taskId: string;
10
+ hash: string;
11
+ }[]): Promise<TasksApiResponse>;
12
+ completeRunGroupWithError(error: string): Promise<void>;
13
+ }
@@ -0,0 +1,79 @@
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.DistributedAgentApi = void 0;
13
+ const axios_1 = require("../../../utilities/axios");
14
+ const environment_1 = require("../../../utilities/environment");
15
+ const metric_logger_1 = require("../../../utilities/metric-logger");
16
+ const { output } = require('../../../utilities/nx-imports');
17
+ class DistributedAgentApi {
18
+ constructor(options, runGroup, agentName) {
19
+ this.runGroup = runGroup;
20
+ this.agentName = agentName;
21
+ this.apiAxiosInstance = (0, axios_1.createApiAxiosInstance)(options);
22
+ }
23
+ tasks(executionId, statusCode, completedTasks) {
24
+ var _a;
25
+ return __awaiter(this, void 0, void 0, function* () {
26
+ const recorder = (0, metric_logger_1.createMetricRecorder)('dtePollTasks');
27
+ try {
28
+ const res = yield (0, axios_1.axiosMultipleTries)(() => this.apiAxiosInstance.post('/nx-cloud/executions/tasks', {
29
+ runGroup: this.runGroup,
30
+ agentName: this.agentName,
31
+ executionId,
32
+ statusCode,
33
+ completedTasks,
34
+ }));
35
+ recorder.recordMetric((0, metric_logger_1.mapRespToPerfEntry)(res));
36
+ return res.data;
37
+ }
38
+ catch (e) {
39
+ recorder.recordMetric(((_a = e === null || e === void 0 ? void 0 : e.axiosException) === null || _a === void 0 ? void 0 : _a.response)
40
+ ? (0, metric_logger_1.mapRespToPerfEntry)(e.axiosException.response)
41
+ : metric_logger_1.RUNNER_FAILURE_PERF_ENTRY);
42
+ throw e;
43
+ }
44
+ });
45
+ }
46
+ completeRunGroupWithError(error) {
47
+ var _a;
48
+ return __awaiter(this, void 0, void 0, function* () {
49
+ if (environment_1.VERBOSE_LOGGING) {
50
+ output.note({
51
+ title: 'Completing run group with an error',
52
+ bodyLines: [`runGroup: ${this.runGroup}`, `error: ${error}`],
53
+ });
54
+ }
55
+ const recorder = (0, metric_logger_1.createMetricRecorder)('completeRunGroup');
56
+ try {
57
+ const resp = yield (0, axios_1.axiosMultipleTries)(() => this.apiAxiosInstance.post('/nx-cloud/executions/complete-run-group', {
58
+ runGroup: this.runGroup,
59
+ agentName: this.agentName,
60
+ criticalErrorMessage: error,
61
+ }));
62
+ if (environment_1.VERBOSE_LOGGING) {
63
+ output.note({
64
+ title: 'Completed run group with an error',
65
+ });
66
+ }
67
+ recorder.recordMetric((0, metric_logger_1.mapRespToPerfEntry)(resp));
68
+ }
69
+ catch (e) {
70
+ recorder.recordMetric(((_a = e === null || e === void 0 ? void 0 : e.axiosException) === null || _a === void 0 ? void 0 : _a.response)
71
+ ? (0, metric_logger_1.mapRespToPerfEntry)(e.axiosException.response)
72
+ : metric_logger_1.RUNNER_FAILURE_PERF_ENTRY);
73
+ console.error(e);
74
+ }
75
+ });
76
+ }
77
+ }
78
+ exports.DistributedAgentApi = DistributedAgentApi;
79
+ //# sourceMappingURL=distributed-agent.api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"distributed-agent.api.js","sourceRoot":"","sources":["../../../../../../../../libs/nx-packages/nx-cloud/lib/core/runners/distributed-agent/distributed-agent.api.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,oDAGkC;AAElC,gEAAiE;AACjE,oEAI0C;AAC1C,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,+BAA+B,CAAC,CAAC;AAE5D,MAAa,mBAAmB;IAG9B,YACE,OAA+B,EACd,QAAgB,EAChB,SAAiB;QADjB,aAAQ,GAAR,QAAQ,CAAQ;QAChB,cAAS,GAAT,SAAS,CAAQ;QAElC,IAAI,CAAC,gBAAgB,GAAG,IAAA,8BAAsB,EAAC,OAAO,CAAC,CAAC;IAC1D,CAAC;IAEK,KAAK,CACT,WAA0B,EAC1B,UAAyB,EACzB,cAAkD;;;YAElD,MAAM,QAAQ,GAAG,IAAA,oCAAoB,EAAC,cAAc,CAAC,CAAC;YAEtD,IAAI;gBACF,MAAM,GAAG,GAAG,MAAM,IAAA,0BAAkB,EAAC,GAAG,EAAE,CACxC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,4BAA4B,EAAE;oBACvD,QAAQ,EAAE,IAAI,CAAC,QAAQ;oBACvB,SAAS,EAAE,IAAI,CAAC,SAAS;oBACzB,WAAW;oBACX,UAAU;oBACV,cAAc;iBACf,CAAC,CACH,CAAC;gBACF,QAAQ,CAAC,YAAY,CAAC,IAAA,kCAAkB,EAAC,GAAG,CAAC,CAAC,CAAC;gBAC/C,OAAO,GAAG,CAAC,IAAI,CAAC;aACjB;YAAC,OAAO,CAAM,EAAE;gBACf,QAAQ,CAAC,YAAY,CACnB,CAAA,MAAA,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,cAAc,0CAAE,QAAQ;oBACzB,CAAC,CAAC,IAAA,kCAAkB,EAAC,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC;oBAC/C,CAAC,CAAC,yCAAyB,CAC9B,CAAC;gBACF,MAAM,CAAC,CAAC;aACT;;KACF;IAEK,yBAAyB,CAAC,KAAa;;;YAC3C,IAAI,6BAAe,EAAE;gBACnB,MAAM,CAAC,IAAI,CAAC;oBACV,KAAK,EAAE,oCAAoC;oBAC3C,SAAS,EAAE,CAAC,aAAa,IAAI,CAAC,QAAQ,EAAE,EAAE,UAAU,KAAK,EAAE,CAAC;iBAC7D,CAAC,CAAC;aACJ;YAED,MAAM,QAAQ,GAAG,IAAA,oCAAoB,EAAC,kBAAkB,CAAC,CAAC;YAE1D,IAAI;gBACF,MAAM,IAAI,GAAG,MAAM,IAAA,0BAAkB,EAAC,GAAG,EAAE,CACzC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,yCAAyC,EAAE;oBACpE,QAAQ,EAAE,IAAI,CAAC,QAAQ;oBACvB,SAAS,EAAE,IAAI,CAAC,SAAS;oBACzB,oBAAoB,EAAE,KAAK;iBAC5B,CAAC,CACH,CAAC;gBACF,IAAI,6BAAe,EAAE;oBACnB,MAAM,CAAC,IAAI,CAAC;wBACV,KAAK,EAAE,mCAAmC;qBAC3C,CAAC,CAAC;iBACJ;gBACD,QAAQ,CAAC,YAAY,CAAC,IAAA,kCAAkB,EAAC,IAAI,CAAC,CAAC,CAAC;aACjD;YAAC,OAAO,CAAM,EAAE;gBACf,QAAQ,CAAC,YAAY,CACnB,CAAA,MAAA,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,cAAc,0CAAE,QAAQ;oBACzB,CAAC,CAAC,IAAA,kCAAkB,EAAC,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC;oBAC/C,CAAC,CAAC,yCAAyB,CAC9B,CAAC;gBACF,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;aAClB;;KACF;CACF;AAzED,kDAyEC"}
@@ -0,0 +1 @@
1
+ export declare function startAgent(): Promise<void>;