Files
hyperframes/docs/deploy/gcp-cloud-run.mdx
Abdullah M. Nazif d6c20513d1 fix(render): align container Chrome with the CLI (#5338)
* fix(render): align container Chrome with the CLI

* chore: prepare conflict resolution against current main

* fix(render): retain Chrome visuals and current audio baselines
2026-10-25 00:23:52 +00:00

130 lines
4.0 KiB
Plaintext

---
title: "Google Cloud Run"
description: "Deploy distributed HyperFrames rendering to Cloud Run, Cloud Workflows, and Google Cloud Storage."
---
Use this path when renders must run in your Google Cloud account. A Cloud
Workflow plans the render, sends chunks to Cloud Run in parallel, and assembles
the result in Google Cloud Storage.
```text
Cloud Workflow: Plan → Render chunks in parallel → Assemble
↓
Cloud Run service
↓
GCS
```
For a hosted render without infrastructure ownership, use
[HyperFrames Cloud](/deploy/cloud). For a small preview application and render
endpoint, use a [hosted template](/guides/deploy).
## Prerequisites
- A Google Cloud project with billing enabled
- `gcloud` authenticated for that project
- Terraform 1.5 or newer
- Cloud Build access, or an existing compatible container image
- `@hyperframes/gcp-cloud-run` installed alongside the CLI
The CLI can build the renderer automatically when it runs from a HyperFrames
repository checkout. Outside the repository, pass an image built from
`packages/gcp-cloud-run/Dockerfile` with `--image`.
The renderer image uses Chrome 152, matching the CLI's managed browser, so
gradient text inside transformed child elements also renders in Cloud Run.
Existing deployments need a rebuilt image and a new deployment to receive
the browser update.
## Deploy
```bash
hyperframes cloudrun deploy --project my-gcp-project
```
The command enables the required Google Cloud APIs, builds and pushes the
renderer when needed, applies the bundled Terraform module, and stores the
resulting bucket, service URL, and workflow name in `~/.hyperframes/`.
The default region is `us-central1`. Machine and scaling controls include
`--region`, `--cpu`, `--memory`, `--max-instances`, and `--timeout`.
## Render
Width and height describe the authored canvas. Use `--output-resolution` when
the encoded result should be supersampled without changing the layout.
```bash
hyperframes cloudrun render ./my-project \
--width 1920 \
--height 1080 \
--wait
```
The command accepts the same template variables used by local and AWS renders:
```bash
hyperframes cloudrun render ./card-template \
--width 1920 \
--height 1080 \
--variables '{"name":"Ada"}' \
--wait
```
Supported distributed outputs are MP4, MOV, WebM, and PNG sequences. MP4 can
use H.264 or H.265. Distributed rendering is currently SDR-only.
## Reuse an upload
Projects are content-addressed. Upload an unchanged project once, then reuse
its site ID for later renders. Site IDs from earlier versions keep working, but
the ID scheme changed, so each project uploads once more under a new ID:
```bash
hyperframes cloudrun sites create ./my-project
```
Use `render-batch` with a JSONL file when one template needs many sets of
variables:
```bash
hyperframes cloudrun render-batch ./card-template \
--batch ./recipients.jsonl \
--width 1920 \
--height 1080 \
--max-concurrent 10
```
Each JSONL row contains an output key and optional variables:
```json
{"outputKey":"renders/ada.mp4","variables":{"name":"Ada"}}
```
## Progress and teardown
Without `--wait`, a render returns its workflow execution name immediately.
```bash
hyperframes cloudrun progress <execution-name>
hyperframes cloudrun destroy --project my-gcp-project
```
`destroy` removes the Terraform-managed stack and its render bucket. Download
anything that must be retained before running it.
## Programmatic use
`@hyperframes/gcp-cloud-run/sdk` exposes `deploySite`, `renderToCloudRun`, and
`getRenderProgress` for Node backends. The package also exports the Terraform
module and HTTP handler used by the deployed service.
See the [GCP package reference](/packages/gcp-cloud-run) for the SDK contract
and the complete infrastructure shape.
## Related topics
- [Use the Google Cloud Run package](/packages/gcp-cloud-run)
- [Choose another rendering path](/deploy/overview)
- [Compare with AWS Lambda](/deploy/aws-lambda)