feat: write app deployment manifest to CDN#8015
Conversation
🚀 Snapshot Release (
|
| Package | Version | Info |
|---|---|---|
@graphql-hive/laboratory |
0.1.7-alpha-20260506084217-324127779ee5404ae9ec5e1804f8c062f92275bc |
npm ↗︎ unpkg ↗︎ |
@graphql-hive/render-laboratory |
0.1.7-alpha-20260506084217-324127779ee5404ae9ec5e1804f8c062f92275bc |
npm ↗︎ unpkg ↗︎ |
hive |
11.1.0-alpha-20260506084217-324127779ee5404ae9ec5e1804f8c062f92275bc |
npm ↗︎ unpkg ↗︎ |
There was a problem hiding this comment.
Code Review
This pull request introduces the generation and storage of app deployment manifests in S3 during activation and retirement, along with a new CDN worker endpoint to serve these manifests. It includes a new integration test to verify the end-to-end flow. A debug console.log statement in the readAppDeploymentManifest method should be removed.
|
🐋 This PR was built and pushed to the following Docker images: Targets: Platforms: Image Tag: |
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
| // We're using here a public location, because we expose the Location to the end user and | ||
| // the public S3 endpoint may differ from the internal S3 endpoint. E.g. within a docker network. | ||
| // If they are the same, private and public locations will be the same. |
There was a problem hiding this comment.
no idea what this comment means 😅
dotansimha
left a comment
There was a problem hiding this comment.
Nice, LGTM!
One question: this will only be available for app deployment that will be activated after deploying this change, right?
Do you see a value in back-filling manifests or it's not needed?
|
@dotansimha see the description: 😅
I think we can be fine with shipping this now and then re-evaluate based on actual usage (all current app deployment versions could be already retired by then) whether we need to backfill once we update router/gateway to use this new manifest endpoint. |
| expect(activateAppDeployment.error).toBeNull(); | ||
|
|
||
| const cdnAccess = await createCdnAccess(); | ||
| const persistedOperationUrl = `${cdnAccess.cdnUrl}/apps/app-name/app-version`; |
There was a problem hiding this comment.
can you fetch before activating?
jdolle
left a comment
There was a problem hiding this comment.
I'd like to see a test covering what happens before activating the app deployment but otherwise looks great
|
@jdolle The manifest does not exist before that. BUt it makes sense to add a test for it! |

Background
By knowing the app deployment name and version it is currently impossible to retrieve a list of all documents that belong to the version via the CDN.
Description
Write a app deployment manifest to the CDN that contains all the document hashes and whether the app deployment is enabled or disabled.
The endpoint
/apps/:appname/:appVersionreturns a JSON manifest with the following information:This enabled routers to pre-load documents of app deployments and the router MCP plugin to load all available tools for an app deployment version.
Out of Scope
This pull request does not introduce backfilling app deployment manifests for existing published app deployments.
Checklist