@tinybirdco/sdk 0.0.51 → 0.0.53
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/README.md +5 -0
- package/dist/api/deploy.d.ts +10 -17
- package/dist/api/deploy.d.ts.map +1 -1
- package/dist/api/deploy.js +81 -79
- package/dist/api/deploy.js.map +1 -1
- package/dist/api/deploy.test.js +74 -77
- package/dist/api/deploy.test.js.map +1 -1
- package/dist/cli/commands/deploy.d.ts +2 -0
- package/dist/cli/commands/deploy.d.ts.map +1 -1
- package/dist/cli/commands/deploy.js +1 -0
- package/dist/cli/commands/deploy.js.map +1 -1
- package/dist/cli/commands/deploy.test.d.ts +2 -0
- package/dist/cli/commands/deploy.test.d.ts.map +1 -0
- package/dist/cli/commands/deploy.test.js +68 -0
- package/dist/cli/commands/deploy.test.js.map +1 -0
- package/dist/cli/index.js +2 -0
- package/dist/cli/index.js.map +1 -1
- package/package.json +1 -1
- package/src/api/deploy.test.ts +86 -128
- package/src/api/deploy.ts +108 -107
- package/src/cli/commands/deploy.test.ts +82 -0
- package/src/cli/commands/deploy.ts +3 -0
- package/src/cli/index.ts +5 -0
package/README.md
CHANGED
|
@@ -393,8 +393,13 @@ Deploy resources to the main Tinybird workspace (production). This is the only w
|
|
|
393
393
|
```bash
|
|
394
394
|
tinybird deploy
|
|
395
395
|
tinybird deploy --dry-run # Preview without pushing
|
|
396
|
+
tinybird deploy --check # Validate with the API without applying changes
|
|
397
|
+
tinybird deploy --allow-destructive-operations # Allow deletes in main deploy
|
|
396
398
|
```
|
|
397
399
|
|
|
400
|
+
Use `--allow-destructive-operations` only when your deploy intentionally removes
|
|
401
|
+
existing datasources, pipes, or connections from the main workspace.
|
|
402
|
+
|
|
398
403
|
### `tinybird pull`
|
|
399
404
|
|
|
400
405
|
Download all cloud resources as native Tinybird datafiles (`.datasource`, `.pipe`, `.connection`).
|
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 with auto-promotion enabled
|
|
4
4
|
*/
|
|
5
5
|
import type { GeneratedResources } from "../generator/index.js";
|
|
6
6
|
import type { BuildConfig, BuildApiResult } from "./build.js";
|
|
@@ -23,12 +23,6 @@ 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
|
-
}
|
|
32
26
|
/**
|
|
33
27
|
* Response from /v1/deploy endpoint
|
|
34
28
|
*/
|
|
@@ -41,6 +35,13 @@ export interface DeployResponse {
|
|
|
41
35
|
error: string;
|
|
42
36
|
}>;
|
|
43
37
|
}
|
|
38
|
+
/**
|
|
39
|
+
* Response from /v1/deployments/{id} endpoint
|
|
40
|
+
*/
|
|
41
|
+
export interface DeploymentStatusResponse {
|
|
42
|
+
result: string;
|
|
43
|
+
deployment: Deployment;
|
|
44
|
+
}
|
|
44
45
|
/**
|
|
45
46
|
* Detailed deployment information with resource changes
|
|
46
47
|
*/
|
|
@@ -69,20 +70,11 @@ export interface DeploymentDetails extends Deployment {
|
|
|
69
70
|
error: string;
|
|
70
71
|
}>;
|
|
71
72
|
}
|
|
72
|
-
/**
|
|
73
|
-
* Response from /v1/deployments/{id} endpoint
|
|
74
|
-
*/
|
|
75
|
-
export interface DeploymentStatusResponse {
|
|
76
|
-
result: string;
|
|
77
|
-
deployment: Deployment;
|
|
78
|
-
}
|
|
79
73
|
/**
|
|
80
74
|
* Deploy generated resources to Tinybird main workspace
|
|
81
75
|
*
|
|
82
76
|
* Uses the /v1/deploy endpoint which accepts all resources in a single
|
|
83
|
-
* multipart form request.
|
|
84
|
-
* 1. Polls until the deployment is ready (status === 'data_ready')
|
|
85
|
-
* 2. Sets the deployment as live via /v1/deployments/{id}/set-live
|
|
77
|
+
* multipart form request.
|
|
86
78
|
*
|
|
87
79
|
* @param config - Build configuration with API URL and token
|
|
88
80
|
* @param resources - Generated resources to deploy
|
|
@@ -150,6 +142,7 @@ export declare function deployToMain(config: BuildConfig, resources: GeneratedRe
|
|
|
150
142
|
pollIntervalMs?: number;
|
|
151
143
|
maxPollAttempts?: number;
|
|
152
144
|
check?: boolean;
|
|
145
|
+
autoPromote?: boolean;
|
|
153
146
|
allowDestructiveOperations?: boolean;
|
|
154
147
|
callbacks?: DeployCallbacks;
|
|
155
148
|
}): 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;
|
|
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,12 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Deploy resources to Tinybird main workspace
|
|
3
|
-
* Uses the /v1/deploy endpoint
|
|
3
|
+
* Uses the /v1/deploy endpoint with auto-promotion enabled
|
|
4
4
|
*/
|
|
5
5
|
import { tinybirdFetch } from "./fetcher.js";
|
|
6
|
+
const FORWARD_CLASSIC_GUIDANCE = "Use the Tinybird Classic CLI (`tb`) from a Tinybird Classic workspace for this operation.";
|
|
6
7
|
export async function deployToMain(config, resources, options) {
|
|
7
8
|
const debug = options?.debug ?? !!process.env.TINYBIRD_DEBUG;
|
|
8
9
|
const pollIntervalMs = options?.pollIntervalMs ?? 1000;
|
|
9
|
-
const maxPollAttempts = options?.maxPollAttempts ?? 120;
|
|
10
|
+
const maxPollAttempts = options?.maxPollAttempts ?? 120;
|
|
10
11
|
const baseUrl = config.baseUrl.replace(/\/$/, "");
|
|
11
12
|
const formData = new FormData();
|
|
12
13
|
// Add datasources
|
|
@@ -29,42 +30,17 @@ export async function deployToMain(config, resources, options) {
|
|
|
29
30
|
}
|
|
30
31
|
formData.append(fieldName, new Blob([pipe.content], { type: "text/plain" }), fileName);
|
|
31
32
|
}
|
|
32
|
-
//
|
|
33
|
-
|
|
34
|
-
const deploymentsUrl = `${baseUrl}/v1/deployments`;
|
|
35
|
-
const deploymentsResponse = await tinybirdFetch(deploymentsUrl, {
|
|
36
|
-
headers: {
|
|
37
|
-
Authorization: `Bearer ${config.token}`,
|
|
38
|
-
},
|
|
39
|
-
});
|
|
40
|
-
if (deploymentsResponse.ok) {
|
|
41
|
-
const deploymentsBody = (await deploymentsResponse.json());
|
|
42
|
-
const staleDeployments = deploymentsBody.deployments.filter((d) => !d.live && d.status !== "live");
|
|
43
|
-
for (const stale of staleDeployments) {
|
|
44
|
-
if (debug) {
|
|
45
|
-
console.log(`[debug] Cleaning up stale deployment: ${stale.id} (status: ${stale.status})`);
|
|
46
|
-
}
|
|
47
|
-
await tinybirdFetch(`${baseUrl}/v1/deployments/${stale.id}`, {
|
|
48
|
-
method: "DELETE",
|
|
49
|
-
headers: {
|
|
50
|
-
Authorization: `Bearer ${config.token}`,
|
|
51
|
-
},
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
catch (e) {
|
|
57
|
-
// Ignore errors during cleanup - we'll try to deploy anyway
|
|
58
|
-
if (debug) {
|
|
59
|
-
console.log(`[debug] Failed to clean up stale deployments: ${e}`);
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
// Step 1: Create deployment via /v1/deploy
|
|
33
|
+
// Create deployment via /v1/deploy.
|
|
34
|
+
// `auto_promote=true` makes the API promote the deployment automatically.
|
|
63
35
|
const deployUrlBase = `${baseUrl}/v1/deploy`;
|
|
64
36
|
const urlParams = new URLSearchParams();
|
|
65
37
|
if (options?.check) {
|
|
66
38
|
urlParams.set("check", "true");
|
|
67
39
|
}
|
|
40
|
+
const autoPromote = options?.autoPromote ?? !options?.check;
|
|
41
|
+
if (autoPromote) {
|
|
42
|
+
urlParams.set("auto_promote", "true");
|
|
43
|
+
}
|
|
68
44
|
if (options?.allowDestructiveOperations) {
|
|
69
45
|
urlParams.set("allow_destructive_operations", "true");
|
|
70
46
|
}
|
|
@@ -99,7 +75,7 @@ export async function deployToMain(config, resources, options) {
|
|
|
99
75
|
.map((f) => {
|
|
100
76
|
// Extract just the filename from "Datasource events.datasource" format
|
|
101
77
|
const resourceName = f.resource.split(" ").pop() ?? f.resource;
|
|
102
|
-
return `${resourceName}: ${f.message}`;
|
|
78
|
+
return `${resourceName}: ${normalizeDeployErrorMessage(f.message)}`;
|
|
103
79
|
})
|
|
104
80
|
.join("\n");
|
|
105
81
|
};
|
|
@@ -116,12 +92,12 @@ export async function deployToMain(config, resources, options) {
|
|
|
116
92
|
return body.errors
|
|
117
93
|
.map((e) => {
|
|
118
94
|
const prefix = e.filename ? `[${e.filename}] ` : "";
|
|
119
|
-
return `${prefix}${e.error}`;
|
|
95
|
+
return `${prefix}${normalizeDeployErrorMessage(e.error)}`;
|
|
120
96
|
})
|
|
121
97
|
.join("\n");
|
|
122
98
|
}
|
|
123
99
|
if (body.error) {
|
|
124
|
-
return body.error;
|
|
100
|
+
return normalizeDeployErrorMessage(body.error);
|
|
125
101
|
}
|
|
126
102
|
// Include raw response body for debugging when no structured error is available
|
|
127
103
|
return `HTTP ${response.status}: ${response.statusText}\nResponse: ${rawBody}`;
|
|
@@ -213,15 +189,17 @@ export async function deployToMain(config, resources, options) {
|
|
|
213
189
|
},
|
|
214
190
|
});
|
|
215
191
|
}
|
|
216
|
-
|
|
217
|
-
let
|
|
218
|
-
let attempts = 0;
|
|
192
|
+
let deployment = deploymentDetails;
|
|
193
|
+
let statusAttempts = 0;
|
|
219
194
|
options?.callbacks?.onWaitingForReady?.();
|
|
220
|
-
while (deployment.status !== "data_ready" &&
|
|
195
|
+
while (deployment.status !== "data_ready" &&
|
|
196
|
+
deployment.status !== "failed" &&
|
|
197
|
+
deployment.status !== "error" &&
|
|
198
|
+
statusAttempts < maxPollAttempts) {
|
|
221
199
|
await sleep(pollIntervalMs);
|
|
222
|
-
|
|
200
|
+
statusAttempts++;
|
|
223
201
|
if (debug) {
|
|
224
|
-
console.log(`[debug] Polling deployment status (attempt ${
|
|
202
|
+
console.log(`[debug] Polling deployment status (attempt ${statusAttempts})...`);
|
|
225
203
|
}
|
|
226
204
|
const statusUrl = `${baseUrl}/v1/deployments/${deploymentId}`;
|
|
227
205
|
const statusResponse = await tinybirdFetch(statusUrl, {
|
|
@@ -242,61 +220,79 @@ export async function deployToMain(config, resources, options) {
|
|
|
242
220
|
}
|
|
243
221
|
const statusBody = (await statusResponse.json());
|
|
244
222
|
deployment = statusBody.deployment;
|
|
245
|
-
if (debug) {
|
|
246
|
-
console.log(`[debug] Deployment status: ${deployment.status}`);
|
|
247
|
-
}
|
|
248
|
-
// Check for failed status
|
|
249
|
-
if (deployment.status === "failed" || deployment.status === "error") {
|
|
250
|
-
return {
|
|
251
|
-
success: false,
|
|
252
|
-
result: "failed",
|
|
253
|
-
error: `Deployment failed with status: ${deployment.status}`,
|
|
254
|
-
datasourceCount: resources.datasources.length,
|
|
255
|
-
pipeCount: resources.pipes.length,
|
|
256
|
-
connectionCount: resources.connections?.length ?? 0,
|
|
257
|
-
buildId: deploymentId,
|
|
258
|
-
};
|
|
259
|
-
}
|
|
260
223
|
}
|
|
261
|
-
if (deployment.status
|
|
224
|
+
if (deployment.status === "failed" || deployment.status === "error") {
|
|
262
225
|
return {
|
|
263
226
|
success: false,
|
|
264
227
|
result: "failed",
|
|
265
|
-
error: `Deployment
|
|
228
|
+
error: `Deployment failed with status: ${deployment.status}`,
|
|
266
229
|
datasourceCount: resources.datasources.length,
|
|
267
230
|
pipeCount: resources.pipes.length,
|
|
268
231
|
connectionCount: resources.connections?.length ?? 0,
|
|
269
232
|
buildId: deploymentId,
|
|
270
233
|
};
|
|
271
234
|
}
|
|
272
|
-
|
|
273
|
-
// Step 3: Set the deployment as live
|
|
274
|
-
const setLiveUrl = `${baseUrl}/v1/deployments/${deploymentId}/set-live`;
|
|
275
|
-
if (debug) {
|
|
276
|
-
console.log(`[debug] POST ${setLiveUrl}`);
|
|
277
|
-
}
|
|
278
|
-
const setLiveResponse = await tinybirdFetch(setLiveUrl, {
|
|
279
|
-
method: "POST",
|
|
280
|
-
headers: {
|
|
281
|
-
Authorization: `Bearer ${config.token}`,
|
|
282
|
-
},
|
|
283
|
-
});
|
|
284
|
-
if (!setLiveResponse.ok) {
|
|
285
|
-
const setLiveBody = await setLiveResponse.text();
|
|
235
|
+
if (deployment.status !== "data_ready") {
|
|
286
236
|
return {
|
|
287
237
|
success: false,
|
|
288
238
|
result: "failed",
|
|
289
|
-
error: `
|
|
239
|
+
error: `Deployment timed out after ${maxPollAttempts} attempts. Last status: ${deployment.status}`,
|
|
290
240
|
datasourceCount: resources.datasources.length,
|
|
291
241
|
pipeCount: resources.pipes.length,
|
|
292
242
|
connectionCount: resources.connections?.length ?? 0,
|
|
293
243
|
buildId: deploymentId,
|
|
294
244
|
};
|
|
295
245
|
}
|
|
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
|
+
}
|
|
296
289
|
if (debug) {
|
|
297
|
-
|
|
290
|
+
const stateLabel = deployment.live ? "live" : "ready";
|
|
291
|
+
console.log(`[debug] Deployment ${deploymentId} is now ${stateLabel}`);
|
|
292
|
+
}
|
|
293
|
+
if (deployment.live) {
|
|
294
|
+
options?.callbacks?.onDeploymentLive?.(deploymentId);
|
|
298
295
|
}
|
|
299
|
-
options?.callbacks?.onDeploymentLive?.(deploymentId);
|
|
300
296
|
return {
|
|
301
297
|
success: true,
|
|
302
298
|
result: "success",
|
|
@@ -316,10 +312,16 @@ export async function deployToMain(config, resources, options) {
|
|
|
316
312
|
},
|
|
317
313
|
};
|
|
318
314
|
}
|
|
319
|
-
/**
|
|
320
|
-
* Helper function to sleep for a given number of milliseconds
|
|
321
|
-
*/
|
|
322
315
|
function sleep(ms) {
|
|
323
316
|
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
324
317
|
}
|
|
318
|
+
function normalizeDeployErrorMessage(message) {
|
|
319
|
+
const trimmedMessage = message.trim();
|
|
320
|
+
const isForwardClassicError = trimmedMessage.includes("Tinybird Forward workspace") &&
|
|
321
|
+
trimmedMessage.includes("Tinybird Classic workspaces");
|
|
322
|
+
if (!isForwardClassicError || trimmedMessage.includes(FORWARD_CLASSIC_GUIDANCE)) {
|
|
323
|
+
return message;
|
|
324
|
+
}
|
|
325
|
+
return `${trimmedMessage}\n${FORWARD_CLASSIC_GUIDANCE}`;
|
|
326
|
+
}
|
|
325
327
|
//# sourceMappingURL=deploy.js.map
|
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":"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"}
|
package/dist/api/deploy.test.js
CHANGED
|
@@ -1,16 +1,10 @@
|
|
|
1
|
-
import { describe, it, expect, beforeAll,
|
|
1
|
+
import { describe, it, expect, beforeAll, afterEach, afterAll, vi } 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,
|
|
5
|
+
import { BASE_URL, createDeploySuccessResponse, createBuildFailureResponse, createBuildMultipleErrorsResponse, } 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
|
-
});
|
|
14
8
|
afterEach(() => server.resetHandlers());
|
|
15
9
|
afterAll(() => server.close());
|
|
16
10
|
describe("Deploy API", () => {
|
|
@@ -19,53 +13,44 @@ describe("Deploy API", () => {
|
|
|
19
13
|
token: "p.test-token",
|
|
20
14
|
};
|
|
21
15
|
const resources = {
|
|
22
|
-
datasources: [
|
|
23
|
-
|
|
24
|
-
],
|
|
25
|
-
pipes: [
|
|
26
|
-
{ name: "top_events", content: "NODE main\nSQL > SELECT * FROM events" },
|
|
27
|
-
],
|
|
16
|
+
datasources: [{ name: "events", content: "SCHEMA > timestamp DateTime" }],
|
|
17
|
+
pipes: [{ name: "top_events", content: "NODE main\nSQL > SELECT * FROM events" }],
|
|
28
18
|
connections: [],
|
|
29
19
|
};
|
|
30
|
-
|
|
31
|
-
function setupSuccessfulDeployFlow(deploymentId = "deploy-abc") {
|
|
20
|
+
function setupAutoPromoteSuccessFlow(deploymentId = "deploy-abc") {
|
|
32
21
|
server.use(http.post(`${BASE_URL}/v1/deploy`, () => {
|
|
33
22
|
return HttpResponse.json(createDeploySuccessResponse({ deploymentId, status: "pending" }));
|
|
34
23
|
}), http.get(`${BASE_URL}/v1/deployments/${deploymentId}`, () => {
|
|
35
|
-
return HttpResponse.json(
|
|
36
|
-
|
|
37
|
-
|
|
24
|
+
return HttpResponse.json({
|
|
25
|
+
result: "success",
|
|
26
|
+
deployment: {
|
|
27
|
+
id: deploymentId,
|
|
28
|
+
status: "data_ready",
|
|
29
|
+
live: true,
|
|
30
|
+
},
|
|
31
|
+
});
|
|
38
32
|
}));
|
|
39
33
|
}
|
|
40
34
|
describe("deployToMain", () => {
|
|
41
|
-
it("successfully deploys resources with
|
|
42
|
-
|
|
43
|
-
const
|
|
35
|
+
it("successfully deploys resources with auto-promote flow", async () => {
|
|
36
|
+
setupAutoPromoteSuccessFlow("deploy-abc");
|
|
37
|
+
const onDeploymentLive = vi.fn();
|
|
38
|
+
const result = await deployToMain(config, resources, {
|
|
39
|
+
pollIntervalMs: 1,
|
|
40
|
+
callbacks: { onDeploymentLive },
|
|
41
|
+
});
|
|
44
42
|
expect(result.success).toBe(true);
|
|
45
43
|
expect(result.result).toBe("success");
|
|
46
44
|
expect(result.buildId).toBe("deploy-abc");
|
|
47
45
|
expect(result.datasourceCount).toBe(1);
|
|
48
46
|
expect(result.pipeCount).toBe(1);
|
|
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);
|
|
47
|
+
expect(onDeploymentLive).toHaveBeenCalledWith("deploy-abc");
|
|
65
48
|
});
|
|
66
49
|
it("handles deploy failure with single error", async () => {
|
|
67
50
|
server.use(http.post(`${BASE_URL}/v1/deploy`, () => {
|
|
68
|
-
return HttpResponse.json(createBuildFailureResponse("Permission denied"), {
|
|
51
|
+
return HttpResponse.json(createBuildFailureResponse("Permission denied"), {
|
|
52
|
+
status: 200,
|
|
53
|
+
});
|
|
69
54
|
}));
|
|
70
55
|
const result = await deployToMain(config, resources);
|
|
71
56
|
expect(result.success).toBe(false);
|
|
@@ -101,70 +86,82 @@ describe("Deploy API", () => {
|
|
|
101
86
|
}));
|
|
102
87
|
await expect(deployToMain(config, resources)).rejects.toThrow("Failed to parse response");
|
|
103
88
|
});
|
|
104
|
-
it("uses /v1/deploy endpoint
|
|
89
|
+
it("uses /v1/deploy endpoint and sends auto_promote by default", async () => {
|
|
105
90
|
let capturedUrl = null;
|
|
106
91
|
server.use(http.post(`${BASE_URL}/v1/deploy`, ({ request }) => {
|
|
107
92
|
capturedUrl = request.url;
|
|
108
|
-
return HttpResponse.json(createDeploySuccessResponse({ deploymentId: "deploy-url-test" }));
|
|
93
|
+
return HttpResponse.json(createDeploySuccessResponse({ deploymentId: "deploy-url-test", status: "pending" }));
|
|
109
94
|
}), http.get(`${BASE_URL}/v1/deployments/deploy-url-test`, () => {
|
|
110
|
-
return HttpResponse.json(
|
|
111
|
-
|
|
112
|
-
|
|
95
|
+
return HttpResponse.json({
|
|
96
|
+
result: "success",
|
|
97
|
+
deployment: { id: "deploy-url-test", status: "data_ready", live: true },
|
|
98
|
+
});
|
|
113
99
|
}));
|
|
114
100
|
await deployToMain(config, resources, { pollIntervalMs: 1 });
|
|
115
101
|
const parsed = new URL(capturedUrl ?? "");
|
|
116
102
|
expect(parsed.pathname).toBe("/v1/deploy");
|
|
117
103
|
expect(parsed.searchParams.get("from")).toBe("ts-sdk");
|
|
104
|
+
expect(parsed.searchParams.get("auto_promote")).toBe("true");
|
|
118
105
|
});
|
|
119
|
-
it("
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
return HttpResponse.json(
|
|
106
|
+
it("passes allow_destructive_operations when explicitly enabled", async () => {
|
|
107
|
+
let capturedUrl = null;
|
|
108
|
+
server.use(http.post(`${BASE_URL}/v1/deploy`, ({ request }) => {
|
|
109
|
+
capturedUrl = request.url;
|
|
110
|
+
return HttpResponse.json(createDeploySuccessResponse({ deploymentId: "deploy-destructive", status: "pending" }));
|
|
111
|
+
}), http.get(`${BASE_URL}/v1/deployments/deploy-destructive`, () => {
|
|
112
|
+
return HttpResponse.json({
|
|
113
|
+
result: "success",
|
|
114
|
+
deployment: { id: "deploy-destructive", status: "data_ready", live: true },
|
|
115
|
+
});
|
|
124
116
|
}));
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
117
|
+
await deployToMain(config, resources, {
|
|
118
|
+
pollIntervalMs: 1,
|
|
119
|
+
allowDestructiveOperations: true,
|
|
120
|
+
});
|
|
121
|
+
const parsed = new URL(capturedUrl ?? "");
|
|
122
|
+
expect(parsed.searchParams.get("allow_destructive_operations")).toBe("true");
|
|
123
|
+
expect(parsed.searchParams.get("auto_promote")).toBe("true");
|
|
124
|
+
});
|
|
125
|
+
it("does not send auto_promote in check mode", async () => {
|
|
126
|
+
let capturedUrl = null;
|
|
127
|
+
server.use(http.post(`${BASE_URL}/v1/deploy`, ({ request }) => {
|
|
128
|
+
capturedUrl = request.url;
|
|
129
|
+
return HttpResponse.json({ result: "success" });
|
|
130
|
+
}));
|
|
131
|
+
const result = await deployToMain(config, resources, { check: true });
|
|
132
|
+
expect(result.success).toBe(true);
|
|
133
|
+
const parsed = new URL(capturedUrl ?? "");
|
|
134
|
+
expect(parsed.searchParams.get("check")).toBe("true");
|
|
135
|
+
expect(parsed.searchParams.get("auto_promote")).toBeNull();
|
|
128
136
|
});
|
|
129
|
-
it("
|
|
137
|
+
it("adds actionable guidance to Forward/Classic workspace errors", async () => {
|
|
130
138
|
server.use(http.post(`${BASE_URL}/v1/deploy`, () => {
|
|
131
|
-
return HttpResponse.json(
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
return HttpResponse.json({ error: "Set live failed" }, { status: 500 });
|
|
139
|
+
return HttpResponse.json({
|
|
140
|
+
result: "failed",
|
|
141
|
+
error: "This is a Tinybird Forward workspace, and this operation is only available for Tinybird Classic workspaces.",
|
|
142
|
+
}, { status: 400 });
|
|
136
143
|
}));
|
|
137
|
-
const result = await deployToMain(config, resources
|
|
144
|
+
const result = await deployToMain(config, resources);
|
|
138
145
|
expect(result.success).toBe(false);
|
|
139
|
-
expect(result.error).toContain("
|
|
146
|
+
expect(result.error).toContain("Tinybird Forward workspace");
|
|
147
|
+
expect(result.error).toContain("Use the Tinybird Classic CLI (`tb`) from a Tinybird Classic workspace for this operation.");
|
|
140
148
|
});
|
|
141
149
|
it("normalizes baseUrl with trailing slash", async () => {
|
|
142
150
|
let capturedUrl = null;
|
|
143
151
|
server.use(http.post(`${BASE_URL}/v1/deploy`, ({ request }) => {
|
|
144
152
|
capturedUrl = request.url;
|
|
145
|
-
return HttpResponse.json(createDeploySuccessResponse({ deploymentId: "deploy-slash" }));
|
|
153
|
+
return HttpResponse.json(createDeploySuccessResponse({ deploymentId: "deploy-slash", status: "pending" }));
|
|
146
154
|
}), http.get(`${BASE_URL}/v1/deployments/deploy-slash`, () => {
|
|
147
|
-
return HttpResponse.json(
|
|
148
|
-
|
|
149
|
-
|
|
155
|
+
return HttpResponse.json({
|
|
156
|
+
result: "success",
|
|
157
|
+
deployment: { id: "deploy-slash", status: "data_ready", live: true },
|
|
158
|
+
});
|
|
150
159
|
}));
|
|
151
160
|
await deployToMain({ ...config, baseUrl: `${BASE_URL}/` }, resources, { pollIntervalMs: 1 });
|
|
152
161
|
const parsed = new URL(capturedUrl ?? "");
|
|
153
162
|
expect(parsed.pathname).toBe("/v1/deploy");
|
|
154
163
|
expect(parsed.searchParams.get("from")).toBe("ts-sdk");
|
|
155
|
-
|
|
156
|
-
it("times out when deployment never becomes ready", async () => {
|
|
157
|
-
server.use(http.post(`${BASE_URL}/v1/deploy`, () => {
|
|
158
|
-
return HttpResponse.json(createDeploySuccessResponse({ deploymentId: "deploy-timeout", status: "pending" }));
|
|
159
|
-
}), http.get(`${BASE_URL}/v1/deployments/deploy-timeout`, () => {
|
|
160
|
-
return HttpResponse.json(createDeploymentStatusResponse({ deploymentId: "deploy-timeout", status: "pending" }));
|
|
161
|
-
}));
|
|
162
|
-
const result = await deployToMain(config, resources, {
|
|
163
|
-
pollIntervalMs: 1,
|
|
164
|
-
maxPollAttempts: 3,
|
|
165
|
-
});
|
|
166
|
-
expect(result.success).toBe(false);
|
|
167
|
-
expect(result.error).toContain("Deployment timed out");
|
|
164
|
+
expect(parsed.searchParams.get("auto_promote")).toBe("true");
|
|
168
165
|
});
|
|
169
166
|
});
|
|
170
167
|
});
|