Skip to content

Commit 8a021e7

Browse files
committed
Bump version to 2.1.20
1 parent 4487cca commit 8a021e7

2 files changed

Lines changed: 84 additions & 4 deletions

File tree

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
import json
2+
import csv
3+
import sys
4+
from pathlib import Path
5+
from tabulate import tabulate
6+
7+
input_file = sys.argv[1] if len(sys.argv) > 1 else "sbom.json"
8+
output_file = sys.argv[2] if len(sys.argv) > 2 else "sbom.csv"
9+
10+
with open(input_file, "r", encoding="utf-8") as f:
11+
sbom = json.load(f)
12+
13+
packages = sbom.get("packages", [])
14+
15+
columns = [
16+
"name",
17+
"versionInfo",
18+
"type",
19+
"supplier",
20+
"downloadLocation",
21+
"licenseConcluded",
22+
"licenseDeclared",
23+
"externalRefs"
24+
]
25+
26+
def get_type(pkg):
27+
spdxid = pkg.get("SPDXID", "")
28+
if "-" in spdxid:
29+
parts = spdxid.split("-")
30+
if len(parts) > 2:
31+
return parts[2]
32+
refs = pkg.get("externalRefs", [])
33+
for ref in refs:
34+
if ref.get("referenceType") == "purl":
35+
return ref.get("referenceLocator", "").split("/")[0]
36+
return ""
37+
38+
def get_external_refs(pkg):
39+
refs = pkg.get("externalRefs", [])
40+
return ";".join([ref.get("referenceLocator", "") for ref in refs])
41+
42+
with open(output_file, "w", newline="", encoding="utf-8") as csvfile:
43+
writer = csv.DictWriter(csvfile, fieldnames=columns)
44+
writer.writeheader()
45+
for pkg in packages:
46+
row = {
47+
"name": pkg.get("name", ""),
48+
"versionInfo": pkg.get("versionInfo", ""),
49+
"type": get_type(pkg),
50+
"supplier": pkg.get("supplier", ""),
51+
"downloadLocation": pkg.get("downloadLocation", ""),
52+
"licenseConcluded": pkg.get("licenseConcluded", ""),
53+
"licenseDeclared": pkg.get("licenseDeclared", ""),
54+
"externalRefs": get_external_refs(pkg)
55+
}
56+
writer.writerow(row)
57+
58+
print(f"CSV export complete: {output_file}")
59+
60+
with open("sbom_table.txt", "w", encoding="utf-8") as f:
61+
table = []
62+
for pkg in packages:
63+
row = [
64+
pkg.get("name", ""),
65+
pkg.get("versionInfo", ""),
66+
get_type(pkg),
67+
pkg.get("supplier", ""),
68+
pkg.get("downloadLocation", ""),
69+
pkg.get("licenseConcluded", ""),
70+
pkg.get("licenseDeclared", ""),
71+
get_external_refs(pkg)
72+
]
73+
table.append(row)
74+
f.write(tabulate(table, columns, tablefmt="grid"))

.github/workflows/sbom.yml

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
name: SBOM Check
1+
name: SBOM Vulnerability Scanning
22

33
on:
44
workflow_dispatch:
@@ -61,8 +61,14 @@ jobs:
6161
- name: Create SBOM
6262
run: bash scripts/create-sbom.sh terraform python tflint
6363

64-
- name: Upload SBOM as artifact
64+
- name: Convert SBOM JSON to CSV
65+
run: |
66+
pip install --upgrade pip
67+
pip install tabulate
68+
python .github/scripts/sbom_json_to_csv.py sbom.json sbom.csv
69+
70+
- name: Upload SBOM CSV as artifact
6571
uses: actions/upload-artifact@v4
6672
with:
67-
name: sbom
68-
path: sbom.json
73+
name: sbom-csv
74+
path: sbom.csv

0 commit comments

Comments
 (0)