SBoM dependency graph ingestion overview
Overview
The process starts after all SBoM::Occurence
models have been ingested because we ingest them in slices and it would be tricky to process that in slices as well.
All work happens in a background worker which will be added in a subsequent MR so that we do not increase the time it takes to ingest an SBoM report. This means that there will be a delay between when the SBoM report is ingested and before the dependency graph is updated.
All record pertaining to dependency graphs are stored in sbom_graph_paths
database table and has foreign keys to sbom_occurrences
as well as projects
for easier filtering.
Details
- The database table is designed as a closure table
- When a dependency is transitive then the corresponding
Sbom::Occurrence#ancestors
will contain entries. - When a dependency is a direct dependency then the corresponding
Sbom::Occurrence#ancestors
will contain an{}
. - Dependencies can be both direct and transitive.
- There can be more than one version of a given dependency in a project (for example Node allows that).
- There can be more than one
Sbom::Occurrence
for a given dependency version, for example in monorepos. TheseSbom::Occurrence
rows should have a differentinput_file_path
andsource_id
(however we will not usesource_id
when building the dependency tree to avoid SQL JOIN).
Docs
Edit this page to fix an error or add an improvement in a merge request.
Create an issue to suggest an improvement to this page.
Product
Create an issue if there's something you don't like about this feature.
Propose functionality by submitting a feature request.
Feature availability and product trials
View pricing to see all GitLab tiers and features, or to upgrade.
Try GitLab for free with access to all features for 30 days.
Get help
If you didn't find what you were looking for, search the docs.
If you want help with something specific and could use community support, post on the GitLab forum.
For problems setting up or using this feature (depending on your GitLab subscription).
Request support