Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
200 changes: 200 additions & 0 deletions CHANGELOG.md

Large diffs are not rendered by default.

8 changes: 4 additions & 4 deletions apps/lsp-playground/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "lsp-playground",
"version": "8.0.0-rc.11",
"version": "8.0.0-rc.12",
"private": true,
"type": "module",
"description": "Private dev playground: opens a PSL file in a browser Monaco editor wired to the Prisma 8 language server for live diagnostics.",
Expand All @@ -24,7 +24,7 @@
"@codingame/monaco-vscode-textmate-service-override": "^25.1.2",
"@codingame/monaco-vscode-theme-defaults-default-extension": "^25.1.2",
"@codingame/monaco-vscode-theme-service-override": "^25.1.2",
"@prisma/orm-postgres": "workspace:8.0.0-rc.11",
"@prisma/orm-postgres": "workspace:8.0.0-rc.12",
"monaco-editor": "^0.56.0",
"monaco-languageclient": "^10.7.0",
"vscode": "npm:@codingame/monaco-vscode-extension-api@^25.1.2",
Expand All @@ -35,8 +35,8 @@
"ws": "^8.21.2"
},
"devDependencies": {
"@prisma/cli-engine": "0.4.0",
"@repo/tsconfig": "workspace:8.0.0-rc.11",
"@prisma/cli-engine": "0.6.1",
"@repo/tsconfig": "workspace:8.0.0-rc.12",
"@types/node": "catalog:",
"@types/ws": "^8.5.13",
"puppeteer-core": "^25.4.0",
Expand Down
11 changes: 3 additions & 8 deletions apps/telemetry-backend/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -112,12 +112,7 @@ Postgres on `localhost:5433` for local-dev use.

## Deploy hand-off

Deployment goes through Prisma Compute via `pnpm run deploy`, which
runs `scripts/deploy.ts`. The script uses `@prisma/compute-sdk`'s
`BunBuild` strategy to build the package from `src/server.ts`, archive
and upload it, create a new version, and promote it on the configured
service. The assigned `*.prisma.build` URL is the build-time constant
the CLI client embeds.
Deployment goes through Prisma Compute via `pnpm run deploy`, which runs `scripts/deploy.ts`. The script uses `@prisma/compute-sdk`'s `BunBuild` strategy to build the package from `src/server.ts`, archive and upload it, create a new deployment, and promote it on the configured app. The assigned `*.prisma.build` URL is the build-time constant the CLI client embeds.

`scripts/deploy.ts` reads three env vars (in addition to `DATABASE_URL`,
which is only needed for the migrate step):
Expand All @@ -126,7 +121,7 @@ which is only needed for the migrate step):
| --- | --- | --- |
| `TELEMETRY_DEPLOY_SERVICE_TOKEN` | yes | Prisma Management API token. |
| `TELEMETRY_DEPLOY_PROJECT_ID` | yes | Prisma Compute project ID. |
| `TELEMETRY_DEPLOY_SERVICE_ID` | yes | Prisma Compute service ID. |
| `TELEMETRY_DEPLOY_SERVICE_ID` | yes | Prisma Compute app ID. |

