CI/CD-Integration
Eine manuell gepflegte SBOM ist in dem Moment veraltet, in dem sie entsteht. Das Multi-Arch-Docker-Image (amd64/arm64) bringt kunnus in jede Pipeline, sodass jedes Release mit einer aktuellen SBOM erscheint.
GitHub Actions
- name: Generate SBOM
run: |
docker run --rm -v ${{ github.workspace }}:/src \
ghcr.io/think-ahead-technologies/kunnus-scanner:latest \
sbom repo /src --output /src/sbom.cdx.json
- name: Upload to kunnus platform
env:
KUNNUS_API_KEY: ${{ secrets.KUNNUS_API_KEY }}
KUNNUS_COMPONENT_ID: ${{ vars.KUNNUS_COMPONENT_ID }}
run: |
docker run --rm -v ${{ github.workspace }}:/src \
-e KUNNUS_API_KEY -e KUNNUS_COMPONENT_ID \
ghcr.io/think-ahead-technologies/kunnus-scanner:latest \
upload /src/sbom.cdx.jsonGitLab CI
sbom:
image:
name: ghcr.io/think-ahead-technologies/kunnus-scanner:latest
entrypoint: [""]
script:
- /kunnus sbom repo . --output sbom.cdx.json
- /kunnus upload sbom.cdx.json
variables:
KUNNUS_API_KEY: $KUNNUS_API_KEY
KUNNUS_COMPONENT_ID: $KUNNUS_COMPONENT_ID
artifacts:
paths: [sbom.cdx.json]Exit-Codes: vollständige vs. unvollständige SBOMs
Exit 0 bedeutet: Jeder Extraktor lief sauber durch. Schließt der Scan ab, aber einzelne Plugins sind fehlgeschlagen, wird die SBOM trotzdem geschrieben und kunnus beendet sich mit Exit 1 und einer Liste der fehlgeschlagenen Plugins — die Pipeline kann eine vollständige SBOM von einer mit Lücken unterscheiden, statt Letztere stillschweigend auszuliefern. --verbosity info (oder KUNNUS_VERBOSITY=info) liefert Details pro Plugin.
Upload-Konfiguration
kunnus upload liest seine Flags aus Umgebungsvariablen — KUNNUS_API_KEY (erforderlich), KUNNUS_COMPONENT_ID und KUNNUS_UPLOAD_URL — die natürliche Form für CI-Secrets. Die Server-Antwort geht nach stdout.