@tinybirdco/sdk 0.0.54 → 0.0.55
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/api/deploy.d.ts +17 -10
- package/dist/api/deploy.d.ts.map +1 -1
- package/dist/api/deploy.js +76 -68
- package/dist/api/deploy.js.map +1 -1
- package/dist/api/deploy.test.js +90 -55
- package/dist/api/deploy.test.js.map +1 -1
- package/package.json +1 -1
- package/src/api/deploy.test.ts +159 -62
- package/src/api/deploy.ts +104 -89
package/dist/api/deploy.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Deploy resources to Tinybird main workspace
|
|
3
|
-
* Uses the /v1/deploy endpoint
|
|
3
|
+
* Uses the /v1/deploy endpoint to create a deployment, then sets it live
|
|
4
4
|
*/
|
|
5
5
|
import type { GeneratedResources } from "../generator/index.js";
|
|
6
6
|
import type { BuildConfig, BuildApiResult } from "./build.js";
|
|
@@ -23,6 +23,12 @@ export interface Deployment {
|
|
|
23
23
|
updated_at?: string;
|
|
24
24
|
feedback?: DeploymentFeedback[];
|
|
25
25
|
}
|
|
26
|
+
/**
|
|
27
|
+
* Response from /v1/deployments list endpoint
|
|
28
|
+
*/
|
|
29
|
+
export interface DeploymentsListResponse {
|
|
30
|
+
deployments: Deployment[];
|
|
31
|
+
}
|
|
26
32
|
/**
|
|
27
33
|
* Response from /v1/deploy endpoint
|
|
28
34
|
*/
|
|
@@ -35,13 +41,6 @@ export interface DeployResponse {
|
|
|
35
41
|
error: string;
|
|
36
42
|
}>;
|
|
37
43
|
}
|
|
38
|
-
/**
|
|
39
|
-
* Response from /v1/deployments/{id} endpoint
|
|
40
|
-
*/
|
|
41
|
-
export interface DeploymentStatusResponse {
|
|
42
|
-
result: string;
|
|
43
|
-
deployment: Deployment;
|
|
44
|
-
}
|
|
45
44
|
/**
|
|
46
45
|
* Detailed deployment information with resource changes
|
|
47
46
|
*/
|
|
@@ -70,11 +69,20 @@ export interface DeploymentDetails extends Deployment {
|
|
|
70
69
|
error: string;
|
|
71
70
|
}>;
|
|
72
71
|
}
|
|
72
|
+
/**
|
|
73
|
+
* Response from /v1/deployments/{id} endpoint
|
|
74
|
+
*/
|
|
75
|
+
export interface DeploymentStatusResponse {
|
|
76
|
+
result: string;
|
|
77
|
+
deployment: Deployment;
|
|
78
|
+
}
|
|
73
79
|
/**
|
|
74
80
|
* Deploy generated resources to Tinybird main workspace
|
|
75
81
|
*
|
|
76
82
|
* Uses the /v1/deploy endpoint which accepts all resources in a single
|
|
77
|
-
* multipart form request.
|
|
83
|
+
* multipart form request. After creating the deployment, this function:
|
|
84
|
+
* 1. Polls until the deployment is ready (status === 'data_ready')
|
|
85
|
+
* 2. Sets the deployment as live via /v1/deployments/{id}/set-live
|
|
78
86
|
*
|
|
79
87
|
* @param config - Build configuration with API URL and token
|
|
80
88
|
* @param resources - Generated resources to deploy
|
|
@@ -142,7 +150,6 @@ export declare function deployToMain(config: BuildConfig, resources: GeneratedRe
|
|
|
142
150
|
pollIntervalMs?: number;
|
|
143
151
|
maxPollAttempts?: number;
|
|
144
152
|
check?: boolean;
|
|
145
|
-
autoPromote?: boolean;
|
|
146
153
|
allowDestructiveOperations?: boolean;
|
|
147
154
|
callbacks?: DeployCallbacks;
|
|
148
155
|
}): Promise<BuildApiResult>;
|
package/dist/api/deploy.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../src/api/deploy.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAM9D;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,KAAK,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;IACpC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,kBAAkB,EAAE,CAAC;CACjC;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,SAAS,GAAG,QAAQ,GAAG,YAAY,CAAC;IAC5C,UAAU,CAAC,EAAE,iBAAiB,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,KAAK,CAAC;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACtD;AAED;;GAEG;AACH,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../src/api/deploy.ts"],"names":[],"mappings":"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"}
|
package/dist/api/deploy.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Deploy resources to Tinybird main workspace
|
|
3
|
-
* Uses the /v1/deploy endpoint
|
|
3
|
+
* Uses the /v1/deploy endpoint to create a deployment, then sets it live
|
|
4
4
|
*/
|
|
5
5
|
import { tinybirdFetch } from "./fetcher.js";
|
|
6
6
|
const FORWARD_CLASSIC_GUIDANCE = "Use the Tinybird Classic CLI (`tb`) from a Tinybird Classic workspace for this operation.";
|
|
7
7
|
export async function deployToMain(config, resources, options) {
|
|
8
8
|
const debug = options?.debug ?? !!process.env.TINYBIRD_DEBUG;
|
|
9
9
|
const pollIntervalMs = options?.pollIntervalMs ?? 1000;
|
|
10
|
-
const maxPollAttempts = options?.maxPollAttempts ?? 120;
|
|
10
|
+
const maxPollAttempts = options?.maxPollAttempts ?? 120; // 2 minutes max
|
|
11
11
|
const baseUrl = config.baseUrl.replace(/\/$/, "");
|
|
12
12
|
const formData = new FormData();
|
|
13
13
|
// Add datasources
|
|
@@ -30,17 +30,42 @@ export async function deployToMain(config, resources, options) {
|
|
|
30
30
|
}
|
|
31
31
|
formData.append(fieldName, new Blob([pipe.content], { type: "text/plain" }), fileName);
|
|
32
32
|
}
|
|
33
|
-
//
|
|
34
|
-
|
|
33
|
+
// Step 0: Clean up any stale non-live deployments that might block the new deployment
|
|
34
|
+
try {
|
|
35
|
+
const deploymentsUrl = `${baseUrl}/v1/deployments`;
|
|
36
|
+
const deploymentsResponse = await tinybirdFetch(deploymentsUrl, {
|
|
37
|
+
headers: {
|
|
38
|
+
Authorization: `Bearer ${config.token}`,
|
|
39
|
+
},
|
|
40
|
+
});
|
|
41
|
+
if (deploymentsResponse.ok) {
|
|
42
|
+
const deploymentsBody = (await deploymentsResponse.json());
|
|
43
|
+
const staleDeployments = deploymentsBody.deployments.filter((d) => !d.live && d.status !== "live");
|
|
44
|
+
for (const stale of staleDeployments) {
|
|
45
|
+
if (debug) {
|
|
46
|
+
console.log(`[debug] Cleaning up stale deployment: ${stale.id} (status: ${stale.status})`);
|
|
47
|
+
}
|
|
48
|
+
await tinybirdFetch(`${baseUrl}/v1/deployments/${stale.id}`, {
|
|
49
|
+
method: "DELETE",
|
|
50
|
+
headers: {
|
|
51
|
+
Authorization: `Bearer ${config.token}`,
|
|
52
|
+
},
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
catch (e) {
|
|
58
|
+
// Ignore errors during cleanup - we'll try to deploy anyway
|
|
59
|
+
if (debug) {
|
|
60
|
+
console.log(`[debug] Failed to clean up stale deployments: ${e}`);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
// Step 1: Create deployment via /v1/deploy
|
|
35
64
|
const deployUrlBase = `${baseUrl}/v1/deploy`;
|
|
36
65
|
const urlParams = new URLSearchParams();
|
|
37
66
|
if (options?.check) {
|
|
38
67
|
urlParams.set("check", "true");
|
|
39
68
|
}
|
|
40
|
-
const autoPromote = options?.autoPromote ?? !options?.check;
|
|
41
|
-
if (autoPromote) {
|
|
42
|
-
urlParams.set("auto_promote", "true");
|
|
43
|
-
}
|
|
44
69
|
if (options?.allowDestructiveOperations) {
|
|
45
70
|
urlParams.set("allow_destructive_operations", "true");
|
|
46
71
|
}
|
|
@@ -189,17 +214,15 @@ export async function deployToMain(config, resources, options) {
|
|
|
189
214
|
},
|
|
190
215
|
});
|
|
191
216
|
}
|
|
192
|
-
|
|
193
|
-
let
|
|
217
|
+
// Step 2: Poll until deployment is ready
|
|
218
|
+
let deployment = body.deployment;
|
|
219
|
+
let attempts = 0;
|
|
194
220
|
options?.callbacks?.onWaitingForReady?.();
|
|
195
|
-
while (deployment.status !== "data_ready" &&
|
|
196
|
-
deployment.status !== "failed" &&
|
|
197
|
-
deployment.status !== "error" &&
|
|
198
|
-
statusAttempts < maxPollAttempts) {
|
|
221
|
+
while (deployment.status !== "data_ready" && attempts < maxPollAttempts) {
|
|
199
222
|
await sleep(pollIntervalMs);
|
|
200
|
-
|
|
223
|
+
attempts++;
|
|
201
224
|
if (debug) {
|
|
202
|
-
console.log(`[debug] Polling deployment status (attempt ${
|
|
225
|
+
console.log(`[debug] Polling deployment status (attempt ${attempts})...`);
|
|
203
226
|
}
|
|
204
227
|
const statusUrl = `${baseUrl}/v1/deployments/${deploymentId}`;
|
|
205
228
|
const statusResponse = await tinybirdFetch(statusUrl, {
|
|
@@ -220,79 +243,61 @@ export async function deployToMain(config, resources, options) {
|
|
|
220
243
|
}
|
|
221
244
|
const statusBody = (await statusResponse.json());
|
|
222
245
|
deployment = statusBody.deployment;
|
|
246
|
+
if (debug) {
|
|
247
|
+
console.log(`[debug] Deployment status: ${deployment.status}`);
|
|
248
|
+
}
|
|
249
|
+
// Check for failed status
|
|
250
|
+
if (deployment.status === "failed" || deployment.status === "error") {
|
|
251
|
+
return {
|
|
252
|
+
success: false,
|
|
253
|
+
result: "failed",
|
|
254
|
+
error: `Deployment failed with status: ${deployment.status}`,
|
|
255
|
+
datasourceCount: resources.datasources.length,
|
|
256
|
+
pipeCount: resources.pipes.length,
|
|
257
|
+
connectionCount: resources.connections?.length ?? 0,
|
|
258
|
+
buildId: deploymentId,
|
|
259
|
+
};
|
|
260
|
+
}
|
|
223
261
|
}
|
|
224
|
-
if (deployment.status
|
|
262
|
+
if (deployment.status !== "data_ready") {
|
|
225
263
|
return {
|
|
226
264
|
success: false,
|
|
227
265
|
result: "failed",
|
|
228
|
-
error: `Deployment
|
|
266
|
+
error: `Deployment timed out after ${maxPollAttempts} attempts. Last status: ${deployment.status}`,
|
|
229
267
|
datasourceCount: resources.datasources.length,
|
|
230
268
|
pipeCount: resources.pipes.length,
|
|
231
269
|
connectionCount: resources.connections?.length ?? 0,
|
|
232
270
|
buildId: deploymentId,
|
|
233
271
|
};
|
|
234
272
|
}
|
|
235
|
-
|
|
273
|
+
options?.callbacks?.onDeploymentReady?.();
|
|
274
|
+
// Step 3: Set the deployment as live
|
|
275
|
+
const setLiveUrl = `${baseUrl}/v1/deployments/${deploymentId}/set-live`;
|
|
276
|
+
if (debug) {
|
|
277
|
+
console.log(`[debug] POST ${setLiveUrl}`);
|
|
278
|
+
}
|
|
279
|
+
const setLiveResponse = await tinybirdFetch(setLiveUrl, {
|
|
280
|
+
method: "POST",
|
|
281
|
+
headers: {
|
|
282
|
+
Authorization: `Bearer ${config.token}`,
|
|
283
|
+
},
|
|
284
|
+
});
|
|
285
|
+
if (!setLiveResponse.ok) {
|
|
286
|
+
const setLiveBody = await setLiveResponse.text();
|
|
236
287
|
return {
|
|
237
288
|
success: false,
|
|
238
289
|
result: "failed",
|
|
239
|
-
error: `
|
|
290
|
+
error: `Failed to set deployment as live: ${setLiveResponse.status} ${setLiveResponse.statusText}\n${setLiveBody}`,
|
|
240
291
|
datasourceCount: resources.datasources.length,
|
|
241
292
|
pipeCount: resources.pipes.length,
|
|
242
293
|
connectionCount: resources.connections?.length ?? 0,
|
|
243
294
|
buildId: deploymentId,
|
|
244
295
|
};
|
|
245
296
|
}
|
|
246
|
-
options?.callbacks?.onDeploymentReady?.();
|
|
247
|
-
if (autoPromote && !deployment.live) {
|
|
248
|
-
let promotionAttempts = 0;
|
|
249
|
-
options?.callbacks?.onWaitingForPromote?.();
|
|
250
|
-
while (!deployment.live && promotionAttempts < maxPollAttempts) {
|
|
251
|
-
await sleep(pollIntervalMs);
|
|
252
|
-
promotionAttempts++;
|
|
253
|
-
if (debug) {
|
|
254
|
-
console.log(`[debug] Polling auto-promote status (attempt ${promotionAttempts})...`);
|
|
255
|
-
}
|
|
256
|
-
const statusUrl = `${baseUrl}/v1/deployments/${deploymentId}`;
|
|
257
|
-
const statusResponse = await tinybirdFetch(statusUrl, {
|
|
258
|
-
headers: {
|
|
259
|
-
Authorization: `Bearer ${config.token}`,
|
|
260
|
-
},
|
|
261
|
-
});
|
|
262
|
-
if (!statusResponse.ok) {
|
|
263
|
-
return {
|
|
264
|
-
success: false,
|
|
265
|
-
result: "failed",
|
|
266
|
-
error: `Failed to check deployment status: ${statusResponse.status} ${statusResponse.statusText}`,
|
|
267
|
-
datasourceCount: resources.datasources.length,
|
|
268
|
-
pipeCount: resources.pipes.length,
|
|
269
|
-
connectionCount: resources.connections?.length ?? 0,
|
|
270
|
-
buildId: deploymentId,
|
|
271
|
-
};
|
|
272
|
-
}
|
|
273
|
-
const statusBody = (await statusResponse.json());
|
|
274
|
-
deployment = statusBody.deployment;
|
|
275
|
-
}
|
|
276
|
-
if (!deployment.live) {
|
|
277
|
-
return {
|
|
278
|
-
success: false,
|
|
279
|
-
result: "failed",
|
|
280
|
-
error: `Deployment reached data_ready but auto-promote did not complete after ${maxPollAttempts} attempts`,
|
|
281
|
-
datasourceCount: resources.datasources.length,
|
|
282
|
-
pipeCount: resources.pipes.length,
|
|
283
|
-
connectionCount: resources.connections?.length ?? 0,
|
|
284
|
-
buildId: deploymentId,
|
|
285
|
-
};
|
|
286
|
-
}
|
|
287
|
-
options?.callbacks?.onDeploymentPromoted?.();
|
|
288
|
-
}
|
|
289
297
|
if (debug) {
|
|
290
|
-
|
|
291
|
-
console.log(`[debug] Deployment ${deploymentId} is now ${stateLabel}`);
|
|
292
|
-
}
|
|
293
|
-
if (deployment.live) {
|
|
294
|
-
options?.callbacks?.onDeploymentLive?.(deploymentId);
|
|
298
|
+
console.log(`[debug] Deployment ${deploymentId} is now live`);
|
|
295
299
|
}
|
|
300
|
+
options?.callbacks?.onDeploymentLive?.(deploymentId);
|
|
296
301
|
return {
|
|
297
302
|
success: true,
|
|
298
303
|
result: "success",
|
|
@@ -312,6 +317,9 @@ export async function deployToMain(config, resources, options) {
|
|
|
312
317
|
},
|
|
313
318
|
};
|
|
314
319
|
}
|
|
320
|
+
/**
|
|
321
|
+
* Helper function to sleep for a given number of milliseconds
|
|
322
|
+
*/
|
|
315
323
|
function sleep(ms) {
|
|
316
324
|
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
317
325
|
}
|
package/dist/api/deploy.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deploy.js","sourceRoot":"","sources":["../../src/api/deploy.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"deploy.js","sourceRoot":"","sources":["../../src/api/deploy.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,MAAM,wBAAwB,GAC5B,2FAA2F,CAAC;AAiJ9F,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,MAAmB,EACnB,SAA6B,EAC7B,OAOC;IAED,MAAM,KAAK,GAAG,OAAO,EAAE,KAAK,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;IAC7D,MAAM,cAAc,GAAG,OAAO,EAAE,cAAc,IAAI,IAAI,CAAC;IACvD,MAAM,eAAe,GAAG,OAAO,EAAE,eAAe,IAAI,GAAG,CAAC,CAAC,gBAAgB;IACzE,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAElD,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;IAEhC,kBAAkB;IAClB,KAAK,MAAM,EAAE,IAAI,SAAS,CAAC,WAAW,EAAE,CAAC;QACvC,MAAM,SAAS,GAAG,iBAAiB,CAAC;QACpC,MAAM,QAAQ,GAAG,GAAG,EAAE,CAAC,IAAI,aAAa,CAAC;QACzC,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,CAAC,GAAG,CAAC,8BAA8B,SAAS,eAAe,QAAQ,GAAG,CAAC,CAAC;YAC/E,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,CAAC,OAAO,IAAI,CAAC,CAAC;QACnD,CAAC;QACD,QAAQ,CAAC,MAAM,CACb,SAAS,EACT,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,EAC9C,QAAQ,CACT,CAAC;IACJ,CAAC;IAED,YAAY;IACZ,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,KAAK,EAAE,CAAC;QACnC,MAAM,SAAS,GAAG,iBAAiB,CAAC;QACpC,MAAM,QAAQ,GAAG,GAAG,IAAI,CAAC,IAAI,OAAO,CAAC;QACrC,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,CAAC,GAAG,CAAC,wBAAwB,SAAS,eAAe,QAAQ,GAAG,CAAC,CAAC;YACzE,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC;QACrD,CAAC;QACD,QAAQ,CAAC,MAAM,CACb,SAAS,EACT,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,EAChD,QAAQ,CACT,CAAC;IACJ,CAAC;IAED,sFAAsF;IACtF,IAAI,CAAC;QACH,MAAM,cAAc,GAAG,GAAG,OAAO,iBAAiB,CAAC;QACnD,MAAM,mBAAmB,GAAG,MAAM,aAAa,CAAC,cAAc,EAAE;YAC9D,OAAO,EAAE;gBACP,aAAa,EAAE,UAAU,MAAM,CAAC,KAAK,EAAE;aACxC;SACF,CAAC,CAAC;QAEH,IAAI,mBAAmB,CAAC,EAAE,EAAE,CAAC;YAC3B,MAAM,eAAe,GAAG,CAAC,MAAM,mBAAmB,CAAC,IAAI,EAAE,CAA4B,CAAC;YACtF,MAAM,gBAAgB,GAAG,eAAe,CAAC,WAAW,CAAC,MAAM,CACzD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,CACtC,CAAC;YAEF,KAAK,MAAM,KAAK,IAAI,gBAAgB,EAAE,CAAC;gBACrC,IAAI,KAAK,EAAE,CAAC;oBACV,OAAO,CAAC,GAAG,CAAC,yCAAyC,KAAK,CAAC,EAAE,aAAa,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;gBAC7F,CAAC;gBACD,MAAM,aAAa,CAAC,GAAG,OAAO,mBAAmB,KAAK,CAAC,EAAE,EAAE,EAAE;oBAC3D,MAAM,EAAE,QAAQ;oBAChB,OAAO,EAAE;wBACP,aAAa,EAAE,UAAU,MAAM,CAAC,KAAK,EAAE;qBACxC;iBACF,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,4DAA4D;QAC5D,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,CAAC,GAAG,CAAC,iDAAiD,CAAC,EAAE,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;IAED,2CAA2C;IAC3C,MAAM,aAAa,GAAG,GAAG,OAAO,YAAY,CAAC;IAC7C,MAAM,SAAS,GAAG,IAAI,eAAe,EAAE,CAAC;IACxC,IAAI,OAAO,EAAE,KAAK,EAAE,CAAC;QACnB,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACjC,CAAC;IACD,IAAI,OAAO,EAAE,0BAA0B,EAAE,CAAC;QACxC,SAAS,CAAC,GAAG,CAAC,8BAA8B,EAAE,MAAM,CAAC,CAAC;IACxD,CAAC;IACD,MAAM,WAAW,GAAG,SAAS,CAAC,QAAQ,EAAE,CAAC;IACzC,MAAM,SAAS,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,aAAa,IAAI,WAAW,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC;IAElF,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,CAAC,GAAG,CAAC,gBAAgB,SAAS,EAAE,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,SAAS,EAAE;QAC9C,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,aAAa,EAAE,UAAU,MAAM,CAAC,KAAK,EAAE;SACxC;QACD,IAAI,EAAE,QAAQ;KACf,CAAC,CAAC;IAEH,iBAAiB;IACjB,IAAI,IAAoB,CAAC;IACzB,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IAEtC,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,CAAC,GAAG,CAAC,4BAA4B,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QAC3D,OAAO,CAAC,GAAG,CAAC,0BAA0B,OAAO,EAAE,CAAC,CAAC;IACnD,CAAC;IAED,IAAI,CAAC;QACH,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAmB,CAAC;IAC/C,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CACb,+CAA+C,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,WAAW,OAAO,EAAE,CAC1G,CAAC;IACJ,CAAC;IAED,4CAA4C;IAC5C,MAAM,cAAc,GAAG,CAAC,QAA8B,EAAU,EAAE;QAChE,OAAO,QAAQ;aACZ,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YACT,uEAAuE;YACvE,MAAM,YAAY,GAAG,CAAC,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,QAAQ,IAAI,SAAS,CAAC;YAC7E,OAAO,GAAG,YAAY,KAAK,2BAA2B,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;QACtE,CAAC,CAAC;aACD,IAAI,CAAC,IAAI,CAAC,CAAC;IAChB,CAAC,CAAC;IAEF,0BAA0B;IAC1B,MAAM,YAAY,GAAG,GAAW,EAAE;QAChC,8DAA8D;QAC9D,IAAI,IAAI,CAAC,UAAU,EAAE,QAAQ,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrE,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,OAAO,CAAC,CAAC;YAC3E,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACtB,OAAO,cAAc,CAAC,MAAM,CAAC,CAAC;YAChC,CAAC;QACH,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1C,OAAO,IAAI,CAAC,MAAM;iBACf,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;gBACT,MAAM,MAAM,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;gBACpD,OAAO,GAAG,MAAM,GAAG,2BAA2B,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;YAC5D,CAAC,CAAC;iBACD,IAAI,CAAC,IAAI,CAAC,CAAC;QAChB,CAAC;QACD,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,OAAO,2BAA2B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACjD,CAAC;QACD,gFAAgF;QAChF,OAAO,QAAQ,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC,UAAU,eAAe,OAAO,EAAE,CAAC;IACjF,CAAC,CAAC;IAEF,0BAA0B;IAC1B,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,OAAO;YACL,OAAO,EAAE,KAAK;YACd,MAAM,EAAE,QAAQ;YAChB,KAAK,EAAE,YAAY,EAAE;YACrB,eAAe,EAAE,SAAS,CAAC,WAAW,CAAC,MAAM;YAC7C,SAAS,EAAE,SAAS,CAAC,KAAK,CAAC,MAAM;YACjC,eAAe,EAAE,SAAS,CAAC,WAAW,EAAE,MAAM,IAAI,CAAC;SACpD,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,EAAE,KAAK,EAAE,CAAC;QACnB,OAAO,CAAC,SAAS,EAAE,YAAY,EAAE,EAAE,CAAC;QAEpC,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC7B,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,MAAM,EAAE,QAAQ;gBAChB,KAAK,EAAE,YAAY,EAAE;gBACrB,eAAe,EAAE,SAAS,CAAC,WAAW,CAAC,MAAM;gBAC7C,SAAS,EAAE,SAAS,CAAC,KAAK,CAAC,MAAM;gBACjC,eAAe,EAAE,SAAS,CAAC,WAAW,EAAE,MAAM,IAAI,CAAC;aACpD,CAAC;QACJ,CAAC;QAED,OAAO;YACL,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,SAAS;YAChC,eAAe,EAAE,SAAS,CAAC,WAAW,CAAC,MAAM;YAC7C,SAAS,EAAE,SAAS,CAAC,KAAK,CAAC,MAAM;YACjC,eAAe,EAAE,SAAS,CAAC,WAAW,EAAE,MAAM,IAAI,CAAC;SACpD,CAAC;IACJ,CAAC;IAED,wEAAwE;IACxE,IAAI,IAAI,CAAC,MAAM,KAAK,YAAY,EAAE,CAAC;QACjC,OAAO;YACL,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,YAAY;YACpB,eAAe,EAAE,SAAS,CAAC,WAAW,CAAC,MAAM;YAC7C,SAAS,EAAE,SAAS,CAAC,KAAK,CAAC,MAAM;YACjC,eAAe,EAAE,SAAS,CAAC,WAAW,EAAE,MAAM,IAAI,CAAC;YACnD,KAAK,EAAE;gBACL,OAAO,EAAE,EAAE;gBACX,OAAO,EAAE,EAAE;gBACX,OAAO,EAAE,EAAE;aACZ;YACD,WAAW,EAAE;gBACX,OAAO,EAAE,EAAE;gBACX,OAAO,EAAE,EAAE;gBACX,OAAO,EAAE,EAAE;aACZ;SACF,CAAC;IACJ,CAAC;IAED,oBAAoB;IACpB,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;QACjD,OAAO;YACL,OAAO,EAAE,KAAK;YACd,MAAM,EAAE,QAAQ;YAChB,KAAK,EAAE,YAAY,EAAE;YACrB,eAAe,EAAE,SAAS,CAAC,WAAW,CAAC,MAAM;YAC7C,SAAS,EAAE,SAAS,CAAC,KAAK,CAAC,MAAM;YACjC,eAAe,EAAE,SAAS,CAAC,WAAW,EAAE,MAAM,IAAI,CAAC;SACpD,CAAC;IACJ,CAAC;IAED,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;IACxC,MAAM,iBAAiB,GAAG,IAAI,CAAC,UAAU,CAAC;IAE1C,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,CAAC,GAAG,CAAC,uCAAuC,YAAY,EAAE,CAAC,CAAC;IACrE,CAAC;IAED,+DAA+D;IAC/D,IAAI,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;QAClC,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC;YAC1B,WAAW,EAAE;gBACX,OAAO,EAAE,iBAAiB,CAAC,oBAAoB,IAAI,EAAE;gBACrD,OAAO,EAAE,iBAAiB,CAAC,wBAAwB,IAAI,EAAE;gBACzD,OAAO,EAAE,iBAAiB,CAAC,wBAAwB,IAAI,EAAE;aAC1D;YACD,KAAK,EAAE;gBACL,OAAO,EAAE,iBAAiB,CAAC,cAAc,IAAI,EAAE;gBAC/C,OAAO,EAAE,iBAAiB,CAAC,kBAAkB,IAAI,EAAE;gBACnD,OAAO,EAAE,iBAAiB,CAAC,kBAAkB,IAAI,EAAE;aACpD;YACD,WAAW,EAAE;gBACX,OAAO,EAAE,iBAAiB,CAAC,wBAAwB,IAAI,EAAE;gBACzD,OAAO,EAAE,iBAAiB,CAAC,4BAA4B,IAAI,EAAE;gBAC7D,OAAO,EAAE,iBAAiB,CAAC,4BAA4B,IAAI,EAAE;aAC9D;SACF,CAAC,CAAC;IACL,CAAC;IAED,yCAAyC;IACzC,IAAI,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;IACjC,IAAI,QAAQ,GAAG,CAAC,CAAC;IAEjB,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,EAAE,CAAC;IAE1C,OAAO,UAAU,CAAC,MAAM,KAAK,YAAY,IAAI,QAAQ,GAAG,eAAe,EAAE,CAAC;QACxE,MAAM,KAAK,CAAC,cAAc,CAAC,CAAC;QAC5B,QAAQ,EAAE,CAAC;QAEX,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,CAAC,GAAG,CAAC,8CAA8C,QAAQ,MAAM,CAAC,CAAC;QAC5E,CAAC;QAED,MAAM,SAAS,GAAG,GAAG,OAAO,mBAAmB,YAAY,EAAE,CAAC;QAC9D,MAAM,cAAc,GAAG,MAAM,aAAa,CAAC,SAAS,EAAE;YACpD,OAAO,EAAE;gBACP,aAAa,EAAE,UAAU,MAAM,CAAC,KAAK,EAAE;aACxC;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE,CAAC;YACvB,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,MAAM,EAAE,QAAQ;gBAChB,KAAK,EAAE,sCAAsC,cAAc,CAAC,MAAM,IAAI,cAAc,CAAC,UAAU,EAAE;gBACjG,eAAe,EAAE,SAAS,CAAC,WAAW,CAAC,MAAM;gBAC7C,SAAS,EAAE,SAAS,CAAC,KAAK,CAAC,MAAM;gBACjC,eAAe,EAAE,SAAS,CAAC,WAAW,EAAE,MAAM,IAAI,CAAC;gBACnD,OAAO,EAAE,YAAY;aACtB,CAAC;QACJ,CAAC;QAED,MAAM,UAAU,GAAG,CAAC,MAAM,cAAc,CAAC,IAAI,EAAE,CAA6B,CAAC;QAC7E,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC;QAEnC,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,CAAC,GAAG,CAAC,8BAA8B,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;QACjE,CAAC;QAED,0BAA0B;QAC1B,IAAI,UAAU,CAAC,MAAM,KAAK,QAAQ,IAAI,UAAU,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;YACpE,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,MAAM,EAAE,QAAQ;gBAChB,KAAK,EAAE,kCAAkC,UAAU,CAAC,MAAM,EAAE;gBAC5D,eAAe,EAAE,SAAS,CAAC,WAAW,CAAC,MAAM;gBAC7C,SAAS,EAAE,SAAS,CAAC,KAAK,CAAC,MAAM;gBACjC,eAAe,EAAE,SAAS,CAAC,WAAW,EAAE,MAAM,IAAI,CAAC;gBACnD,OAAO,EAAE,YAAY;aACtB,CAAC;QACJ,CAAC;IACH,CAAC;IAED,IAAI,UAAU,CAAC,MAAM,KAAK,YAAY,EAAE,CAAC;QACvC,OAAO;YACL,OAAO,EAAE,KAAK;YACd,MAAM,EAAE,QAAQ;YAChB,KAAK,EAAE,8BAA8B,eAAe,2BAA2B,UAAU,CAAC,MAAM,EAAE;YAClG,eAAe,EAAE,SAAS,CAAC,WAAW,CAAC,MAAM;YAC7C,SAAS,EAAE,SAAS,CAAC,KAAK,CAAC,MAAM;YACjC,eAAe,EAAE,SAAS,CAAC,WAAW,EAAE,MAAM,IAAI,CAAC;YACnD,OAAO,EAAE,YAAY;SACtB,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,EAAE,CAAC;IAE1C,qCAAqC;IACrC,MAAM,UAAU,GAAG,GAAG,OAAO,mBAAmB,YAAY,WAAW,CAAC;IAExE,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,CAAC,GAAG,CAAC,gBAAgB,UAAU,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED,MAAM,eAAe,GAAG,MAAM,aAAa,CAAC,UAAU,EAAE;QACtD,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,aAAa,EAAE,UAAU,MAAM,CAAC,KAAK,EAAE;SACxC;KACF,CAAC,CAAC;IAEH,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,CAAC;QACxB,MAAM,WAAW,GAAG,MAAM,eAAe,CAAC,IAAI,EAAE,CAAC;QACjD,OAAO;YACL,OAAO,EAAE,KAAK;YACd,MAAM,EAAE,QAAQ;YAChB,KAAK,EAAE,qCAAqC,eAAe,CAAC,MAAM,IAAI,eAAe,CAAC,UAAU,KAAK,WAAW,EAAE;YAClH,eAAe,EAAE,SAAS,CAAC,WAAW,CAAC,MAAM;YAC7C,SAAS,EAAE,SAAS,CAAC,KAAK,CAAC,MAAM;YACjC,eAAe,EAAE,SAAS,CAAC,WAAW,EAAE,MAAM,IAAI,CAAC;YACnD,OAAO,EAAE,YAAY;SACtB,CAAC;IACJ,CAAC;IAED,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,CAAC,GAAG,CAAC,sBAAsB,YAAY,cAAc,CAAC,CAAC;IAChE,CAAC;IAED,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC,YAAY,CAAC,CAAC;IAErD,OAAO;QACL,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,SAAS;QACjB,eAAe,EAAE,SAAS,CAAC,WAAW,CAAC,MAAM;QAC7C,SAAS,EAAE,SAAS,CAAC,KAAK,CAAC,MAAM;QACjC,eAAe,EAAE,SAAS,CAAC,WAAW,EAAE,MAAM,IAAI,CAAC;QACnD,OAAO,EAAE,YAAY;QACrB,KAAK,EAAE;YACL,OAAO,EAAE,iBAAiB,CAAC,kBAAkB,IAAI,EAAE;YACnD,OAAO,EAAE,iBAAiB,CAAC,cAAc,IAAI,EAAE;YAC/C,OAAO,EAAE,iBAAiB,CAAC,kBAAkB,IAAI,EAAE;SACpD;QACD,WAAW,EAAE;YACX,OAAO,EAAE,iBAAiB,CAAC,wBAAwB,IAAI,EAAE;YACzD,OAAO,EAAE,iBAAiB,CAAC,oBAAoB,IAAI,EAAE;YACrD,OAAO,EAAE,iBAAiB,CAAC,wBAAwB,IAAI,EAAE;SAC1D;KACF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED,SAAS,2BAA2B,CAAC,OAAe;IAClD,MAAM,cAAc,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IACtC,MAAM,qBAAqB,GACzB,cAAc,CAAC,QAAQ,CAAC,4BAA4B,CAAC;QACrD,cAAc,CAAC,QAAQ,CAAC,6BAA6B,CAAC,CAAC;IAEzD,IAAI,CAAC,qBAAqB,IAAI,cAAc,CAAC,QAAQ,CAAC,wBAAwB,CAAC,EAAE,CAAC;QAChF,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,OAAO,GAAG,cAAc,KAAK,wBAAwB,EAAE,CAAC;AAC1D,CAAC"}
|
package/dist/api/deploy.test.js
CHANGED
|
@@ -1,10 +1,16 @@
|
|
|
1
|
-
import { describe, it, expect, beforeAll, afterEach, afterAll
|
|
1
|
+
import { describe, it, expect, beforeAll, beforeEach, afterEach, afterAll } from "vitest";
|
|
2
2
|
import { setupServer } from "msw/node";
|
|
3
3
|
import { http, HttpResponse } from "msw";
|
|
4
4
|
import { deployToMain } from "./deploy.js";
|
|
5
|
-
import { BASE_URL, createDeploySuccessResponse, createBuildFailureResponse, createBuildMultipleErrorsResponse, } from "../test/handlers.js";
|
|
5
|
+
import { BASE_URL, createDeploySuccessResponse, createDeploymentStatusResponse, createSetLiveSuccessResponse, createBuildFailureResponse, createBuildMultipleErrorsResponse, createDeploymentsListResponse, } from "../test/handlers.js";
|
|
6
6
|
const server = setupServer();
|
|
7
7
|
beforeAll(() => server.listen({ onUnhandledRequest: "error" }));
|
|
8
|
+
beforeEach(() => {
|
|
9
|
+
// Set up default handler for deployments list (used by stale deployment cleanup)
|
|
10
|
+
server.use(http.get(`${BASE_URL}/v1/deployments`, () => {
|
|
11
|
+
return HttpResponse.json(createDeploymentsListResponse());
|
|
12
|
+
}));
|
|
13
|
+
});
|
|
8
14
|
afterEach(() => server.resetHandlers());
|
|
9
15
|
afterAll(() => server.close());
|
|
10
16
|
describe("Deploy API", () => {
|
|
@@ -13,44 +19,53 @@ describe("Deploy API", () => {
|
|
|
13
19
|
token: "p.test-token",
|
|
14
20
|
};
|
|
15
21
|
const resources = {
|
|
16
|
-
datasources: [
|
|
17
|
-
|
|
22
|
+
datasources: [
|
|
23
|
+
{ name: "events", content: "SCHEMA > timestamp DateTime" },
|
|
24
|
+
],
|
|
25
|
+
pipes: [
|
|
26
|
+
{ name: "top_events", content: "NODE main\nSQL > SELECT * FROM events" },
|
|
27
|
+
],
|
|
18
28
|
connections: [],
|
|
19
29
|
};
|
|
20
|
-
|
|
30
|
+
// Helper to set up successful deploy flow
|
|
31
|
+
function setupSuccessfulDeployFlow(deploymentId = "deploy-abc") {
|
|
21
32
|
server.use(http.post(`${BASE_URL}/v1/deploy`, () => {
|
|
22
33
|
return HttpResponse.json(createDeploySuccessResponse({ deploymentId, status: "pending" }));
|
|
23
34
|
}), http.get(`${BASE_URL}/v1/deployments/${deploymentId}`, () => {
|
|
24
|
-
return HttpResponse.json({
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
id: deploymentId,
|
|
28
|
-
status: "data_ready",
|
|
29
|
-
live: true,
|
|
30
|
-
},
|
|
31
|
-
});
|
|
35
|
+
return HttpResponse.json(createDeploymentStatusResponse({ deploymentId, status: "data_ready" }));
|
|
36
|
+
}), http.post(`${BASE_URL}/v1/deployments/${deploymentId}/set-live`, () => {
|
|
37
|
+
return HttpResponse.json(createSetLiveSuccessResponse());
|
|
32
38
|
}));
|
|
33
39
|
}
|
|
34
40
|
describe("deployToMain", () => {
|
|
35
|
-
it("successfully deploys resources with
|
|
36
|
-
|
|
37
|
-
const
|
|
38
|
-
const result = await deployToMain(config, resources, {
|
|
39
|
-
pollIntervalMs: 1,
|
|
40
|
-
callbacks: { onDeploymentLive },
|
|
41
|
-
});
|
|
41
|
+
it("successfully deploys resources with full flow", async () => {
|
|
42
|
+
setupSuccessfulDeployFlow("deploy-abc");
|
|
43
|
+
const result = await deployToMain(config, resources, { pollIntervalMs: 1 });
|
|
42
44
|
expect(result.success).toBe(true);
|
|
43
45
|
expect(result.result).toBe("success");
|
|
44
46
|
expect(result.buildId).toBe("deploy-abc");
|
|
45
47
|
expect(result.datasourceCount).toBe(1);
|
|
46
48
|
expect(result.pipeCount).toBe(1);
|
|
47
|
-
|
|
49
|
+
});
|
|
50
|
+
it("polls until deployment is ready", async () => {
|
|
51
|
+
let pollCount = 0;
|
|
52
|
+
server.use(http.post(`${BASE_URL}/v1/deploy`, () => {
|
|
53
|
+
return HttpResponse.json(createDeploySuccessResponse({ deploymentId: "deploy-poll", status: "pending" }));
|
|
54
|
+
}), http.get(`${BASE_URL}/v1/deployments/deploy-poll`, () => {
|
|
55
|
+
pollCount++;
|
|
56
|
+
// Return pending for first 2 polls, then data_ready
|
|
57
|
+
const status = pollCount < 3 ? "pending" : "data_ready";
|
|
58
|
+
return HttpResponse.json(createDeploymentStatusResponse({ deploymentId: "deploy-poll", status }));
|
|
59
|
+
}), http.post(`${BASE_URL}/v1/deployments/deploy-poll/set-live`, () => {
|
|
60
|
+
return HttpResponse.json(createSetLiveSuccessResponse());
|
|
61
|
+
}));
|
|
62
|
+
const result = await deployToMain(config, resources, { pollIntervalMs: 1 });
|
|
63
|
+
expect(result.success).toBe(true);
|
|
64
|
+
expect(pollCount).toBe(3);
|
|
48
65
|
});
|
|
49
66
|
it("handles deploy failure with single error", async () => {
|
|
50
67
|
server.use(http.post(`${BASE_URL}/v1/deploy`, () => {
|
|
51
|
-
return HttpResponse.json(createBuildFailureResponse("Permission denied"), {
|
|
52
|
-
status: 200,
|
|
53
|
-
});
|
|
68
|
+
return HttpResponse.json(createBuildFailureResponse("Permission denied"), { status: 200 });
|
|
54
69
|
}));
|
|
55
70
|
const result = await deployToMain(config, resources);
|
|
56
71
|
expect(result.success).toBe(false);
|
|
@@ -102,33 +117,33 @@ describe("Deploy API", () => {
|
|
|
102
117
|
}));
|
|
103
118
|
await expect(deployToMain(config, resources)).rejects.toThrow("Failed to parse response");
|
|
104
119
|
});
|
|
105
|
-
it("uses /v1/deploy endpoint
|
|
120
|
+
it("uses /v1/deploy endpoint (not /v1/build)", async () => {
|
|
106
121
|
let capturedUrl = null;
|
|
107
122
|
server.use(http.post(`${BASE_URL}/v1/deploy`, ({ request }) => {
|
|
108
123
|
capturedUrl = request.url;
|
|
109
|
-
return HttpResponse.json(createDeploySuccessResponse({ deploymentId: "deploy-url-test"
|
|
124
|
+
return HttpResponse.json(createDeploySuccessResponse({ deploymentId: "deploy-url-test" }));
|
|
110
125
|
}), http.get(`${BASE_URL}/v1/deployments/deploy-url-test`, () => {
|
|
111
|
-
return HttpResponse.json({
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
});
|
|
126
|
+
return HttpResponse.json(createDeploymentStatusResponse({ deploymentId: "deploy-url-test", status: "data_ready" }));
|
|
127
|
+
}), http.post(`${BASE_URL}/v1/deployments/deploy-url-test/set-live`, () => {
|
|
128
|
+
return HttpResponse.json(createSetLiveSuccessResponse());
|
|
115
129
|
}));
|
|
116
130
|
await deployToMain(config, resources, { pollIntervalMs: 1 });
|
|
117
131
|
const parsed = new URL(capturedUrl ?? "");
|
|
118
132
|
expect(parsed.pathname).toBe("/v1/deploy");
|
|
119
133
|
expect(parsed.searchParams.get("from")).toBe("ts-sdk");
|
|
120
|
-
expect(parsed.searchParams.get("auto_promote")).toBe("true");
|
|
121
134
|
});
|
|
122
135
|
it("passes allow_destructive_operations when explicitly enabled", async () => {
|
|
123
136
|
let capturedUrl = null;
|
|
124
137
|
server.use(http.post(`${BASE_URL}/v1/deploy`, ({ request }) => {
|
|
125
138
|
capturedUrl = request.url;
|
|
126
|
-
return HttpResponse.json(createDeploySuccessResponse({ deploymentId: "deploy-destructive"
|
|
139
|
+
return HttpResponse.json(createDeploySuccessResponse({ deploymentId: "deploy-destructive" }));
|
|
127
140
|
}), http.get(`${BASE_URL}/v1/deployments/deploy-destructive`, () => {
|
|
128
|
-
return HttpResponse.json({
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
});
|
|
141
|
+
return HttpResponse.json(createDeploymentStatusResponse({
|
|
142
|
+
deploymentId: "deploy-destructive",
|
|
143
|
+
status: "data_ready",
|
|
144
|
+
}));
|
|
145
|
+
}), http.post(`${BASE_URL}/v1/deployments/deploy-destructive/set-live`, () => {
|
|
146
|
+
return HttpResponse.json(createSetLiveSuccessResponse());
|
|
132
147
|
}));
|
|
133
148
|
await deployToMain(config, resources, {
|
|
134
149
|
pollIntervalMs: 1,
|
|
@@ -136,19 +151,6 @@ describe("Deploy API", () => {
|
|
|
136
151
|
});
|
|
137
152
|
const parsed = new URL(capturedUrl ?? "");
|
|
138
153
|
expect(parsed.searchParams.get("allow_destructive_operations")).toBe("true");
|
|
139
|
-
expect(parsed.searchParams.get("auto_promote")).toBe("true");
|
|
140
|
-
});
|
|
141
|
-
it("does not send auto_promote in check mode", async () => {
|
|
142
|
-
let capturedUrl = null;
|
|
143
|
-
server.use(http.post(`${BASE_URL}/v1/deploy`, ({ request }) => {
|
|
144
|
-
capturedUrl = request.url;
|
|
145
|
-
return HttpResponse.json({ result: "success" });
|
|
146
|
-
}));
|
|
147
|
-
const result = await deployToMain(config, resources, { check: true });
|
|
148
|
-
expect(result.success).toBe(true);
|
|
149
|
-
const parsed = new URL(capturedUrl ?? "");
|
|
150
|
-
expect(parsed.searchParams.get("check")).toBe("true");
|
|
151
|
-
expect(parsed.searchParams.get("auto_promote")).toBeNull();
|
|
152
154
|
});
|
|
153
155
|
it("adds actionable guidance to Forward/Classic workspace errors", async () => {
|
|
154
156
|
server.use(http.post(`${BASE_URL}/v1/deploy`, () => {
|
|
@@ -162,22 +164,55 @@ describe("Deploy API", () => {
|
|
|
162
164
|
expect(result.error).toContain("Tinybird Forward workspace");
|
|
163
165
|
expect(result.error).toContain("Use the Tinybird Classic CLI (`tb`) from a Tinybird Classic workspace for this operation.");
|
|
164
166
|
});
|
|
167
|
+
it("handles failed deployment status", async () => {
|
|
168
|
+
server.use(http.post(`${BASE_URL}/v1/deploy`, () => {
|
|
169
|
+
return HttpResponse.json(createDeploySuccessResponse({ deploymentId: "deploy-fail", status: "pending" }));
|
|
170
|
+
}), http.get(`${BASE_URL}/v1/deployments/deploy-fail`, () => {
|
|
171
|
+
return HttpResponse.json(createDeploymentStatusResponse({ deploymentId: "deploy-fail", status: "failed" }));
|
|
172
|
+
}));
|
|
173
|
+
const result = await deployToMain(config, resources, { pollIntervalMs: 1 });
|
|
174
|
+
expect(result.success).toBe(false);
|
|
175
|
+
expect(result.error).toContain("Deployment failed with status: failed");
|
|
176
|
+
});
|
|
177
|
+
it("handles set-live failure", async () => {
|
|
178
|
+
server.use(http.post(`${BASE_URL}/v1/deploy`, () => {
|
|
179
|
+
return HttpResponse.json(createDeploySuccessResponse({ deploymentId: "deploy-setlive-fail" }));
|
|
180
|
+
}), http.get(`${BASE_URL}/v1/deployments/deploy-setlive-fail`, () => {
|
|
181
|
+
return HttpResponse.json(createDeploymentStatusResponse({ deploymentId: "deploy-setlive-fail", status: "data_ready" }));
|
|
182
|
+
}), http.post(`${BASE_URL}/v1/deployments/deploy-setlive-fail/set-live`, () => {
|
|
183
|
+
return HttpResponse.json({ error: "Set live failed" }, { status: 500 });
|
|
184
|
+
}));
|
|
185
|
+
const result = await deployToMain(config, resources, { pollIntervalMs: 1 });
|
|
186
|
+
expect(result.success).toBe(false);
|
|
187
|
+
expect(result.error).toContain("Failed to set deployment as live");
|
|
188
|
+
});
|
|
165
189
|
it("normalizes baseUrl with trailing slash", async () => {
|
|
166
190
|
let capturedUrl = null;
|
|
167
191
|
server.use(http.post(`${BASE_URL}/v1/deploy`, ({ request }) => {
|
|
168
192
|
capturedUrl = request.url;
|
|
169
|
-
return HttpResponse.json(createDeploySuccessResponse({ deploymentId: "deploy-slash"
|
|
193
|
+
return HttpResponse.json(createDeploySuccessResponse({ deploymentId: "deploy-slash" }));
|
|
170
194
|
}), http.get(`${BASE_URL}/v1/deployments/deploy-slash`, () => {
|
|
171
|
-
return HttpResponse.json({
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
});
|
|
195
|
+
return HttpResponse.json(createDeploymentStatusResponse({ deploymentId: "deploy-slash", status: "data_ready" }));
|
|
196
|
+
}), http.post(`${BASE_URL}/v1/deployments/deploy-slash/set-live`, () => {
|
|
197
|
+
return HttpResponse.json(createSetLiveSuccessResponse());
|
|
175
198
|
}));
|
|
176
199
|
await deployToMain({ ...config, baseUrl: `${BASE_URL}/` }, resources, { pollIntervalMs: 1 });
|
|
177
200
|
const parsed = new URL(capturedUrl ?? "");
|
|
178
201
|
expect(parsed.pathname).toBe("/v1/deploy");
|
|
179
202
|
expect(parsed.searchParams.get("from")).toBe("ts-sdk");
|
|
180
|
-
|
|
203
|
+
});
|
|
204
|
+
it("times out when deployment never becomes ready", async () => {
|
|
205
|
+
server.use(http.post(`${BASE_URL}/v1/deploy`, () => {
|
|
206
|
+
return HttpResponse.json(createDeploySuccessResponse({ deploymentId: "deploy-timeout", status: "pending" }));
|
|
207
|
+
}), http.get(`${BASE_URL}/v1/deployments/deploy-timeout`, () => {
|
|
208
|
+
return HttpResponse.json(createDeploymentStatusResponse({ deploymentId: "deploy-timeout", status: "pending" }));
|
|
209
|
+
}));
|
|
210
|
+
const result = await deployToMain(config, resources, {
|
|
211
|
+
pollIntervalMs: 1,
|
|
212
|
+
maxPollAttempts: 3,
|
|
213
|
+
});
|
|
214
|
+
expect(result.success).toBe(false);
|
|
215
|
+
expect(result.error).toContain("Deployment timed out");
|
|
181
216
|
});
|
|
182
217
|
});
|
|
183
218
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deploy.test.js","sourceRoot":"","sources":["../../src/api/deploy.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"deploy.test.js","sourceRoot":"","sources":["../../src/api/deploy.test.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/api/deploy.test.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { describe, it, expect, beforeAll, afterEach, afterAll
|
|
1
|
+
import { describe, it, expect, beforeAll, beforeEach, afterEach, afterAll } from "vitest";
|
|
2
2
|
import { setupServer } from "msw/node";
|
|
3
3
|
import { http, HttpResponse } from "msw";
|
|
4
4
|
import { deployToMain } from "./deploy.js";
|
|
@@ -6,14 +6,25 @@ import type { BuildConfig } from "./build.js";
|
|
|
6
6
|
import {
|
|
7
7
|
BASE_URL,
|
|
8
8
|
createDeploySuccessResponse,
|
|
9
|
+
createDeploymentStatusResponse,
|
|
10
|
+
createSetLiveSuccessResponse,
|
|
9
11
|
createBuildFailureResponse,
|
|
10
12
|
createBuildMultipleErrorsResponse,
|
|
13
|
+
createDeploymentsListResponse,
|
|
11
14
|
} from "../test/handlers.js";
|
|
12
15
|
import type { GeneratedResources } from "../generator/index.js";
|
|
13
16
|
|
|
14
17
|
const server = setupServer();
|
|
15
18
|
|
|
16
19
|
beforeAll(() => server.listen({ onUnhandledRequest: "error" }));
|
|
20
|
+
beforeEach(() => {
|
|
21
|
+
// Set up default handler for deployments list (used by stale deployment cleanup)
|
|
22
|
+
server.use(
|
|
23
|
+
http.get(`${BASE_URL}/v1/deployments`, () => {
|
|
24
|
+
return HttpResponse.json(createDeploymentsListResponse());
|
|
25
|
+
})
|
|
26
|
+
);
|
|
27
|
+
});
|
|
17
28
|
afterEach(() => server.resetHandlers());
|
|
18
29
|
afterAll(() => server.close());
|
|
19
30
|
|
|
@@ -24,12 +35,17 @@ describe("Deploy API", () => {
|
|
|
24
35
|
};
|
|
25
36
|
|
|
26
37
|
const resources: GeneratedResources = {
|
|
27
|
-
datasources: [
|
|
28
|
-
|
|
38
|
+
datasources: [
|
|
39
|
+
{ name: "events", content: "SCHEMA > timestamp DateTime" },
|
|
40
|
+
],
|
|
41
|
+
pipes: [
|
|
42
|
+
{ name: "top_events", content: "NODE main\nSQL > SELECT * FROM events" },
|
|
43
|
+
],
|
|
29
44
|
connections: [],
|
|
30
45
|
};
|
|
31
46
|
|
|
32
|
-
|
|
47
|
+
// Helper to set up successful deploy flow
|
|
48
|
+
function setupSuccessfulDeployFlow(deploymentId = "deploy-abc") {
|
|
33
49
|
server.use(
|
|
34
50
|
http.post(`${BASE_URL}/v1/deploy`, () => {
|
|
35
51
|
return HttpResponse.json(
|
|
@@ -37,42 +53,64 @@ describe("Deploy API", () => {
|
|
|
37
53
|
);
|
|
38
54
|
}),
|
|
39
55
|
http.get(`${BASE_URL}/v1/deployments/${deploymentId}`, () => {
|
|
40
|
-
return HttpResponse.json(
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
},
|
|
47
|
-
});
|
|
56
|
+
return HttpResponse.json(
|
|
57
|
+
createDeploymentStatusResponse({ deploymentId, status: "data_ready" })
|
|
58
|
+
);
|
|
59
|
+
}),
|
|
60
|
+
http.post(`${BASE_URL}/v1/deployments/${deploymentId}/set-live`, () => {
|
|
61
|
+
return HttpResponse.json(createSetLiveSuccessResponse());
|
|
48
62
|
})
|
|
49
63
|
);
|
|
50
64
|
}
|
|
51
65
|
|
|
52
66
|
describe("deployToMain", () => {
|
|
53
|
-
it("successfully deploys resources with
|
|
54
|
-
|
|
67
|
+
it("successfully deploys resources with full flow", async () => {
|
|
68
|
+
setupSuccessfulDeployFlow("deploy-abc");
|
|
55
69
|
|
|
56
|
-
const
|
|
57
|
-
const result = await deployToMain(config, resources, {
|
|
58
|
-
pollIntervalMs: 1,
|
|
59
|
-
callbacks: { onDeploymentLive },
|
|
60
|
-
});
|
|
70
|
+
const result = await deployToMain(config, resources, { pollIntervalMs: 1 });
|
|
61
71
|
|
|
62
72
|
expect(result.success).toBe(true);
|
|
63
73
|
expect(result.result).toBe("success");
|
|
64
74
|
expect(result.buildId).toBe("deploy-abc");
|
|
65
75
|
expect(result.datasourceCount).toBe(1);
|
|
66
76
|
expect(result.pipeCount).toBe(1);
|
|
67
|
-
|
|
77
|
+
});
|
|
78
|
+
|
|
79
|
+
it("polls until deployment is ready", async () => {
|
|
80
|
+
let pollCount = 0;
|
|
81
|
+
|
|
82
|
+
server.use(
|
|
83
|
+
http.post(`${BASE_URL}/v1/deploy`, () => {
|
|
84
|
+
return HttpResponse.json(
|
|
85
|
+
createDeploySuccessResponse({ deploymentId: "deploy-poll", status: "pending" })
|
|
86
|
+
);
|
|
87
|
+
}),
|
|
88
|
+
http.get(`${BASE_URL}/v1/deployments/deploy-poll`, () => {
|
|
89
|
+
pollCount++;
|
|
90
|
+
// Return pending for first 2 polls, then data_ready
|
|
91
|
+
const status = pollCount < 3 ? "pending" : "data_ready";
|
|
92
|
+
return HttpResponse.json(
|
|
93
|
+
createDeploymentStatusResponse({ deploymentId: "deploy-poll", status })
|
|
94
|
+
);
|
|
95
|
+
}),
|
|
96
|
+
http.post(`${BASE_URL}/v1/deployments/deploy-poll/set-live`, () => {
|
|
97
|
+
return HttpResponse.json(createSetLiveSuccessResponse());
|
|
98
|
+
})
|
|
99
|
+
);
|
|
100
|
+
|
|
101
|
+
const result = await deployToMain(config, resources, { pollIntervalMs: 1 });
|
|
102
|
+
|
|
103
|
+
expect(result.success).toBe(true);
|
|
104
|
+
expect(pollCount).toBe(3);
|
|
68
105
|
});
|
|
69
106
|
|
|
70
107
|
it("handles deploy failure with single error", async () => {
|
|
71
108
|
server.use(
|
|
72
109
|
http.post(`${BASE_URL}/v1/deploy`, () => {
|
|
73
|
-
return HttpResponse.json(
|
|
74
|
-
|
|
75
|
-
|
|
110
|
+
return HttpResponse.json(
|
|
111
|
+
createBuildFailureResponse("Permission denied"),
|
|
112
|
+
{ status: 200 }
|
|
113
|
+
);
|
|
76
114
|
})
|
|
77
115
|
);
|
|
78
116
|
|
|
@@ -130,7 +168,10 @@ describe("Deploy API", () => {
|
|
|
130
168
|
it("handles HTTP error responses", async () => {
|
|
131
169
|
server.use(
|
|
132
170
|
http.post(`${BASE_URL}/v1/deploy`, () => {
|
|
133
|
-
return HttpResponse.json(
|
|
171
|
+
return HttpResponse.json(
|
|
172
|
+
{ result: "failed", error: "Forbidden" },
|
|
173
|
+
{ status: 403 }
|
|
174
|
+
);
|
|
134
175
|
})
|
|
135
176
|
);
|
|
136
177
|
|
|
@@ -150,24 +191,28 @@ describe("Deploy API", () => {
|
|
|
150
191
|
})
|
|
151
192
|
);
|
|
152
193
|
|
|
153
|
-
await expect(deployToMain(config, resources)).rejects.toThrow(
|
|
194
|
+
await expect(deployToMain(config, resources)).rejects.toThrow(
|
|
195
|
+
"Failed to parse response"
|
|
196
|
+
);
|
|
154
197
|
});
|
|
155
198
|
|
|
156
|
-
it("uses /v1/deploy endpoint
|
|
199
|
+
it("uses /v1/deploy endpoint (not /v1/build)", async () => {
|
|
157
200
|
let capturedUrl: string | null = null;
|
|
158
201
|
|
|
159
202
|
server.use(
|
|
160
203
|
http.post(`${BASE_URL}/v1/deploy`, ({ request }) => {
|
|
161
204
|
capturedUrl = request.url;
|
|
162
205
|
return HttpResponse.json(
|
|
163
|
-
createDeploySuccessResponse({ deploymentId: "deploy-url-test"
|
|
206
|
+
createDeploySuccessResponse({ deploymentId: "deploy-url-test" })
|
|
164
207
|
);
|
|
165
208
|
}),
|
|
166
209
|
http.get(`${BASE_URL}/v1/deployments/deploy-url-test`, () => {
|
|
167
|
-
return HttpResponse.json(
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
210
|
+
return HttpResponse.json(
|
|
211
|
+
createDeploymentStatusResponse({ deploymentId: "deploy-url-test", status: "data_ready" })
|
|
212
|
+
);
|
|
213
|
+
}),
|
|
214
|
+
http.post(`${BASE_URL}/v1/deployments/deploy-url-test/set-live`, () => {
|
|
215
|
+
return HttpResponse.json(createSetLiveSuccessResponse());
|
|
171
216
|
})
|
|
172
217
|
);
|
|
173
218
|
|
|
@@ -176,7 +221,6 @@ describe("Deploy API", () => {
|
|
|
176
221
|
const parsed = new URL(capturedUrl ?? "");
|
|
177
222
|
expect(parsed.pathname).toBe("/v1/deploy");
|
|
178
223
|
expect(parsed.searchParams.get("from")).toBe("ts-sdk");
|
|
179
|
-
expect(parsed.searchParams.get("auto_promote")).toBe("true");
|
|
180
224
|
});
|
|
181
225
|
|
|
182
226
|
it("passes allow_destructive_operations when explicitly enabled", async () => {
|
|
@@ -186,14 +230,19 @@ describe("Deploy API", () => {
|
|
|
186
230
|
http.post(`${BASE_URL}/v1/deploy`, ({ request }) => {
|
|
187
231
|
capturedUrl = request.url;
|
|
188
232
|
return HttpResponse.json(
|
|
189
|
-
createDeploySuccessResponse({ deploymentId: "deploy-destructive"
|
|
233
|
+
createDeploySuccessResponse({ deploymentId: "deploy-destructive" })
|
|
190
234
|
);
|
|
191
235
|
}),
|
|
192
236
|
http.get(`${BASE_URL}/v1/deployments/deploy-destructive`, () => {
|
|
193
|
-
return HttpResponse.json(
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
237
|
+
return HttpResponse.json(
|
|
238
|
+
createDeploymentStatusResponse({
|
|
239
|
+
deploymentId: "deploy-destructive",
|
|
240
|
+
status: "data_ready",
|
|
241
|
+
})
|
|
242
|
+
);
|
|
243
|
+
}),
|
|
244
|
+
http.post(`${BASE_URL}/v1/deployments/deploy-destructive/set-live`, () => {
|
|
245
|
+
return HttpResponse.json(createSetLiveSuccessResponse());
|
|
197
246
|
})
|
|
198
247
|
);
|
|
199
248
|
|
|
@@ -204,25 +253,6 @@ describe("Deploy API", () => {
|
|
|
204
253
|
|
|
205
254
|
const parsed = new URL(capturedUrl ?? "");
|
|
206
255
|
expect(parsed.searchParams.get("allow_destructive_operations")).toBe("true");
|
|
207
|
-
expect(parsed.searchParams.get("auto_promote")).toBe("true");
|
|
208
|
-
});
|
|
209
|
-
|
|
210
|
-
it("does not send auto_promote in check mode", async () => {
|
|
211
|
-
let capturedUrl: string | null = null;
|
|
212
|
-
|
|
213
|
-
server.use(
|
|
214
|
-
http.post(`${BASE_URL}/v1/deploy`, ({ request }) => {
|
|
215
|
-
capturedUrl = request.url;
|
|
216
|
-
return HttpResponse.json({ result: "success" });
|
|
217
|
-
})
|
|
218
|
-
);
|
|
219
|
-
|
|
220
|
-
const result = await deployToMain(config, resources, { check: true });
|
|
221
|
-
|
|
222
|
-
expect(result.success).toBe(true);
|
|
223
|
-
const parsed = new URL(capturedUrl ?? "");
|
|
224
|
-
expect(parsed.searchParams.get("check")).toBe("true");
|
|
225
|
-
expect(parsed.searchParams.get("auto_promote")).toBeNull();
|
|
226
256
|
});
|
|
227
257
|
|
|
228
258
|
it("adds actionable guidance to Forward/Classic workspace errors", async () => {
|
|
@@ -248,6 +278,49 @@ describe("Deploy API", () => {
|
|
|
248
278
|
);
|
|
249
279
|
});
|
|
250
280
|
|
|
281
|
+
it("handles failed deployment status", async () => {
|
|
282
|
+
server.use(
|
|
283
|
+
http.post(`${BASE_URL}/v1/deploy`, () => {
|
|
284
|
+
return HttpResponse.json(
|
|
285
|
+
createDeploySuccessResponse({ deploymentId: "deploy-fail", status: "pending" })
|
|
286
|
+
);
|
|
287
|
+
}),
|
|
288
|
+
http.get(`${BASE_URL}/v1/deployments/deploy-fail`, () => {
|
|
289
|
+
return HttpResponse.json(
|
|
290
|
+
createDeploymentStatusResponse({ deploymentId: "deploy-fail", status: "failed" })
|
|
291
|
+
);
|
|
292
|
+
})
|
|
293
|
+
);
|
|
294
|
+
|
|
295
|
+
const result = await deployToMain(config, resources, { pollIntervalMs: 1 });
|
|
296
|
+
|
|
297
|
+
expect(result.success).toBe(false);
|
|
298
|
+
expect(result.error).toContain("Deployment failed with status: failed");
|
|
299
|
+
});
|
|
300
|
+
|
|
301
|
+
it("handles set-live failure", async () => {
|
|
302
|
+
server.use(
|
|
303
|
+
http.post(`${BASE_URL}/v1/deploy`, () => {
|
|
304
|
+
return HttpResponse.json(
|
|
305
|
+
createDeploySuccessResponse({ deploymentId: "deploy-setlive-fail" })
|
|
306
|
+
);
|
|
307
|
+
}),
|
|
308
|
+
http.get(`${BASE_URL}/v1/deployments/deploy-setlive-fail`, () => {
|
|
309
|
+
return HttpResponse.json(
|
|
310
|
+
createDeploymentStatusResponse({ deploymentId: "deploy-setlive-fail", status: "data_ready" })
|
|
311
|
+
);
|
|
312
|
+
}),
|
|
313
|
+
http.post(`${BASE_URL}/v1/deployments/deploy-setlive-fail/set-live`, () => {
|
|
314
|
+
return HttpResponse.json({ error: "Set live failed" }, { status: 500 });
|
|
315
|
+
})
|
|
316
|
+
);
|
|
317
|
+
|
|
318
|
+
const result = await deployToMain(config, resources, { pollIntervalMs: 1 });
|
|
319
|
+
|
|
320
|
+
expect(result.success).toBe(false);
|
|
321
|
+
expect(result.error).toContain("Failed to set deployment as live");
|
|
322
|
+
});
|
|
323
|
+
|
|
251
324
|
it("normalizes baseUrl with trailing slash", async () => {
|
|
252
325
|
let capturedUrl: string | null = null;
|
|
253
326
|
|
|
@@ -255,14 +328,16 @@ describe("Deploy API", () => {
|
|
|
255
328
|
http.post(`${BASE_URL}/v1/deploy`, ({ request }) => {
|
|
256
329
|
capturedUrl = request.url;
|
|
257
330
|
return HttpResponse.json(
|
|
258
|
-
createDeploySuccessResponse({ deploymentId: "deploy-slash"
|
|
331
|
+
createDeploySuccessResponse({ deploymentId: "deploy-slash" })
|
|
259
332
|
);
|
|
260
333
|
}),
|
|
261
334
|
http.get(`${BASE_URL}/v1/deployments/deploy-slash`, () => {
|
|
262
|
-
return HttpResponse.json(
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
335
|
+
return HttpResponse.json(
|
|
336
|
+
createDeploymentStatusResponse({ deploymentId: "deploy-slash", status: "data_ready" })
|
|
337
|
+
);
|
|
338
|
+
}),
|
|
339
|
+
http.post(`${BASE_URL}/v1/deployments/deploy-slash/set-live`, () => {
|
|
340
|
+
return HttpResponse.json(createSetLiveSuccessResponse());
|
|
266
341
|
})
|
|
267
342
|
);
|
|
268
343
|
|
|
@@ -275,7 +350,29 @@ describe("Deploy API", () => {
|
|
|
275
350
|
const parsed = new URL(capturedUrl ?? "");
|
|
276
351
|
expect(parsed.pathname).toBe("/v1/deploy");
|
|
277
352
|
expect(parsed.searchParams.get("from")).toBe("ts-sdk");
|
|
278
|
-
|
|
353
|
+
});
|
|
354
|
+
|
|
355
|
+
it("times out when deployment never becomes ready", async () => {
|
|
356
|
+
server.use(
|
|
357
|
+
http.post(`${BASE_URL}/v1/deploy`, () => {
|
|
358
|
+
return HttpResponse.json(
|
|
359
|
+
createDeploySuccessResponse({ deploymentId: "deploy-timeout", status: "pending" })
|
|
360
|
+
);
|
|
361
|
+
}),
|
|
362
|
+
http.get(`${BASE_URL}/v1/deployments/deploy-timeout`, () => {
|
|
363
|
+
return HttpResponse.json(
|
|
364
|
+
createDeploymentStatusResponse({ deploymentId: "deploy-timeout", status: "pending" })
|
|
365
|
+
);
|
|
366
|
+
})
|
|
367
|
+
);
|
|
368
|
+
|
|
369
|
+
const result = await deployToMain(config, resources, {
|
|
370
|
+
pollIntervalMs: 1,
|
|
371
|
+
maxPollAttempts: 3,
|
|
372
|
+
});
|
|
373
|
+
|
|
374
|
+
expect(result.success).toBe(false);
|
|
375
|
+
expect(result.error).toContain("Deployment timed out");
|
|
279
376
|
});
|
|
280
377
|
});
|
|
281
378
|
});
|
package/src/api/deploy.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Deploy resources to Tinybird main workspace
|
|
3
|
-
* Uses the /v1/deploy endpoint
|
|
3
|
+
* Uses the /v1/deploy endpoint to create a deployment, then sets it live
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
import type { GeneratedResources } from "../generator/index.js";
|
|
@@ -31,6 +31,13 @@ export interface Deployment {
|
|
|
31
31
|
feedback?: DeploymentFeedback[];
|
|
32
32
|
}
|
|
33
33
|
|
|
34
|
+
/**
|
|
35
|
+
* Response from /v1/deployments list endpoint
|
|
36
|
+
*/
|
|
37
|
+
export interface DeploymentsListResponse {
|
|
38
|
+
deployments: Deployment[];
|
|
39
|
+
}
|
|
40
|
+
|
|
34
41
|
/**
|
|
35
42
|
* Response from /v1/deploy endpoint
|
|
36
43
|
*/
|
|
@@ -41,14 +48,6 @@ export interface DeployResponse {
|
|
|
41
48
|
errors?: Array<{ filename?: string; error: string }>;
|
|
42
49
|
}
|
|
43
50
|
|
|
44
|
-
/**
|
|
45
|
-
* Response from /v1/deployments/{id} endpoint
|
|
46
|
-
*/
|
|
47
|
-
export interface DeploymentStatusResponse {
|
|
48
|
-
result: string;
|
|
49
|
-
deployment: Deployment;
|
|
50
|
-
}
|
|
51
|
-
|
|
52
51
|
/**
|
|
53
52
|
* Detailed deployment information with resource changes
|
|
54
53
|
*/
|
|
@@ -75,11 +74,21 @@ export interface DeploymentDetails extends Deployment {
|
|
|
75
74
|
errors?: Array<{ filename?: string; error: string }>;
|
|
76
75
|
}
|
|
77
76
|
|
|
77
|
+
/**
|
|
78
|
+
* Response from /v1/deployments/{id} endpoint
|
|
79
|
+
*/
|
|
80
|
+
export interface DeploymentStatusResponse {
|
|
81
|
+
result: string;
|
|
82
|
+
deployment: Deployment;
|
|
83
|
+
}
|
|
84
|
+
|
|
78
85
|
/**
|
|
79
86
|
* Deploy generated resources to Tinybird main workspace
|
|
80
87
|
*
|
|
81
88
|
* Uses the /v1/deploy endpoint which accepts all resources in a single
|
|
82
|
-
* multipart form request.
|
|
89
|
+
* multipart form request. After creating the deployment, this function:
|
|
90
|
+
* 1. Polls until the deployment is ready (status === 'data_ready')
|
|
91
|
+
* 2. Sets the deployment as live via /v1/deployments/{id}/set-live
|
|
83
92
|
*
|
|
84
93
|
* @param config - Build configuration with API URL and token
|
|
85
94
|
* @param resources - Generated resources to deploy
|
|
@@ -152,14 +161,13 @@ export async function deployToMain(
|
|
|
152
161
|
pollIntervalMs?: number;
|
|
153
162
|
maxPollAttempts?: number;
|
|
154
163
|
check?: boolean;
|
|
155
|
-
autoPromote?: boolean;
|
|
156
164
|
allowDestructiveOperations?: boolean;
|
|
157
165
|
callbacks?: DeployCallbacks;
|
|
158
166
|
}
|
|
159
167
|
): Promise<BuildApiResult> {
|
|
160
168
|
const debug = options?.debug ?? !!process.env.TINYBIRD_DEBUG;
|
|
161
169
|
const pollIntervalMs = options?.pollIntervalMs ?? 1000;
|
|
162
|
-
const maxPollAttempts = options?.maxPollAttempts ?? 120;
|
|
170
|
+
const maxPollAttempts = options?.maxPollAttempts ?? 120; // 2 minutes max
|
|
163
171
|
const baseUrl = config.baseUrl.replace(/\/$/, "");
|
|
164
172
|
|
|
165
173
|
const formData = new FormData();
|
|
@@ -194,17 +202,46 @@ export async function deployToMain(
|
|
|
194
202
|
);
|
|
195
203
|
}
|
|
196
204
|
|
|
197
|
-
//
|
|
198
|
-
|
|
205
|
+
// Step 0: Clean up any stale non-live deployments that might block the new deployment
|
|
206
|
+
try {
|
|
207
|
+
const deploymentsUrl = `${baseUrl}/v1/deployments`;
|
|
208
|
+
const deploymentsResponse = await tinybirdFetch(deploymentsUrl, {
|
|
209
|
+
headers: {
|
|
210
|
+
Authorization: `Bearer ${config.token}`,
|
|
211
|
+
},
|
|
212
|
+
});
|
|
213
|
+
|
|
214
|
+
if (deploymentsResponse.ok) {
|
|
215
|
+
const deploymentsBody = (await deploymentsResponse.json()) as DeploymentsListResponse;
|
|
216
|
+
const staleDeployments = deploymentsBody.deployments.filter(
|
|
217
|
+
(d) => !d.live && d.status !== "live"
|
|
218
|
+
);
|
|
219
|
+
|
|
220
|
+
for (const stale of staleDeployments) {
|
|
221
|
+
if (debug) {
|
|
222
|
+
console.log(`[debug] Cleaning up stale deployment: ${stale.id} (status: ${stale.status})`);
|
|
223
|
+
}
|
|
224
|
+
await tinybirdFetch(`${baseUrl}/v1/deployments/${stale.id}`, {
|
|
225
|
+
method: "DELETE",
|
|
226
|
+
headers: {
|
|
227
|
+
Authorization: `Bearer ${config.token}`,
|
|
228
|
+
},
|
|
229
|
+
});
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
} catch (e) {
|
|
233
|
+
// Ignore errors during cleanup - we'll try to deploy anyway
|
|
234
|
+
if (debug) {
|
|
235
|
+
console.log(`[debug] Failed to clean up stale deployments: ${e}`);
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
// Step 1: Create deployment via /v1/deploy
|
|
199
240
|
const deployUrlBase = `${baseUrl}/v1/deploy`;
|
|
200
241
|
const urlParams = new URLSearchParams();
|
|
201
242
|
if (options?.check) {
|
|
202
243
|
urlParams.set("check", "true");
|
|
203
244
|
}
|
|
204
|
-
const autoPromote = options?.autoPromote ?? !options?.check;
|
|
205
|
-
if (autoPromote) {
|
|
206
|
-
urlParams.set("auto_promote", "true");
|
|
207
|
-
}
|
|
208
245
|
if (options?.allowDestructiveOperations) {
|
|
209
246
|
urlParams.set("allow_destructive_operations", "true");
|
|
210
247
|
}
|
|
@@ -371,22 +408,18 @@ export async function deployToMain(
|
|
|
371
408
|
});
|
|
372
409
|
}
|
|
373
410
|
|
|
374
|
-
|
|
375
|
-
let
|
|
411
|
+
// Step 2: Poll until deployment is ready
|
|
412
|
+
let deployment = body.deployment;
|
|
413
|
+
let attempts = 0;
|
|
376
414
|
|
|
377
415
|
options?.callbacks?.onWaitingForReady?.();
|
|
378
416
|
|
|
379
|
-
while (
|
|
380
|
-
deployment.status !== "data_ready" &&
|
|
381
|
-
deployment.status !== "failed" &&
|
|
382
|
-
deployment.status !== "error" &&
|
|
383
|
-
statusAttempts < maxPollAttempts
|
|
384
|
-
) {
|
|
417
|
+
while (deployment.status !== "data_ready" && attempts < maxPollAttempts) {
|
|
385
418
|
await sleep(pollIntervalMs);
|
|
386
|
-
|
|
419
|
+
attempts++;
|
|
387
420
|
|
|
388
421
|
if (debug) {
|
|
389
|
-
console.log(`[debug] Polling deployment status (attempt ${
|
|
422
|
+
console.log(`[debug] Polling deployment status (attempt ${attempts})...`);
|
|
390
423
|
}
|
|
391
424
|
|
|
392
425
|
const statusUrl = `${baseUrl}/v1/deployments/${deploymentId}`;
|
|
@@ -410,18 +443,23 @@ export async function deployToMain(
|
|
|
410
443
|
|
|
411
444
|
const statusBody = (await statusResponse.json()) as DeploymentStatusResponse;
|
|
412
445
|
deployment = statusBody.deployment;
|
|
413
|
-
}
|
|
414
446
|
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
447
|
+
if (debug) {
|
|
448
|
+
console.log(`[debug] Deployment status: ${deployment.status}`);
|
|
449
|
+
}
|
|
450
|
+
|
|
451
|
+
// Check for failed status
|
|
452
|
+
if (deployment.status === "failed" || deployment.status === "error") {
|
|
453
|
+
return {
|
|
454
|
+
success: false,
|
|
455
|
+
result: "failed",
|
|
456
|
+
error: `Deployment failed with status: ${deployment.status}`,
|
|
457
|
+
datasourceCount: resources.datasources.length,
|
|
458
|
+
pipeCount: resources.pipes.length,
|
|
459
|
+
connectionCount: resources.connections?.length ?? 0,
|
|
460
|
+
buildId: deploymentId,
|
|
461
|
+
};
|
|
462
|
+
}
|
|
425
463
|
}
|
|
426
464
|
|
|
427
465
|
if (deployment.status !== "data_ready") {
|
|
@@ -438,64 +476,38 @@ export async function deployToMain(
|
|
|
438
476
|
|
|
439
477
|
options?.callbacks?.onDeploymentReady?.();
|
|
440
478
|
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
options?.callbacks?.onWaitingForPromote?.();
|
|
444
|
-
|
|
445
|
-
while (!deployment.live && promotionAttempts < maxPollAttempts) {
|
|
446
|
-
await sleep(pollIntervalMs);
|
|
447
|
-
promotionAttempts++;
|
|
479
|
+
// Step 3: Set the deployment as live
|
|
480
|
+
const setLiveUrl = `${baseUrl}/v1/deployments/${deploymentId}/set-live`;
|
|
448
481
|
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
const statusUrl = `${baseUrl}/v1/deployments/${deploymentId}`;
|
|
454
|
-
const statusResponse = await tinybirdFetch(statusUrl, {
|
|
455
|
-
headers: {
|
|
456
|
-
Authorization: `Bearer ${config.token}`,
|
|
457
|
-
},
|
|
458
|
-
});
|
|
459
|
-
|
|
460
|
-
if (!statusResponse.ok) {
|
|
461
|
-
return {
|
|
462
|
-
success: false,
|
|
463
|
-
result: "failed",
|
|
464
|
-
error: `Failed to check deployment status: ${statusResponse.status} ${statusResponse.statusText}`,
|
|
465
|
-
datasourceCount: resources.datasources.length,
|
|
466
|
-
pipeCount: resources.pipes.length,
|
|
467
|
-
connectionCount: resources.connections?.length ?? 0,
|
|
468
|
-
buildId: deploymentId,
|
|
469
|
-
};
|
|
470
|
-
}
|
|
471
|
-
|
|
472
|
-
const statusBody = (await statusResponse.json()) as DeploymentStatusResponse;
|
|
473
|
-
deployment = statusBody.deployment;
|
|
474
|
-
}
|
|
482
|
+
if (debug) {
|
|
483
|
+
console.log(`[debug] POST ${setLiveUrl}`);
|
|
484
|
+
}
|
|
475
485
|
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
pipeCount: resources.pipes.length,
|
|
483
|
-
connectionCount: resources.connections?.length ?? 0,
|
|
484
|
-
buildId: deploymentId,
|
|
485
|
-
};
|
|
486
|
-
}
|
|
486
|
+
const setLiveResponse = await tinybirdFetch(setLiveUrl, {
|
|
487
|
+
method: "POST",
|
|
488
|
+
headers: {
|
|
489
|
+
Authorization: `Bearer ${config.token}`,
|
|
490
|
+
},
|
|
491
|
+
});
|
|
487
492
|
|
|
488
|
-
|
|
493
|
+
if (!setLiveResponse.ok) {
|
|
494
|
+
const setLiveBody = await setLiveResponse.text();
|
|
495
|
+
return {
|
|
496
|
+
success: false,
|
|
497
|
+
result: "failed",
|
|
498
|
+
error: `Failed to set deployment as live: ${setLiveResponse.status} ${setLiveResponse.statusText}\n${setLiveBody}`,
|
|
499
|
+
datasourceCount: resources.datasources.length,
|
|
500
|
+
pipeCount: resources.pipes.length,
|
|
501
|
+
connectionCount: resources.connections?.length ?? 0,
|
|
502
|
+
buildId: deploymentId,
|
|
503
|
+
};
|
|
489
504
|
}
|
|
490
505
|
|
|
491
506
|
if (debug) {
|
|
492
|
-
|
|
493
|
-
console.log(`[debug] Deployment ${deploymentId} is now ${stateLabel}`);
|
|
507
|
+
console.log(`[debug] Deployment ${deploymentId} is now live`);
|
|
494
508
|
}
|
|
495
509
|
|
|
496
|
-
|
|
497
|
-
options?.callbacks?.onDeploymentLive?.(deploymentId);
|
|
498
|
-
}
|
|
510
|
+
options?.callbacks?.onDeploymentLive?.(deploymentId);
|
|
499
511
|
|
|
500
512
|
return {
|
|
501
513
|
success: true,
|
|
@@ -517,6 +529,9 @@ export async function deployToMain(
|
|
|
517
529
|
};
|
|
518
530
|
}
|
|
519
531
|
|
|
532
|
+
/**
|
|
533
|
+
* Helper function to sleep for a given number of milliseconds
|
|
534
|
+
*/
|
|
520
535
|
function sleep(ms: number): Promise<void> {
|
|
521
536
|
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
522
537
|
}
|