CDEvents Integration
Receive CDEvents directly, without any transformer, from any producer.
- A tool that natively emits CDEvents, an agent or a proxy (like another cdviz-collector) can POST them to the collector's webhook.
- CDEvents v0.3, v0.4 and v0.5 are accepted, and normalized to a single version at ingestion.
| From event | CDEvents |
|---|---|
| dev.cdevents.artifact.* | artifact.{published, signed, packaged, downloaded, deleted} |
| dev.cdevents.branch.* | branch.{created, deleted} |
| dev.cdevents.change.* | change.{created, updated, reviewed, merged, abandoned} |
| dev.cdevents.repository.* | repository.{created, modified, deleted} |
| dev.cdevents.pipelinerun.* | pipelineRun.{queued, started, finished} |
| dev.cdevents.taskrun.* | taskRun.{started, finished} |
| dev.cdevents.testsuiterun.* | testSuiteRun.{queued, started, finished} |
| dev.cdevents.service.* | service.{deployed, upgraded, rolledback, removed, published} |
| dev.cdevents.environment.* | environment.{created, modified, deleted} |
| dev.cdevents.incident.* | incident.{detected, reported, resolved} |
| dev.cdevents.ticket.* | ticket.{created, updated, closed} |
| dev.cdevents.{build,testcaserun,testoutput}.* | stored as received (no coverage-matrix column) |
Who Can Send
Any producer able to POST JSON to an HTTP endpoint. No transformer is involved: the payload is already a CDEvent.
- A tool that natively emits CDEvents: either built-in, or configured to render CDEvents from its own templating (see the native CDEvents templates of ArgoCD notifications), or built with one of the CDEvents SDKs.
- An agent or a proxy: another
cdviz-collectorforwarding its stream with the HTTP sink, or any gateway that already speaks CDEvents. - A CI job:
cdviz-collector sendfor a hand-crafted event, orsend --runto wrap a command as ataskRun.
For a tool that does not emit CDEvents, transform its payload instead: see the existing integrations, or Custom Integration.
CDviz Side
A webhook source with no transformer_refs:
[sources.cdevents]
enabled = true
[sources.cdevents.extractor]
type = "webhook"
id = "000-cdevents"The endpoint is then https://your-cdviz-collector.example.com/webhook/000-cdevents.
WARNING
An open endpoint accepts events from anyone. Protect it with an API key or an HMAC signature (see Header Validation). On the producer side, see Header Authentication.
Producer Side
POST the CDEvent JSON to https://your-cdviz-collector.example.com/webhook/000-cdevents, with the authentication header from the CDviz Side section above.
The payload is already a CDEvent: no transformer is involved, and no CDviz-specific envelope is expected. See Header Authentication for the producer side of the token or signature.
CDEvents Versions
Producers rarely agree on a version: an integration built before CDEvents v0.5 emits v0.3 or v0.4. All of them are accepted, and normalized at ingestion so that the database holds a single version. On CDviz Cloud this normalization is already in place. You configure nothing.
Self-hosted only
Normalization is done by the global pipeline chain:
[pipeline]
transformer_refs = ["cdevents_v0_3_to_v0_4", "cdevents_v0_4_to_v0_5"]Both transformers are idempotent: an already-current event passes through unchanged. See CDEvents Version Conversion for the full configuration and the CLI conversion of existing files.
