5454mv temp/index.json.new temp/index.json
5555# </build>
5656# <sbom_scan>
57- docker buildx build --progress=plain \
57+ build_output=$(
58+ docker buildx build --progress=plain \
5859 --provenance=false \
5960 --sbom=generator=" $BASHBREW_BUILDKIT_SBOM_GENERATOR " \
6061 --tag ' docker:24.0.7-cli' \
@@ -69,7 +70,24 @@ docker buildx build --progress=plain \
6970 --tag ' amd64/docker:24.0.7-cli-alpine3.18' \
7071 --tag ' oisupport/staging-amd64:4b199ac326c74b3058a147e14f553af9e8e1659abc29bd3e82c9c9807b66ee43' \
7172 --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
7391# </sbom_scan>
7492# <push>
7593crane push temp ' oisupport/staging-amd64:4b199ac326c74b3058a147e14f553af9e8e1659abc29bd3e82c9c9807b66ee43'
@@ -107,7 +125,8 @@ SOURCE_DATE_EPOCH=1700741054 \
107125 ' https://github.com/docker-library/docker.git#6d541d27b5dd12639e5a33a675ebca04d3837d74:24/windows/windowsservercore-ltsc2022'
108126# </build>
109127# <sbom_scan>
110- docker buildx build --progress=plain \
128+ build_output=$(
129+ docker buildx build --progress=plain \
111130 --provenance=false \
112131 --sbom=generator=" $BASHBREW_BUILDKIT_SBOM_GENERATOR " \
113132 --tag ' docker:24.0.7-windowsservercore-ltsc2022' \
@@ -128,7 +147,24 @@ docker buildx build --progress=plain \
128147 --tag ' winamd64/docker:windowsservercore' \
129148 --tag ' oisupport/staging-windows-amd64:9b405cfa5b88ba65121aabdb95ae90fd2e1fee7582174de82ae861613ae3072e' \
130149 --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
132168# </sbom_scan>
133169# <push>
134170docker push ' oisupport/staging-windows-amd64:9b405cfa5b88ba65121aabdb95ae90fd2e1fee7582174de82ae861613ae3072e'
@@ -217,7 +253,8 @@ jq -r --argjson sbomManifestDesc "$sbomManifestDesc" '.manifests += [ $sbomManif
217253mv temp/index.json.new temp/index.json
218254# </build>
219255# <sbom_scan>
220- docker buildx build --progress=plain \
256+ build_output=$(
257+ docker buildx build --progress=plain \
221258 --provenance=false \
222259 --sbom=generator=" $BASHBREW_BUILDKIT_SBOM_GENERATOR " \
223260 --tag ' busybox:1.36.1' \
@@ -242,7 +279,24 @@ docker buildx build --progress=plain \
242279 --tag ' amd64/busybox:glibc' \
243280 --tag ' oisupport/staging-amd64:191402ad0feacf03daf9d52a492207e73ef08b0bd17265043aea13aa27e2bb3f' \
244281 --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
246300# </sbom_scan>
247301# <push>
248302crane push --index temp ' oisupport/staging-amd64:191402ad0feacf03daf9d52a492207e73ef08b0bd17265043aea13aa27e2bb3f'
0 commit comments