Skip to content

Generate CycloneDX SBOMs for the shipped NuGet packages - #55

Merged
maxkatz6 merged 1 commit into
mainfrom
sbom-generation
Jul 8, 2026
Merged

Generate CycloneDX SBOMs for the shipped NuGet packages#55
maxkatz6 merged 1 commit into
mainfrom
sbom-generation

Conversation

@grokys

@grokys grokys commented Jul 7, 2026

Copy link
Copy Markdown
Member

Summary

Adds a CreateSbom nuke target that produces a CycloneDX SBOM for both shipped packages (Avalonia.Controls.WebView, Avalonia.Xpf.Controls.WebView), as EU Cyber Resilience Act technical-documentation evidence. Uses the shared generator merged in AvaloniaUI/build-common#4; see AvaloniaUI/Avalonia.Controls.TreeDataGrid-Accelerate#169 for the pilot.

  • CreateSbom is .TriggeredBy(CreateNugetPackages), so the default CI target used by library-cicd.yml generates and embeds SBOMs with no workflow changes; the shared workflow uploads artifacts/sbom as an sbom artifact automatically.
  • Avalonia.Controls.WebView.Core is IL-merged into both shipped packages rather than shipped standalone, so each package'"'"'s SBOM is generated from the package project plus Core via GenerateForPackage — Core'"'"'s dependencies (SkiaSharp, HarfBuzz, AndroidX, ...) appear in both packages'"'"' SBOMs.
  • Each SBOM is enriched from the shipped nuspec and embedded into the .nupkg at _manifest/cyclonedx/bom.cdx.json. The CycloneDX tool is resolved from its net8.0 build, matching this build project'"'"'s TFM.

Test plan

  • Verified locally against real packed output of both packages: the XPF SBOM contains its own WpfAbstractions dependency plus all of Core'"'"'s dependencies unioned in
  • CI run on this PR validates the real IL-merged path

🤖 Generated with Claude Code

https://claude.ai/code/session_012qDKmcNFxV3Xk5PjTGKrK6

Adds a CreateSbom target, triggered whenever CreateNugetPackages runs
(including the default CI target used by library-cicd.yml, so no
workflow changes are needed), that uses the shared SbomGenerator from
build-common to produce a per-package CycloneDX SBOM for EU Cyber
Resilience Act evidence. SBOMs are written to artifacts/sbom (published
by the shared CI workflow as an "sbom" artifact) and embedded into each
.nupkg at _manifest/cyclonedx/bom.cdx.json.

Avalonia.Controls.WebView.Core is IL-merged into both shipped packages
rather than shipped standalone, so each SBOM is generated from the
package project plus Core, making Core's dependencies part of both
packages' SBOMs.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012qDKmcNFxV3Xk5PjTGKrK6
@maxkatz6
maxkatz6 merged commit 43d9c17 into main Jul 8, 2026
4 checks passed
@maxkatz6
maxkatz6 deleted the sbom-generation branch August 13, 2026 12:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants