Repository navigation
build: add CycloneDX runtime SBOM - #30
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
engine-grammalecteto vendored Grammalectemake sbomas the common local and CI entry pointSBOM format
The project now generates a CycloneDX JSON SBOM at:
Current format:
The generated runtime inventory currently contains 13 components.
Runtime dependency scope
The Gradle-generated portion is based on resolved runtime configurations and
includes the dependencies actually relevant to the Android release.
Current runtime components include:
Test-only dependencies such as JUnit, AndroidX Test and org.json test support
are intentionally excluded.
Build tooling, including the CycloneDX Gradle plugin itself, is also outside
the runtime SBOM boundary.
Vendored Grammalecte
Grammalecte is stored directly in the repository and is therefore not visible
to Gradle dependency resolution.
tools/enrich-sbom.mjsadds it explicitly using the authoritative metadatafrom:
Current vendored component:
CycloneDX reference:
The SBOM dependency graph explicitly records:
The component also records its immutable upstream VCS reference and vendored
status.
Validation
tools/check-sbom.mjsvalidates the final enriched document.It checks:
tools/grammalecte.envengine-grammalecteand GrammalecteThe common entry point is:
Current validation result:
Dependency verification
The CycloneDX Gradle plugin is pinned through the Gradle version catalog.
Its artifacts and transitives are covered by the existing Gradle dependency
verification mechanism:
The metadata was regenerated explicitly for the new plugin dependency and
then normal SBOM generation was successfully executed with verification
enabled.
CI integration
The normal CI workflow now runs:
This means dependency inventory generation and validation are checked on pull
requests and on
main.Signed release integration
The manual signed-release workflow now:
The artifact therefore contains:
The workflow still does not publish a public GitHub Release automatically.
Documentation
Added:
Updated:
README.mdCHANGELOG.mdThe documentation distinguishes the machine-readable runtime dependency
inventory from
THIRD_PARTY_NOTICES.mdand the remaining human-reviewedthird-party license audit.
Validation performed
make checkmake sbom./tools/run-actionlint.shgit diff --checkRoadmap
The Phase 5 item:
remains intentionally unchecked in this PR.
It will be marked complete only after this change is merged to
main, thenormal CI succeeds there, and the
Signed releaseworkflow produces a realartifact containing the SBOM and its checksum.