@@ -7,24 +7,30 @@ SBOM_DIR="/opt/kayobe/stackhpc/sboms"
7
7
mkdir -p " $SBOM_DIR "
8
8
9
9
# Ensure the custom output template exists
10
- cat << EOL > "$SBOM_DIR /trivy-custom.tmpl"
11
- "Package","Version Installed","Vulnerability ID","Severity","Title "
12
- {{- range \ $ ri, \ $ r := . }}
13
- {{- range \ $ vi, \ $ v := .Vulnerabilities }}
10
+ if [[ ! -f " $SBOM_DIR /trivy-custom.tmpl" ]] ; then
11
+ cat << ' EOL ' > "$SBOM_DIR/trivy-custom.tmpl "
12
+ {{- range $ri, $r := . - }}
13
+ {{- range $vi, $v := .Vulnerabilities - }}
14
14
"{{ $v.PkgName }}","{{$v.InstalledVersion }}","{{ $v.VulnerabilityID }}","{{$v.Severity }}","{{$v.Title }}"
15
- {{- end}}
16
- {{- end }}
15
+ {{- end - }}
16
+ {{- end - }}
17
17
EOL
18
+ fi
19
+
20
+ echo " Package" ," Version Installed" ," Vulnerability ID" ," Severity" ," Title"
18
21
19
22
# Loop through each container image and process its SBOM
20
- docker image ls --format " {{.Repository}}:{{.Tag}}" | sort | uniq | while read -r image; do
23
+ docker image ls --format " {{.Repository}}:{{.Tag}}:{{.Image ID}}" | sort | uniq | while read -r image; do
24
+ # Split image ID
25
+ image_id=$( echo " $image " | awk -F: ' {print $NF}' )
26
+
21
27
# Generate SBOM filename
22
28
sbom_file=" $SBOM_DIR /$( echo " $image " | tr ' /:' ' _' ) .sbom"
23
29
24
30
# Generate SBOM if missing
25
31
if [[ ! -f " $sbom_file " ]]; then
26
32
echo " Generating SBOM for $image "
27
- if ! trivy image --quiet --format spdx-json --output " $sbom_file " " $image " ; then
33
+ if ! trivy image --quiet --format spdx-json --output " $sbom_file " " $image_id " ; then
28
34
echo " Failed to generate SBOM for $image . Skipping."
29
35
continue
30
36
fi
0 commit comments