-
Notifications
You must be signed in to change notification settings - Fork 0
Description
Ich würde hiermit gerne klären, ob noch Anpassungen am Output-Format vorgenommen werden sollten und wenn ja, welche. Aktuell bin ich ja an der Integration in GMT dran, so dass sich gewisse Inhalte darauf auswirken können.
Das aktuelle Output-Format vom dependency_resolver sieht so aus:
{
"_container-info": {
"name": "nginx-container",
"image": "nginx:latest",
"hash": "sha256:2cd1d97f893f..."
},
"dpkg": {
"scope": "system",
"dependencies": {
"package-name": {
"version": "1.2.3 amd64",
"hash": "abc123..."
}
}
},
"pip": {
"scope": "project",
"location": "/path/to/venv/lib/python3.12/site-packages",
"hash": "def456...",
"dependencies": {
"package-name": {
"version": "1.2.3"
}
}
}
}Unzufrieden bin ich insbesondere mit dem Key _container-info. Hier als reinen Output vom dependency_resolver finde ich das noch passend, aber innerhalb von GMT sieht das seltsam aus.
Ich habe mir mal das JSON-Format von Syft etwas angeschaut und mich etwas inspirieren lassen.
- Schema: https://raw.githubusercontent.com/anchore/syft/main/schema/json/schema-16.0.36.json
- Beispiel-Output: https://github.com/green-coding-solutions/dependency-resolver/blob/tool-comparison/docs/tool-comparison/gmt-gunicorn/syft-json_formatted.json
Der folgende Output entspricht nicht exakt dem Syft-Schema, hat aber einiges davon übernommen:
{
"source": {
"type": "docker",
"name": "nginx-container",
"image": "nginx:latest",
"hash": "sha256:2cd1d97f893f...",
"metadata": {
"imageSize": 505664711,
"architecture": "amd64",
"os": "linux"
}
},
"distro": {
"name": "Ubuntu 24.04.3 LTS",
"id": "Ubuntu",
"versionID": "24.04",
"versionCodename": "noble"
},
"packages": [ // artifacts
{
"name": "package-name-1",
"type": "deb",
"version": "1.2.3",
"architecture": "amd64",
"hash": "abc123...",
"found-by": "dpkg_detector",
"location": "/usr/bin/apt"
},
{
"name": "package-name-2",
"type": "python",
"version": "0.7.0",
"hash": "def456...",
"found-by": "pip_detector",
"location": "/var/www/startup/venv/lib/python3.12/site-packages/annotated_types-0.7.0.dist-info"
}
],
"descriptor": {
"name": "dependency_resolver",
"version": "0.0.1",
"configuration": {
"skip-system-scope": false,
"only-container-info": false,
"pretty-print": true,
"detectors": {
"used": [
"dpkg_detector",
"pip_detector"
]
}
}
}
}Die größte Veränderung ist, dass alle Pakete in einer Liste sind und mit dem Key type dann spezifiziert wird, was es für ein Paket ist.
Außerdem wurde _container-info mit source ersetzt und die Keys distro und descriptor hinzugefügt.
Das soll vor allem als Diskussionsgrundlage dienen. Ich erwarte nicht, dass das genau so umgesetzt werden sollte.
Gibt es hier etwas, was euch gefällt und ich übernehmen soll?