Replies: 3 comments 12 replies
|
@alexgnq - This is a use case that #329 help solve. It introduces deployment and targetrollout events. And yes, one thing I am planning on doing is introducing a broader set of standardized semantics for link relations:
Please take a look at the #329. I'll have a follow up PR for links for standardizing (put them in the specification rather than markdown) some default link kinds. |
|
Then to your other point of Helm charts. This to me is a gap in CDEvents. Once I have my other PRs merged, there's another area in CD that isn't modeled, rendering. This is basically helm charts flow, we render to a k8s manifest. This could be a separate event that links to deployment events. |
|
Thanks @alexgnq, this is very welcome. We've been postponing the discussion on composition for a while but it's been in our roadmap for quite some time, so definitely something we should have. I agree that causality and composition are not the same, and we may need a composition mechanism. |
Uh oh!
There was an error while loading. Please reload this page.
We use CDEvents to calculate DORA metrics across independently released components.
A concrete example is a Helm umbrella chart. Each component produces an independently versioned artifact/release. Publishing a component may subsequently produce a new version of a system artifact containing that component together with unchanged versions of other components:
The individual events originate from isolated systems/webhooks, so the relationship is not necessarily known when the component event is emitted. We currently retain the events and project RELATION links later, once the system release is known. This lets us traverse component change → system release → deployment and calculate DORA metrics.
The Links proposal already seems well suited to the late-binding aspect: links can be emitted separately, fan-in is an explicit use case, and domainId now allows relationships to artifact resources identified by PURL.
What seems to be missing is standardized semantics for artifact composition.
There is also an important distinction between causality and composition:
Only component-a@1.5 may have triggered creation of system@43, but all three artifacts are constituents of that immutable system release.
Would it make sense for CDEvents Links to define a standard relationship such as componentOf / contains for artifact-to-artifact composition?
This would not need to be Helm-specific. The same relationship occurs with application bundles, manifests, release trains, multi-component products, container/image indexes, and other composite artifacts.
I think this could potentially be handled by defining semantics for a RELATION.linkKind, rather than introducing a new event type or subject. It would also provide an interoperable way to reconstruct change → component artifact → system artifact → deployment graphs for metrics such as DORA Lead Time for Changes.
All reactions