In CI, the canonical entry point is
[`.github/workflows/deploy-telemetry-backend.yml`](../../.github/workflows/deploy-telemetry-backend.yml),
Expand All @@ -142,7 +137,7 @@ run the same two commands from `apps/telemetry-backend/`:
DATABASE_URL=<production-postgres-url> \
TELEMETRY_DEPLOY_SERVICE_TOKEN=<token> \
TELEMETRY_DEPLOY_PROJECT_ID=<project-id> \
TELEMETRY_DEPLOY_SERVICE_ID=<service-id> \
TELEMETRY_DEPLOY_SERVICE_ID=<app-id> \
pnpm run migrate && pnpm run deploy
```

Expand Down
14 changes: 7 additions & 7 deletions apps/telemetry-backend/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "telemetry-backend",
"version": "8.0.0-rc.11",
"version": "8.0.0-rc.12",
"private": true,
"type": "module",
"engines": {
Expand All @@ -22,16 +22,16 @@
"clean": "rm -rf dist coverage"
},
"dependencies": {
"@prisma/orm-postgres": "workspace:8.0.0-rc.11",
"@prisma/orm-postgres": "workspace:8.0.0-rc.12",
"arktype": "catalog:",
"evlog": "^2.24.0"
},
"devDependencies": {
"@prisma/cli-engine": "0.4.0",
"@prisma/compute-sdk": "^0.39.0",
"@prisma/management-api-sdk": "^1.56.0",
"@repo/test-utils": "workspace:8.0.0-rc.11",
"@repo/tsconfig": "workspace:8.0.0-rc.11",
"@prisma/cli-engine": "0.6.1",
"@prisma/compute-sdk": "^0.43.0",
"@prisma/management-api-sdk": "^1.76.0",
"@repo/test-utils": "workspace:8.0.0-rc.12",
"@repo/tsconfig": "workspace:8.0.0-rc.12",
"@types/bun": "^1.2.18",
"@types/node": "catalog:",
"@types/pg": "catalog:",
Expand Down
68 changes: 34 additions & 34 deletions apps/telemetry-backend/scripts/deploy.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,18 +3,18 @@ import { fileURLToPath } from 'node:url';
import { BuildError, BunBuild, ComputeClient } from '@prisma/compute-sdk';
import { createManagementApiClient } from '@prisma/management-api-sdk';

const token = process.env.TELEMETRY_DEPLOY_SERVICE_TOKEN;
const token = process.env['TELEMETRY_DEPLOY_SERVICE_TOKEN'];
if (!token) {
throw new Error('TELEMETRY_DEPLOY_SERVICE_TOKEN not set');
}

const projectId = process.env.TELEMETRY_DEPLOY_PROJECT_ID;
const projectId = process.env['TELEMETRY_DEPLOY_PROJECT_ID'];
if (!projectId) {
throw new Error('TELEMETRY_DEPLOY_PROJECT_ID not set');
}

const serviceId = process.env.TELEMETRY_DEPLOY_SERVICE_ID;
if (!serviceId) {
const appId = process.env['TELEMETRY_DEPLOY_SERVICE_ID'];
if (!appId) {
throw new Error('TELEMETRY_DEPLOY_SERVICE_ID not set');
}

Expand All @@ -27,7 +27,7 @@ const result = await compute.deploy({
entrypoint: 'src/server.ts',
}),
projectId,
serviceId,
appId,
progress: {
onBuildStart() {
console.log('Building application...');
Expand All @@ -41,8 +41,8 @@ const result = await compute.deploy({
onArchiveReady(sizeBytes) {
console.log(`Archive ready (${sizeBytes} bytes)`);
},
onVersionCreated(versionId) {
console.log(`Version created: ${versionId}`);
onDeploymentCreated(deploymentId) {
console.log(`Deployment created: ${deploymentId}`);
},
onUploadStart() {
console.log('Uploading archive...');
Expand All @@ -60,55 +60,55 @@ const result = await compute.deploy({
console.log(`Deployment running at ${deploymentUrl}`);
},
onPromoteStart() {
console.log('Promoting new version...');
console.log('Promoting new deployment...');
},
onPromoted(serviceEndpointDomain) {
console.log(`Promoted: ${serviceEndpointDomain}`);
onPromoted(appEndpointDomain) {
console.log(`Promoted: ${appEndpointDomain}`);
},
onPromoteFailed(error) {
console.error(`Promote failed: ${error}`);
},
onOldVersionStopping(versionId) {
console.log(`Stopping old version ${versionId}...`);
onOldDeploymentStopping(deploymentId) {
console.log(`Stopping old deployment ${deploymentId}...`);
},
onOldVersionStopped(versionId) {
console.log(`Stopped old version ${versionId}`);
onOldDeploymentStopped(deploymentId) {
console.log(`Stopped old deployment ${deploymentId}`);
},
onOldVersionStopFailed(versionId) {
console.error(`Failed to stop old version ${versionId}`);
onOldDeploymentStopFailed(deploymentId) {
console.error(`Failed to stop old deployment ${deploymentId}`);
},
onOldVersionDeleting(versionId) {
console.log(`Deleting old version ${versionId}...`);
onOldDeploymentDeleting(deploymentId) {
console.log(`Deleting old deployment ${deploymentId}...`);
},
onOldVersionDeleted(versionId) {
console.log(`Deleted old version ${versionId}`);
onOldDeploymentDeleted(deploymentId) {
console.log(`Deleted old deployment ${deploymentId}`);
},
onOldVersionDeleteFailed(versionId) {
console.error(`Failed to delete old version ${versionId}`);
onOldDeploymentDeleteFailed(deploymentId) {
console.error(`Failed to delete old deployment ${deploymentId}`);
},
onCleanupDanglingVersion(versionId) {
console.log(`Cleaning up dangling version ${versionId}...`);
onCleanupDanglingDeployment(deploymentId) {
console.log(`Cleaning up dangling deployment ${deploymentId}...`);
},
onCleanupDanglingVersionComplete(versionId) {
console.log(`Cleaned up dangling version ${versionId}`);
onCleanupDanglingDeploymentComplete(deploymentId) {
console.log(`Cleaned up dangling deployment ${deploymentId}`);
},
onCleanupDanglingVersionFailed(versionId) {
console.error(`Failed to clean up dangling version ${versionId}`);
onCleanupDanglingDeploymentFailed(deploymentId) {
console.error(`Failed to clean up dangling deployment ${deploymentId}`);
},
},
});

result.match({
ok: (deployment) => {
console.log('Deploy succeeded:');
console.log(` version: ${deployment.versionId}`);
console.log(` version URL: ${deployment.versionEndpointDomain}`);
if (deployment.promoted && deployment.serviceEndpointDomain) {
console.log(` service URL: ${deployment.serviceEndpointDomain}`);
console.log(` deployment: ${deployment.deploymentId}`);
console.log(` deployment URL: ${deployment.deploymentEndpointDomain}`);
if (deployment.promoted && deployment.appEndpointDomain) {
console.log(` app URL: ${deployment.appEndpointDomain}`);
}
if (deployment.previousVersionId) {
if (deployment.previousDeploymentId) {
console.log(
` previous version ${deployment.previousVersionId}: ${deployment.previousVersionAction ?? 'unchanged'}`,
` previous deployment ${deployment.previousDeploymentId}: ${deployment.previousDeploymentAction ?? 'unchanged'}`,
);
}
},
Expand Down
8 changes: 7 additions & 1 deletion apps/telemetry-backend/tsconfig.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,12 @@
"lib": ["ES2022"],
"types": ["bun", "node"]
},
"include": ["src/**/*.ts", "test/**/*.ts", "prisma.config.ts", "vitest.config.ts"],
"include": [
"scripts/**/*.ts",
"src/**/*.ts",
"test/**/*.ts",
"prisma.config.ts",
"vitest.config.ts"
],
"exclude": ["dist"]
}
Loading
Loading