Resolve Concelier/Excititor merge conflicts
This commit is contained in:
3
samples/scanner/images/alpine-busybox/README.md
Normal file
3
samples/scanner/images/alpine-busybox/README.md
Normal file
@@ -0,0 +1,3 @@
|
||||
# Alpine + BusyBox Sample
|
||||
|
||||
Fixtures showcase the tiny Alpine image that powers many minimal containers. BusyBox and musl appear in usage because they back the entrypoint shell, while alpine-baselayout remains inventory-only.
|
||||
42
samples/scanner/images/alpine-busybox/bom-index.json
Normal file
42
samples/scanner/images/alpine-busybox/bom-index.json
Normal file
@@ -0,0 +1,42 @@
|
||||
{
|
||||
"schema": "stellaops/bom-index@1",
|
||||
"image": {
|
||||
"repository": "docker.io/library/alpine",
|
||||
"digest": "sha256:9a214327ec7df5bc8f1d3f12171873be7d778fdbf473d6f9a63d5de6c6bfb2d3",
|
||||
"tag": "3.20"
|
||||
},
|
||||
"generatedAt": "2025-10-19T00:00:00Z",
|
||||
"generator": "stellaops/scanner@10.0.0-preview1",
|
||||
"components": [
|
||||
{
|
||||
"purl": "pkg:apk/alpine/busybox@1.36.1-r2?arch=x86_64",
|
||||
"layerDigest": "sha256:5555555555555555555555555555555555555555555555555555555555555555",
|
||||
"usage": ["inventory", "runtime"],
|
||||
"licenses": ["GPL-2.0-only"],
|
||||
"evidence": {
|
||||
"kind": "apk-database",
|
||||
"path": "/lib/apk/db/installed"
|
||||
}
|
||||
},
|
||||
{
|
||||
"purl": "pkg:apk/alpine/musl@1.2.5-r0?arch=x86_64",
|
||||
"layerDigest": "sha256:6666666666666666666666666666666666666666666666666666666666666666",
|
||||
"usage": ["inventory", "runtime"],
|
||||
"licenses": ["MIT"],
|
||||
"evidence": {
|
||||
"kind": "apk-database",
|
||||
"path": "/lib/apk/db/installed"
|
||||
}
|
||||
},
|
||||
{
|
||||
"purl": "pkg:apk/alpine/alpine-baselayout@3.4.3-r0?arch=x86_64",
|
||||
"layerDigest": "sha256:7777777777777777777777777777777777777777777777777777777777777777",
|
||||
"usage": ["inventory"],
|
||||
"licenses": ["GPL-2.0-only"],
|
||||
"evidence": {
|
||||
"kind": "apk-database",
|
||||
"path": "/lib/apk/db/installed"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
34
samples/scanner/images/alpine-busybox/inventory.cdx.json
Normal file
34
samples/scanner/images/alpine-busybox/inventory.cdx.json
Normal file
@@ -0,0 +1,34 @@
|
||||
{
|
||||
"bomFormat": "CycloneDX",
|
||||
"specVersion": "1.5",
|
||||
"version": 1,
|
||||
"metadata": {
|
||||
"timestamp": "2025-10-19T00:00:00Z",
|
||||
"component": {
|
||||
"type": "container",
|
||||
"name": "alpine-busybox",
|
||||
"version": "3.20",
|
||||
"bomRef": "pkg:docker/library/alpine@sha256:9a214327ec7df5bc8f1d3f12171873be7d778fdbf473d6f9a63d5de6c6bfb2d3"
|
||||
}
|
||||
},
|
||||
"components": [
|
||||
{
|
||||
"type": "application",
|
||||
"bomRef": "pkg:apk/alpine/busybox@1.36.1-r2?arch=x86_64",
|
||||
"name": "busybox",
|
||||
"version": "1.36.1-r2"
|
||||
},
|
||||
{
|
||||
"type": "library",
|
||||
"bomRef": "pkg:apk/alpine/musl@1.2.5-r0?arch=x86_64",
|
||||
"name": "musl",
|
||||
"version": "1.2.5-r0"
|
||||
},
|
||||
{
|
||||
"type": "application",
|
||||
"bomRef": "pkg:apk/alpine/alpine-baselayout@3.4.3-r0?arch=x86_64",
|
||||
"name": "alpine-baselayout",
|
||||
"version": "3.4.3-r0"
|
||||
}
|
||||
]
|
||||
}
|
||||
28
samples/scanner/images/alpine-busybox/usage.cdx.json
Normal file
28
samples/scanner/images/alpine-busybox/usage.cdx.json
Normal file
@@ -0,0 +1,28 @@
|
||||
{
|
||||
"bomFormat": "CycloneDX",
|
||||
"specVersion": "1.5",
|
||||
"version": 1,
|
||||
"metadata": {
|
||||
"timestamp": "2025-10-19T00:00:00Z",
|
||||
"component": {
|
||||
"type": "container",
|
||||
"name": "alpine-busybox",
|
||||
"version": "3.20",
|
||||
"bomRef": "pkg:docker/library/alpine@sha256:9a214327ec7df5bc8f1d3f12171873be7d778fdbf473d6f9a63d5de6c6bfb2d3"
|
||||
}
|
||||
},
|
||||
"components": [
|
||||
{
|
||||
"type": "application",
|
||||
"bomRef": "pkg:apk/alpine/busybox@1.36.1-r2?arch=x86_64",
|
||||
"name": "busybox",
|
||||
"version": "1.36.1-r2"
|
||||
},
|
||||
{
|
||||
"type": "library",
|
||||
"bomRef": "pkg:apk/alpine/musl@1.2.5-r0?arch=x86_64",
|
||||
"name": "musl",
|
||||
"version": "1.2.5-r0"
|
||||
}
|
||||
]
|
||||
}
|
||||
3
samples/scanner/images/distroless-go/README.md
Normal file
3
samples/scanner/images/distroless-go/README.md
Normal file
@@ -0,0 +1,3 @@
|
||||
# Distroless + Go Sample
|
||||
|
||||
Demonstrates a Go binary shipped on top of Distroless. Only the compiled service appears in the usage SBOM, while the Go standard library remains inventory-only and still tracked in the BOM Index.
|
||||
32
samples/scanner/images/distroless-go/bom-index.json
Normal file
32
samples/scanner/images/distroless-go/bom-index.json
Normal file
@@ -0,0 +1,32 @@
|
||||
{
|
||||
"schema": "stellaops/bom-index@1",
|
||||
"image": {
|
||||
"repository": "gcr.io/distroless/base",
|
||||
"digest": "sha256:0dd2f0f15c9f8abfba6a0ce0d7d6a24e2e1071c977733f6e77cbe51b87f15ad9",
|
||||
"tag": "nonroot"
|
||||
},
|
||||
"generatedAt": "2025-10-19T00:00:00Z",
|
||||
"generator": "stellaops/scanner@10.0.0-preview1",
|
||||
"components": [
|
||||
{
|
||||
"purl": "pkg:golang/github.com/stellaops/sample-service@v1.4.0",
|
||||
"layerDigest": "sha256:8888888888888888888888888888888888888888888888888888888888888888",
|
||||
"usage": ["inventory", "runtime"],
|
||||
"licenses": ["Apache-2.0"],
|
||||
"evidence": {
|
||||
"kind": "go-buildinfo",
|
||||
"path": "/workspace/service"
|
||||
}
|
||||
},
|
||||
{
|
||||
"purl": "pkg:golang/std@go1.22.5",
|
||||
"layerDigest": "sha256:9999999999999999999999999999999999999999999999999999999999999999",
|
||||
"usage": ["inventory"],
|
||||
"licenses": ["BSD-3-Clause"],
|
||||
"evidence": {
|
||||
"kind": "go-buildinfo",
|
||||
"path": "/workspace/service"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
34
samples/scanner/images/distroless-go/inventory.cdx.json
Normal file
34
samples/scanner/images/distroless-go/inventory.cdx.json
Normal file
@@ -0,0 +1,34 @@
|
||||
{
|
||||
"bomFormat": "CycloneDX",
|
||||
"specVersion": "1.5",
|
||||
"version": 1,
|
||||
"metadata": {
|
||||
"timestamp": "2025-10-19T00:00:00Z",
|
||||
"component": {
|
||||
"type": "container",
|
||||
"name": "distroless-go",
|
||||
"version": "2025.10.0",
|
||||
"bomRef": "pkg:docker/gcr.io/distroless/base@sha256:0dd2f0f15c9f8abfba6a0ce0d7d6a24e2e1071c977733f6e77cbe51b87f15ad9"
|
||||
}
|
||||
},
|
||||
"components": [
|
||||
{
|
||||
"type": "application",
|
||||
"bomRef": "pkg:golang/github.com/stellaops/sample-service@v1.4.0",
|
||||
"name": "github.com/stellaops/sample-service",
|
||||
"version": "v1.4.0",
|
||||
"properties": [
|
||||
{
|
||||
"name": "stellaops.entrypoint",
|
||||
"value": "/workspace/service"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "library",
|
||||
"bomRef": "pkg:golang/std@go1.22.5",
|
||||
"name": "golang-stdlib",
|
||||
"version": "go1.22.5"
|
||||
}
|
||||
]
|
||||
}
|
||||
22
samples/scanner/images/distroless-go/usage.cdx.json
Normal file
22
samples/scanner/images/distroless-go/usage.cdx.json
Normal file
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"bomFormat": "CycloneDX",
|
||||
"specVersion": "1.5",
|
||||
"version": 1,
|
||||
"metadata": {
|
||||
"timestamp": "2025-10-19T00:00:00Z",
|
||||
"component": {
|
||||
"type": "container",
|
||||
"name": "distroless-go",
|
||||
"version": "2025.10.0",
|
||||
"bomRef": "pkg:docker/gcr.io/distroless/base@sha256:0dd2f0f15c9f8abfba6a0ce0d7d6a24e2e1071c977733f6e77cbe51b87f15ad9"
|
||||
}
|
||||
},
|
||||
"components": [
|
||||
{
|
||||
"type": "application",
|
||||
"bomRef": "pkg:golang/github.com/stellaops/sample-service@v1.4.0",
|
||||
"name": "github.com/stellaops/sample-service",
|
||||
"version": "v1.4.0"
|
||||
}
|
||||
]
|
||||
}
|
||||
3
samples/scanner/images/dotnet-aot/README.md
Normal file
3
samples/scanner/images/dotnet-aot/README.md
Normal file
@@ -0,0 +1,3 @@
|
||||
# .NET AOT Sample
|
||||
|
||||
An ahead-of-time compiled worker showcasing how native .NET deployments appear in SBOM outputs. The BOM Index ties NuGet packages back to the generated `deps.json` evidence.
|
||||
52
samples/scanner/images/dotnet-aot/bom-index.json
Normal file
52
samples/scanner/images/dotnet-aot/bom-index.json
Normal file
@@ -0,0 +1,52 @@
|
||||
{
|
||||
"schema": "stellaops/bom-index@1",
|
||||
"image": {
|
||||
"repository": "registry.stella-ops.org/sample/dotnet-aot",
|
||||
"digest": "sha256:5be6f3ad9d2b1e4fcb4c6f40d9c664fca97f5b4d9ccb8e1d8f970e8b2bce1123",
|
||||
"tag": "1.0.0"
|
||||
},
|
||||
"generatedAt": "2025-10-19T00:00:00Z",
|
||||
"generator": "stellaops/scanner@10.0.0-preview1",
|
||||
"components": [
|
||||
{
|
||||
"purl": "pkg:nuget/Sample.Worker@1.0.0",
|
||||
"layerDigest": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"usage": ["inventory", "runtime"],
|
||||
"licenses": ["MIT"],
|
||||
"evidence": {
|
||||
"kind": "deps-json",
|
||||
"path": "/app/Sample.Worker.deps.json"
|
||||
}
|
||||
},
|
||||
{
|
||||
"purl": "pkg:nuget/Microsoft.Extensions.Hosting@8.0.0",
|
||||
"layerDigest": "sha256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
|
||||
"usage": ["inventory"],
|
||||
"licenses": ["MIT"],
|
||||
"evidence": {
|
||||
"kind": "deps-json",
|
||||
"path": "/app/Sample.Worker.deps.json"
|
||||
}
|
||||
},
|
||||
{
|
||||
"purl": "pkg:nuget/System.Text.Json@8.0.0",
|
||||
"layerDigest": "sha256:cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc",
|
||||
"usage": ["inventory", "runtime"],
|
||||
"licenses": ["MIT"],
|
||||
"evidence": {
|
||||
"kind": "deps-json",
|
||||
"path": "/app/Sample.Worker.deps.json"
|
||||
}
|
||||
},
|
||||
{
|
||||
"purl": "pkg:nuget/Microsoft.NETCore.App.Runtime.AOT.win-x64.Cross@8.0.0",
|
||||
"layerDigest": "sha256:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd",
|
||||
"usage": ["inventory"],
|
||||
"licenses": ["MIT"],
|
||||
"evidence": {
|
||||
"kind": "deps-json",
|
||||
"path": "/app/Sample.Worker.deps.json"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
40
samples/scanner/images/dotnet-aot/inventory.cdx.json
Normal file
40
samples/scanner/images/dotnet-aot/inventory.cdx.json
Normal file
@@ -0,0 +1,40 @@
|
||||
{
|
||||
"bomFormat": "CycloneDX",
|
||||
"specVersion": "1.5",
|
||||
"version": 1,
|
||||
"metadata": {
|
||||
"timestamp": "2025-10-19T00:00:00Z",
|
||||
"component": {
|
||||
"type": "container",
|
||||
"name": "dotnet-aot",
|
||||
"version": "8.0.0",
|
||||
"bomRef": "pkg:docker/stellaops/sample-dotnet-aot@sha256:5be6f3ad9d2b1e4fcb4c6f40d9c664fca97f5b4d9ccb8e1d8f970e8b2bce1123"
|
||||
}
|
||||
},
|
||||
"components": [
|
||||
{
|
||||
"type": "application",
|
||||
"bomRef": "pkg:nuget/Sample.Worker@1.0.0",
|
||||
"name": "Sample.Worker",
|
||||
"version": "1.0.0"
|
||||
},
|
||||
{
|
||||
"type": "library",
|
||||
"bomRef": "pkg:nuget/Microsoft.Extensions.Hosting@8.0.0",
|
||||
"name": "Microsoft.Extensions.Hosting",
|
||||
"version": "8.0.0"
|
||||
},
|
||||
{
|
||||
"type": "library",
|
||||
"bomRef": "pkg:nuget/System.Text.Json@8.0.0",
|
||||
"name": "System.Text.Json",
|
||||
"version": "8.0.0"
|
||||
},
|
||||
{
|
||||
"type": "library",
|
||||
"bomRef": "pkg:nuget/Microsoft.NETCore.App.Runtime.AOT.win-x64.Cross@8.0.0",
|
||||
"name": "NativeAotRuntime",
|
||||
"version": "8.0.0"
|
||||
}
|
||||
]
|
||||
}
|
||||
28
samples/scanner/images/dotnet-aot/usage.cdx.json
Normal file
28
samples/scanner/images/dotnet-aot/usage.cdx.json
Normal file
@@ -0,0 +1,28 @@
|
||||
{
|
||||
"bomFormat": "CycloneDX",
|
||||
"specVersion": "1.5",
|
||||
"version": 1,
|
||||
"metadata": {
|
||||
"timestamp": "2025-10-19T00:00:00Z",
|
||||
"component": {
|
||||
"type": "container",
|
||||
"name": "dotnet-aot",
|
||||
"version": "8.0.0",
|
||||
"bomRef": "pkg:docker/stellaops/sample-dotnet-aot@sha256:5be6f3ad9d2b1e4fcb4c6f40d9c664fca97f5b4d9ccb8e1d8f970e8b2bce1123"
|
||||
}
|
||||
},
|
||||
"components": [
|
||||
{
|
||||
"type": "application",
|
||||
"bomRef": "pkg:nuget/Sample.Worker@1.0.0",
|
||||
"name": "Sample.Worker",
|
||||
"version": "1.0.0"
|
||||
},
|
||||
{
|
||||
"type": "library",
|
||||
"bomRef": "pkg:nuget/System.Text.Json@8.0.0",
|
||||
"name": "System.Text.Json",
|
||||
"version": "8.0.0"
|
||||
}
|
||||
]
|
||||
}
|
||||
3
samples/scanner/images/nginx/README.md
Normal file
3
samples/scanner/images/nginx/README.md
Normal file
@@ -0,0 +1,3 @@
|
||||
# Nginx Inventory Sample
|
||||
|
||||
CycloneDX inventory, usage, and BOM Index fixtures for the `docker.io/library/nginx:1.25.4` image. The SBOMs capture base Alpine packages and the BOM Index links each component to the layer that introduced it.
|
||||
52
samples/scanner/images/nginx/bom-index.json
Normal file
52
samples/scanner/images/nginx/bom-index.json
Normal file
@@ -0,0 +1,52 @@
|
||||
{
|
||||
"schema": "stellaops/bom-index@1",
|
||||
"image": {
|
||||
"repository": "docker.io/library/nginx",
|
||||
"digest": "sha256:8f47d7c6b538c0d9533b78913cba3d5e671e7c4b4e7c6a2bb9a1a1c4d4f8e123",
|
||||
"tag": "1.25.4"
|
||||
},
|
||||
"generatedAt": "2025-10-19T00:00:00Z",
|
||||
"generator": "stellaops/scanner@10.0.0-preview1",
|
||||
"components": [
|
||||
{
|
||||
"purl": "pkg:apk/alpine/nginx@1.25.4-r1?arch=x86_64",
|
||||
"layerDigest": "sha256:1111111111111111111111111111111111111111111111111111111111111111",
|
||||
"usage": ["inventory", "runtime"],
|
||||
"licenses": ["BSD-2-Clause"],
|
||||
"evidence": {
|
||||
"kind": "apk-database",
|
||||
"path": "/lib/apk/db/installed"
|
||||
}
|
||||
},
|
||||
{
|
||||
"purl": "pkg:apk/alpine/openssl@3.2.2-r0?arch=x86_64",
|
||||
"layerDigest": "sha256:2222222222222222222222222222222222222222222222222222222222222222",
|
||||
"usage": ["inventory", "runtime"],
|
||||
"licenses": ["Apache-2.0"],
|
||||
"evidence": {
|
||||
"kind": "apk-database",
|
||||
"path": "/lib/apk/db/installed"
|
||||
}
|
||||
},
|
||||
{
|
||||
"purl": "pkg:apk/alpine/pcre2@10.42-r1?arch=x86_64",
|
||||
"layerDigest": "sha256:3333333333333333333333333333333333333333333333333333333333333333",
|
||||
"usage": ["inventory"],
|
||||
"licenses": ["BSD-3-Clause"],
|
||||
"evidence": {
|
||||
"kind": "apk-database",
|
||||
"path": "/lib/apk/db/installed"
|
||||
}
|
||||
},
|
||||
{
|
||||
"purl": "pkg:apk/alpine/zlib@1.3-r2?arch=x86_64",
|
||||
"layerDigest": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"usage": ["inventory"],
|
||||
"licenses": ["Zlib"],
|
||||
"evidence": {
|
||||
"kind": "apk-database",
|
||||
"path": "/lib/apk/db/installed"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
53
samples/scanner/images/nginx/inventory.cdx.json
Normal file
53
samples/scanner/images/nginx/inventory.cdx.json
Normal file
@@ -0,0 +1,53 @@
|
||||
{
|
||||
"bomFormat": "CycloneDX",
|
||||
"specVersion": "1.5",
|
||||
"version": 1,
|
||||
"metadata": {
|
||||
"timestamp": "2025-10-19T00:00:00Z",
|
||||
"component": {
|
||||
"type": "container",
|
||||
"name": "nginx",
|
||||
"version": "1.25.4",
|
||||
"bomRef": "pkg:docker/library/nginx@sha256:8f47d7c6b538c0d9533b78913cba3d5e671e7c4b4e7c6a2bb9a1a1c4d4f8e123"
|
||||
},
|
||||
"tools": [
|
||||
{
|
||||
"name": "StellaOps Scanner",
|
||||
"version": "10.0.0-preview1"
|
||||
}
|
||||
]
|
||||
},
|
||||
"components": [
|
||||
{
|
||||
"type": "application",
|
||||
"bomRef": "pkg:apk/alpine/nginx@1.25.4-r1?arch=x86_64",
|
||||
"name": "nginx",
|
||||
"version": "1.25.4-r1",
|
||||
"licenses": [
|
||||
{
|
||||
"license": {
|
||||
"id": "2BSD"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "library",
|
||||
"bomRef": "pkg:apk/alpine/openssl@3.2.2-r0?arch=x86_64",
|
||||
"name": "openssl",
|
||||
"version": "3.2.2-r0"
|
||||
},
|
||||
{
|
||||
"type": "library",
|
||||
"bomRef": "pkg:apk/alpine/pcre2@10.42-r1?arch=x86_64",
|
||||
"name": "pcre2",
|
||||
"version": "10.42-r1"
|
||||
},
|
||||
{
|
||||
"type": "library",
|
||||
"bomRef": "pkg:apk/alpine/zlib@1.3-r2?arch=x86_64",
|
||||
"name": "zlib",
|
||||
"version": "1.3-r2"
|
||||
}
|
||||
]
|
||||
}
|
||||
28
samples/scanner/images/nginx/usage.cdx.json
Normal file
28
samples/scanner/images/nginx/usage.cdx.json
Normal file
@@ -0,0 +1,28 @@
|
||||
{
|
||||
"bomFormat": "CycloneDX",
|
||||
"specVersion": "1.5",
|
||||
"version": 1,
|
||||
"metadata": {
|
||||
"timestamp": "2025-10-19T00:00:00Z",
|
||||
"component": {
|
||||
"type": "container",
|
||||
"name": "nginx",
|
||||
"version": "1.25.4",
|
||||
"bomRef": "pkg:docker/library/nginx@sha256:8f47d7c6b538c0d9533b78913cba3d5e671e7c4b4e7c6a2bb9a1a1c4d4f8e123"
|
||||
}
|
||||
},
|
||||
"components": [
|
||||
{
|
||||
"type": "application",
|
||||
"bomRef": "pkg:apk/alpine/nginx@1.25.4-r1?arch=x86_64",
|
||||
"name": "nginx",
|
||||
"version": "1.25.4-r1"
|
||||
},
|
||||
{
|
||||
"type": "library",
|
||||
"bomRef": "pkg:apk/alpine/openssl@3.2.2-r0?arch=x86_64",
|
||||
"name": "openssl",
|
||||
"version": "3.2.2-r0"
|
||||
}
|
||||
]
|
||||
}
|
||||
3
samples/scanner/images/npm-monorepo/README.md
Normal file
3
samples/scanner/images/npm-monorepo/README.md
Normal file
@@ -0,0 +1,3 @@
|
||||
# NPM Monorepo Sample
|
||||
|
||||
Mirrors the fixture under `samples/runtime/npm-monorepo`. The SBOMs highlight the workspace packages plus transitive dependencies, and the BOM Index pins evidence to individual `package.json` files.
|
||||
52
samples/scanner/images/npm-monorepo/bom-index.json
Normal file
52
samples/scanner/images/npm-monorepo/bom-index.json
Normal file
@@ -0,0 +1,52 @@
|
||||
{
|
||||
"schema": "stellaops/bom-index@1",
|
||||
"image": {
|
||||
"repository": "registry.stella-ops.org/samples/npm-monorepo",
|
||||
"digest": "sha256:1cf2ab9d373086ed5bd1a8f4aa6f491f8844bbb0d6be8df449c16ad6c8fa7c55",
|
||||
"tag": "2025.10.0"
|
||||
},
|
||||
"generatedAt": "2025-10-19T00:00:00Z",
|
||||
"generator": "stellaops/scanner@10.0.0-preview1",
|
||||
"components": [
|
||||
{
|
||||
"purl": "pkg:npm/%40stella/web@1.5.3",
|
||||
"layerDigest": "sha256:1212121212121212121212121212121212121212121212121212121212121212",
|
||||
"usage": ["inventory", "runtime"],
|
||||
"licenses": ["MIT"],
|
||||
"evidence": {
|
||||
"kind": "package-json",
|
||||
"path": "node_modules/@stella/web/package.json"
|
||||
}
|
||||
},
|
||||
{
|
||||
"purl": "pkg:npm/%40stella/core@2.0.0",
|
||||
"layerDigest": "sha256:1313131313131313131313131313131313131313131313131313131313131313",
|
||||
"usage": ["inventory", "runtime"],
|
||||
"licenses": ["Apache-2.0"],
|
||||
"evidence": {
|
||||
"kind": "package-json",
|
||||
"path": "node_modules/@stella/core/package.json"
|
||||
}
|
||||
},
|
||||
{
|
||||
"purl": "pkg:npm/lodash@4.17.21",
|
||||
"layerDigest": "sha256:1414141414141414141414141414141414141414141414141414141414141414",
|
||||
"usage": ["inventory"],
|
||||
"licenses": ["MIT"],
|
||||
"evidence": {
|
||||
"kind": "package-json",
|
||||
"path": "node_modules/lodash/package.json"
|
||||
}
|
||||
},
|
||||
{
|
||||
"purl": "pkg:npm/rxjs@7.8.1",
|
||||
"layerDigest": "sha256:1515151515151515151515151515151515151515151515151515151515151515",
|
||||
"usage": ["inventory", "runtime"],
|
||||
"licenses": ["Apache-2.0"],
|
||||
"evidence": {
|
||||
"kind": "package-json",
|
||||
"path": "node_modules/rxjs/package.json"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
40
samples/scanner/images/npm-monorepo/inventory.cdx.json
Normal file
40
samples/scanner/images/npm-monorepo/inventory.cdx.json
Normal file
@@ -0,0 +1,40 @@
|
||||
{
|
||||
"bomFormat": "CycloneDX",
|
||||
"specVersion": "1.5",
|
||||
"version": 1,
|
||||
"metadata": {
|
||||
"timestamp": "2025-10-19T00:00:00Z",
|
||||
"component": {
|
||||
"type": "container",
|
||||
"name": "npm-monorepo",
|
||||
"version": "2025.10.0",
|
||||
"bomRef": "pkg:docker/registry.stella-ops.org/samples/npm-monorepo@sha256:1cf2ab9d373086ed5bd1a8f4aa6f491f8844bbb0d6be8df449c16ad6c8fa7c55"
|
||||
}
|
||||
},
|
||||
"components": [
|
||||
{
|
||||
"type": "application",
|
||||
"bomRef": "pkg:npm/%40stella/core@2.0.0",
|
||||
"name": "@stella/core",
|
||||
"version": "2.0.0"
|
||||
},
|
||||
{
|
||||
"type": "application",
|
||||
"bomRef": "pkg:npm/%40stella/web@1.5.3",
|
||||
"name": "@stella/web",
|
||||
"version": "1.5.3"
|
||||
},
|
||||
{
|
||||
"type": "library",
|
||||
"bomRef": "pkg:npm/lodash@4.17.21",
|
||||
"name": "lodash",
|
||||
"version": "4.17.21"
|
||||
},
|
||||
{
|
||||
"type": "library",
|
||||
"bomRef": "pkg:npm/rxjs@7.8.1",
|
||||
"name": "rxjs",
|
||||
"version": "7.8.1"
|
||||
}
|
||||
]
|
||||
}
|
||||
34
samples/scanner/images/npm-monorepo/usage.cdx.json
Normal file
34
samples/scanner/images/npm-monorepo/usage.cdx.json
Normal file
@@ -0,0 +1,34 @@
|
||||
{
|
||||
"bomFormat": "CycloneDX",
|
||||
"specVersion": "1.5",
|
||||
"version": 1,
|
||||
"metadata": {
|
||||
"timestamp": "2025-10-19T00:00:00Z",
|
||||
"component": {
|
||||
"type": "container",
|
||||
"name": "npm-monorepo",
|
||||
"version": "2025.10.0",
|
||||
"bomRef": "pkg:docker/registry.stella-ops.org/samples/npm-monorepo@sha256:1cf2ab9d373086ed5bd1a8f4aa6f491f8844bbb0d6be8df449c16ad6c8fa7c55"
|
||||
}
|
||||
},
|
||||
"components": [
|
||||
{
|
||||
"type": "application",
|
||||
"bomRef": "pkg:npm/%40stella/web@1.5.3",
|
||||
"name": "@stella/web",
|
||||
"version": "1.5.3"
|
||||
},
|
||||
{
|
||||
"type": "application",
|
||||
"bomRef": "pkg:npm/%40stella/core@2.0.0",
|
||||
"name": "@stella/core",
|
||||
"version": "2.0.0"
|
||||
},
|
||||
{
|
||||
"type": "library",
|
||||
"bomRef": "pkg:npm/rxjs@7.8.1",
|
||||
"name": "rxjs",
|
||||
"version": "7.8.1"
|
||||
}
|
||||
]
|
||||
}
|
||||
3
samples/scanner/images/python-venv/README.md
Normal file
3
samples/scanner/images/python-venv/README.md
Normal file
@@ -0,0 +1,3 @@
|
||||
# Python Virtualenv Sample
|
||||
|
||||
Pairs with the runtime fixture under `samples/runtime/python-venv`. The SBOMs highlight how requests pulls in urllib3 and certifi, and the BOM Index records the `*.dist-info/METADATA` evidence paths used by the Python analyzer.
|
||||
42
samples/scanner/images/python-venv/bom-index.json
Normal file
42
samples/scanner/images/python-venv/bom-index.json
Normal file
@@ -0,0 +1,42 @@
|
||||
{
|
||||
"schema": "stellaops/bom-index@1",
|
||||
"image": {
|
||||
"repository": "docker.io/library/python",
|
||||
"digest": "sha256:dbed08b7d9675c2be627bbecac182a04c36d3f4ffd542c4fba7c7a850a6578dc",
|
||||
"tag": "3.12-slim"
|
||||
},
|
||||
"generatedAt": "2025-10-19T00:00:00Z",
|
||||
"generator": "stellaops/scanner@10.0.0-preview1",
|
||||
"components": [
|
||||
{
|
||||
"purl": "pkg:pypi/requests@2.32.0",
|
||||
"layerDigest": "sha256:eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
|
||||
"usage": ["inventory", "runtime"],
|
||||
"licenses": ["Apache-2.0"],
|
||||
"evidence": {
|
||||
"kind": "dist-info",
|
||||
"path": "lib/python3.11/site-packages/requests-2.32.0.dist-info/METADATA"
|
||||
}
|
||||
},
|
||||
{
|
||||
"purl": "pkg:pypi/urllib3@2.2.1",
|
||||
"layerDigest": "sha256:ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
|
||||
"usage": ["inventory", "runtime"],
|
||||
"licenses": ["MIT"],
|
||||
"evidence": {
|
||||
"kind": "dist-info",
|
||||
"path": "lib/python3.11/site-packages/urllib3-2.2.1.dist-info/METADATA"
|
||||
}
|
||||
},
|
||||
{
|
||||
"purl": "pkg:pypi/certifi@2024.6.2",
|
||||
"layerDigest": "sha256:0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"usage": ["inventory"],
|
||||
"licenses": ["MPL-2.0"],
|
||||
"evidence": {
|
||||
"kind": "dist-info",
|
||||
"path": "lib/python3.11/site-packages/certifi-2024.6.2.dist-info/METADATA"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
34
samples/scanner/images/python-venv/inventory.cdx.json
Normal file
34
samples/scanner/images/python-venv/inventory.cdx.json
Normal file
@@ -0,0 +1,34 @@
|
||||
{
|
||||
"bomFormat": "CycloneDX",
|
||||
"specVersion": "1.5",
|
||||
"version": 1,
|
||||
"metadata": {
|
||||
"timestamp": "2025-10-19T00:00:00Z",
|
||||
"component": {
|
||||
"type": "container",
|
||||
"name": "python-venv",
|
||||
"version": "3.12-slim",
|
||||
"bomRef": "pkg:docker/library/python@sha256:dbed08b7d9675c2be627bbecac182a04c36d3f4ffd542c4fba7c7a850a6578dc"
|
||||
}
|
||||
},
|
||||
"components": [
|
||||
{
|
||||
"type": "application",
|
||||
"bomRef": "pkg:pypi/requests@2.32.0",
|
||||
"name": "requests",
|
||||
"version": "2.32.0"
|
||||
},
|
||||
{
|
||||
"type": "library",
|
||||
"bomRef": "pkg:pypi/urllib3@2.2.1",
|
||||
"name": "urllib3",
|
||||
"version": "2.2.1"
|
||||
},
|
||||
{
|
||||
"type": "library",
|
||||
"bomRef": "pkg:pypi/certifi@2024.6.2",
|
||||
"name": "certifi",
|
||||
"version": "2024.6.2"
|
||||
}
|
||||
]
|
||||
}
|
||||
28
samples/scanner/images/python-venv/usage.cdx.json
Normal file
28
samples/scanner/images/python-venv/usage.cdx.json
Normal file
@@ -0,0 +1,28 @@
|
||||
{
|
||||
"bomFormat": "CycloneDX",
|
||||
"specVersion": "1.5",
|
||||
"version": 1,
|
||||
"metadata": {
|
||||
"timestamp": "2025-10-19T00:00:00Z",
|
||||
"component": {
|
||||
"type": "container",
|
||||
"name": "python-venv",
|
||||
"version": "3.12-slim",
|
||||
"bomRef": "pkg:docker/library/python@sha256:dbed08b7d9675c2be627bbecac182a04c36d3f4ffd542c4fba7c7a850a6578dc"
|
||||
}
|
||||
},
|
||||
"components": [
|
||||
{
|
||||
"type": "application",
|
||||
"bomRef": "pkg:pypi/requests@2.32.0",
|
||||
"name": "requests",
|
||||
"version": "2.32.0"
|
||||
},
|
||||
{
|
||||
"type": "library",
|
||||
"bomRef": "pkg:pypi/urllib3@2.2.1",
|
||||
"name": "urllib3",
|
||||
"version": "2.2.1"
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user