54
54
mv temp/index.json.new temp/index.json
55
55
# </build>
56
56
# <sbom_scan>
57
- docker buildx build --progress=plain \
57
+ build_output=$(
58
+ docker buildx build --progress=plain \
58
59
--provenance=false \
59
60
--sbom=generator=" $BASHBREW_BUILDKIT_SBOM_GENERATOR " \
60
61
--tag ' docker:24.0.7-cli' \
@@ -69,7 +70,24 @@ docker buildx build --progress=plain \
69
70
--tag ' amd64/docker:24.0.7-cli-alpine3.18' \
70
71
--tag ' oisupport/staging-amd64:4b199ac326c74b3058a147e14f553af9e8e1659abc29bd3e82c9c9807b66ee43' \
71
72
--output ' "type=oci","tar=false","dest=sbom"' \
72
- - <<< ' FROM oisupport/staging-amd64:4b199ac326c74b3058a147e14f553af9e8e1659abc29bd3e82c9c9807b66ee43@sha256:0432a4d379794811b4a2e01d0d3e67a9bcf95d6c2bf71545f03bce3f1d60f401'
73
+ - <<< ' FROM oisupport/staging-amd64:4b199ac326c74b3058a147e14f553af9e8e1659abc29bd3e82c9c9807b66ee43@sha256:0432a4d379794811b4a2e01d0d3e67a9bcf95d6c2bf71545f03bce3f1d60f401' 2>&1
74
+ )
75
+ attest_manifest_digest=$(
76
+ echo " $build_output " | jq -rs '
77
+ .[]
78
+ | select(.statuses).statuses[]
79
+ | select((.completed != null) and (.id | startswith("exporting attestation manifest"))).id
80
+ | sub("exporting attestation manifest "; "")
81
+ '
82
+ )
83
+ sbom_digest=$(
84
+ jq -r '
85
+ .layers[] | select(.annotations["in-toto.io/predicate-type"] == "https://spdx.dev/Document").digest
86
+ ' " sbom/blobs/${attest_manifest_digest//:// } "
87
+ )
88
+ jq -c --arg digest " sha256:0432a4d379794811b4a2e01d0d3e67a9bcf95d6c2bf71545f03bce3f1d60f401" '
89
+ .subject[].digest |= ($digest | split(":") | {(.[0]): .[1]})
90
+ ' " sbom/blobs/${sbom_digest//:// } " > sbom.json
73
91
# </sbom_scan>
74
92
# <push>
75
93
crane push temp ' oisupport/staging-amd64:4b199ac326c74b3058a147e14f553af9e8e1659abc29bd3e82c9c9807b66ee43'
@@ -107,7 +125,8 @@ SOURCE_DATE_EPOCH=1700741054 \
107
125
' https://github.com/docker-library/docker.git#6d541d27b5dd12639e5a33a675ebca04d3837d74:24/windows/windowsservercore-ltsc2022'
108
126
# </build>
109
127
# <sbom_scan>
110
- docker buildx build --progress=plain \
128
+ build_output=$(
129
+ docker buildx build --progress=plain \
111
130
--provenance=false \
112
131
--sbom=generator=" $BASHBREW_BUILDKIT_SBOM_GENERATOR " \
113
132
--tag ' docker:24.0.7-windowsservercore-ltsc2022' \
@@ -128,7 +147,24 @@ docker buildx build --progress=plain \
128
147
--tag ' winamd64/docker:windowsservercore' \
129
148
--tag ' oisupport/staging-windows-amd64:9b405cfa5b88ba65121aabdb95ae90fd2e1fee7582174de82ae861613ae3072e' \
130
149
--output ' "type=oci","tar=false","dest=sbom"' \
131
- - <<< ' FROM oisupport/staging-windows-amd64:9b405cfa5b88ba65121aabdb95ae90fd2e1fee7582174de82ae861613ae3072e@sha256:69aba7120e3f4014bfa80f4eae2cfc9698dcb6b8a5d64daf06de4039a19846ce'
150
+ - <<< ' FROM oisupport/staging-windows-amd64:9b405cfa5b88ba65121aabdb95ae90fd2e1fee7582174de82ae861613ae3072e@sha256:69aba7120e3f4014bfa80f4eae2cfc9698dcb6b8a5d64daf06de4039a19846ce' 2>&1
151
+ )
152
+ attest_manifest_digest=$(
153
+ echo " $build_output " | jq -rs '
154
+ .[]
155
+ | select(.statuses).statuses[]
156
+ | select((.completed != null) and (.id | startswith("exporting attestation manifest"))).id
157
+ | sub("exporting attestation manifest "; "")
158
+ '
159
+ )
160
+ sbom_digest=$(
161
+ jq -r '
162
+ .layers[] | select(.annotations["in-toto.io/predicate-type"] == "https://spdx.dev/Document").digest
163
+ ' " sbom/blobs/${attest_manifest_digest//:// } "
164
+ )
165
+ jq -c --arg digest " sha256:69aba7120e3f4014bfa80f4eae2cfc9698dcb6b8a5d64daf06de4039a19846ce" '
166
+ .subject[].digest |= ($digest | split(":") | {(.[0]): .[1]})
167
+ ' " sbom/blobs/${sbom_digest//:// } " > sbom.json
132
168
# </sbom_scan>
133
169
# <push>
134
170
docker push ' oisupport/staging-windows-amd64:9b405cfa5b88ba65121aabdb95ae90fd2e1fee7582174de82ae861613ae3072e'
@@ -217,7 +253,8 @@ jq -r --argjson sbomManifestDesc "$sbomManifestDesc" '.manifests += [ $sbomManif
217
253
mv temp/index.json.new temp/index.json
218
254
# </build>
219
255
# <sbom_scan>
220
- docker buildx build --progress=plain \
256
+ build_output=$(
257
+ docker buildx build --progress=plain \
221
258
--provenance=false \
222
259
--sbom=generator=" $BASHBREW_BUILDKIT_SBOM_GENERATOR " \
223
260
--tag ' busybox:1.36.1' \
@@ -242,7 +279,24 @@ docker buildx build --progress=plain \
242
279
--tag ' amd64/busybox:glibc' \
243
280
--tag ' oisupport/staging-amd64:191402ad0feacf03daf9d52a492207e73ef08b0bd17265043aea13aa27e2bb3f' \
244
281
--output ' "type=oci","tar=false","dest=sbom"' \
245
- - <<< ' FROM oisupport/staging-amd64:191402ad0feacf03daf9d52a492207e73ef08b0bd17265043aea13aa27e2bb3f@sha256:4be429a5fbb2e71ae7958bfa558bc637cf3a61baf40a708cb8fff532b39e52d0'
282
+ - <<< ' FROM oisupport/staging-amd64:191402ad0feacf03daf9d52a492207e73ef08b0bd17265043aea13aa27e2bb3f@sha256:4be429a5fbb2e71ae7958bfa558bc637cf3a61baf40a708cb8fff532b39e52d0' 2>&1
283
+ )
284
+ attest_manifest_digest=$(
285
+ echo " $build_output " | jq -rs '
286
+ .[]
287
+ | select(.statuses).statuses[]
288
+ | select((.completed != null) and (.id | startswith("exporting attestation manifest"))).id
289
+ | sub("exporting attestation manifest "; "")
290
+ '
291
+ )
292
+ sbom_digest=$(
293
+ jq -r '
294
+ .layers[] | select(.annotations["in-toto.io/predicate-type"] == "https://spdx.dev/Document").digest
295
+ ' " sbom/blobs/${attest_manifest_digest//:// } "
296
+ )
297
+ jq -c --arg digest " sha256:4be429a5fbb2e71ae7958bfa558bc637cf3a61baf40a708cb8fff532b39e52d0" '
298
+ .subject[].digest |= ($digest | split(":") | {(.[0]): .[1]})
299
+ ' " sbom/blobs/${sbom_digest//:// } " > sbom.json
246
300
# </sbom_scan>
247
301
# <push>
248
302
crane push --index temp ' oisupport/staging-amd64:191402ad0feacf03daf9d52a492207e73ef08b0bd17265043aea13aa27e2bb3f'
0 commit comments