Skip to content

Event Reaction ​

The CDEvents stream that feeds your CDviz dashboards can also trigger downstream automation. The collector fans events out to reactive sinks; anything that consumes a webhook, a Kafka topic, or an SSE stream can react to your delivery events.

Example Use Cases ​

  • Post-deployment testing: trigger a chain of integration / smoke tests after a service is deployed into an environment
  • Environment promotion: promote a service or artifact to the next environment (cluster, region, ...) after tests succeed in the previous one
  • Artifact validation: trigger validation (scanning, signing, conformance checks) when an artifact is published

Patterns ​

Webhooks: Argo Workflows, n8n, Zapier, custom services ​

The HTTP sink POSTs each CDEvent to any endpoint (as CloudEvents). Typical targets:

  • Argo Workflows: submit a workflow from an event via a WorkflowEventBinding
  • Workflow automation tools (n8n, Make, Zapier, Kestra, ...): notify a channel on deployment.finished, open a ticket on incident.detected, chain follow-up jobs
  • Your own service: any HTTP endpoint becomes an event consumer

Event streams: Kafka, NATS ​

For decoupled, replayable consumption, publish CDEvents to a topic with the Kafka sink or NATS sink. Consumers subscribe independently of CDviz.

Live subscription: SSE ​

The SSE sink exposes a Server-Sent Events endpoint: lightweight, connection-based consumption without a broker. Use it for live UIs and simple listeners.

Filtering & Shaping beta ​

The HTTP sink has beta support for per-sink transformers (transformer_refs). They serve two purposes:

  • Filter which events reach a reaction target: only service.deployed, only one service, ...
  • Reshape the payload into whatever JSON the destination expects (not necessarily a CDEvent), so the consumer needs no translation logic

Reshaping can even replace a destination that only acts as a 1-to-1 translator: in the Argo Workflows example above, a workflow whose only job is converting the event into a GitHub repository_dispatch call can be dropped. A sink transformer builds the GitHub API payload and the HTTP sink posts it directly (see the full example).