Files
hyperframes/examples/gcp-cloud-run

Google Cloud Run example

End-to-end deployment + smoke for @hyperframes/gcp-cloud-run — the Cloud Run + Cloud Workflows adapter for HyperFrames distributed rendering.

Layout

scripts/smoke.sh        Real-GCP smoke: build → deploy → render → PSNR → destroy
sample-events/          Example request bodies for the Cloud Run handler
                        (plan.json, render-chunk.json, assemble.json)

The Terraform module and the Cloud Workflows definition that the smoke deploys live with the package, at packages/gcp-cloud-run/terraform/ (including workflow.yaml).

Prerequisites

  • gcloud authenticated, with a project that has billing enabled
  • terraform (≥ 1.5), docker, ffmpeg, jq on PATH

Run the smoke

# Renders the mp4-h264-sdr fixture through the workflow and PSNR-compares it
# against the in-process baseline, then tears the stack down.
./scripts/smoke.sh --project YOUR_GCP_PROJECT --region us-central1

# Keep the stack up to poke at it:
./scripts/smoke.sh --project YOUR_GCP_PROJECT --keep-stack

# Render at several chunk sizes to see the fan-out scaling:
./scripts/smoke.sh --project YOUR_GCP_PROJECT --chunk-sizes 30,15,10

Outputs land in scripts/gcp-smoke-artifacts/: results.json (chunkSize × wallClockMs × psnrAvgDb), the rendered MP4s, and each workflow execution's describe output.

Test the handler locally

The sample events exercise the same body shape Cloud Workflows sends. With the container running locally (PORT=8080) and credentials that can reach a GCS bucket, you can drive a single action:

curl -sX POST localhost:8080/ \
  -H 'content-type: application/json' \
  --data @sample-events/plan.json | jq .

Replace the PROJECT placeholder bucket names and REPLACE_WITH_PLAN_HASH with real values from a prior plan response.