jenkinsci / datadog-plugin

A Jenkins plugin used to forward metrics, events, and service checks to an account at Datadog, automatically.
https://plugins.jenkins.io/datadog/
MIT License
30 stars 48 forks source link

Support linking downstream pipelines to upstream pipelines in CI Visibility #405

Closed nikita-tkachenko-datadog closed 4 months ago

nikita-tkachenko-datadog commented 4 months ago

Requirements for Contributing to this repository

What does this PR do?

Implements linking downstream pipelines to upstream pipelines in CI Visibility. In order to link the two pipelines, the downstream pipeline's webhook payload should contain an additional section that has the URL and trace ID of its upstream pipeline. The needed data are obtained from the CauseAction of the downstream's pipeline and from the BuildSpanManager in-memory cache.

The BuildSpanManager is changed from only storing info about the running jobs to also storing info about the latest N (1024 by default) finished jobs. Storing info about the finished jobs is required because the downstream pipeline event handler needs to obtain the trace ID of the upstream pipeline (by the time this happens the upstream pipeline has already finished its execution).

The size of the cache should be in the hundreds of kilobytes.

It should be very unlikely that the upstream pipeline trace context is already removed by the time the downstream pipeline is executed, but if it happens the only logic that stops working is the one that links upstream to downstream.

Description of the Change

Alternate Designs

Possible Drawbacks

Verification Process

Additional Notes

Release Notes

Review checklist (to be filled by reviewers)