Skip to main content

Google Cloud Workflows ⇄ Pulse

Intermediate ⏱ 10 min gcp · yaml workflow · native http · 🧪 workflow validated live

Cloud Workflows owns the orchestration and speaks HTTP natively (call: http.post / http.get) — unlike Step Functions, Pulse needs no glue function. Two call steps, that's the bridge. Repo example: examples/gcp-workflows-pulse-bridge/.

sendToPulse (http.post → /x/order-scoring/in) → sys.sleep 2s → readVerdict (http.get) → scanEvents (for) → decide (switch) → escalate | auto-approve

Run it locally — the real workflow.yaml

pulse server start --dev
mkdir app && cp pulse.yaml app/ && (cd app && pulse deploy .)
pip install requests pyyaml
PULSE_URL=http://localhost:9090 PULSE_TOKEN=$(jq -r '.profiles[.currentProfile].token' ~/.pulse/credentials.json) \
python run_local.py

run_local.py is a tiny GCW interpreter executing the same workflow.yaml you would deploy with gcloudassign, the call steps, the for loop, switch, return, and the ${...} expressions. Validated output:

amount= 2500 -> decision=escalate
amount= 300 -> decision=auto-approve

Deploying to real GCP

gcloud workflows deploy pulse-order-scoring --source=workflow.yaml

It reads PULSE_URL/PULSE_TOKEN from the execution environment. The 🧪 status means: the definition is proven against live Pulse; the GCP-hosted run needs your project.

Next