UI work to fill SBOM sourcing management gap. UI planning remaining functionality exposure. Work on CI/Tests stabilization
Introduces CGS determinism test runs to CI workflows for Windows, macOS, Linux, Alpine, and Debian, fulfilling CGS-008 cross-platform requirements. Updates local-ci scripts to support new smoke steps, test timeouts, progress intervals, and project slicing for improved test isolation and diagnostics.
This commit is contained in:
@@ -91,6 +91,9 @@ builder.Services.AddSingleton<ISbomLineageGraphService, SbomLineageGraphService>
|
||||
// LIN-BE-028: Lineage compare service
|
||||
builder.Services.AddSingleton<ILineageCompareService, LineageCompareService>();
|
||||
|
||||
// LIN-010: Lineage export service for evidence packs
|
||||
builder.Services.AddSingleton<ILineageExportService, LineageExportService>();
|
||||
|
||||
// LIN-BE-023: Replay hash service
|
||||
builder.Services.AddSingleton<IReplayHashService, ReplayHashService>();
|
||||
|
||||
@@ -824,6 +827,41 @@ app.MapGet("/api/v1/lineage/{artifactDigest}/parents", async Task<IResult> (
|
||||
return Results.Ok(new { childDigest = artifactDigest.Trim(), parents });
|
||||
});
|
||||
|
||||
app.MapPost("/api/v1/lineage/export", async Task<IResult> (
|
||||
[FromServices] ILineageExportService exportService,
|
||||
[FromBody] LineageExportRequest request,
|
||||
CancellationToken cancellationToken) =>
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(request.FromDigest) || string.IsNullOrWhiteSpace(request.ToDigest))
|
||||
{
|
||||
return Results.BadRequest(new { error = "fromDigest and toDigest are required" });
|
||||
}
|
||||
|
||||
if (string.IsNullOrWhiteSpace(request.TenantId))
|
||||
{
|
||||
return Results.BadRequest(new { error = "tenantId is required" });
|
||||
}
|
||||
|
||||
using var activity = SbomTracing.Source.StartActivity("lineage.export", ActivityKind.Server);
|
||||
activity?.SetTag("tenant", request.TenantId);
|
||||
activity?.SetTag("from_digest", request.FromDigest);
|
||||
activity?.SetTag("to_digest", request.ToDigest);
|
||||
|
||||
var result = await exportService.ExportAsync(request, cancellationToken);
|
||||
|
||||
if (result is null)
|
||||
{
|
||||
return Results.StatusCode(500);
|
||||
}
|
||||
|
||||
if (result.SizeBytes > 50 * 1024 * 1024)
|
||||
{
|
||||
return Results.StatusCode(413); // Payload Too Large
|
||||
}
|
||||
|
||||
return Results.Ok(result);
|
||||
});
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
// Lineage Compare API (LIN-BE-028)
|
||||
// Sprint: SPRINT_20251228_007_BE_sbom_lineage_graph_ii
|
||||
|
||||
Reference in New Issue
Block a user