@@ -97,84 +97,14 @@ docker push 'oisupport/staging-windows-amd64:9b405cfa5b88ba65121aabdb95ae90fd2e1
9797
9898# </pull>
9999# <build>
100- export BASHBREW_CACHE=" ${BASHBREW_CACHE:- ${XDG_CACHE_HOME:- $HOME / .cache} / bashbrew} "
101- gitCache=" $BASHBREW_CACHE /git"
102- git init --bare " $gitCache "
103- _git () { git -C " $gitCache " " $@ " ; }
104- _git config gc.auto 0
105- _commit () { _git rev-parse ' d0b7d566eb4f1fa9933984e6fc04ab11f08f4592^{commit}' ; }
106- if ! _commit & > /dev/null; then _git fetch ' https://github.com/docker-library/busybox.git' ' d0b7d566eb4f1fa9933984e6fc04ab11f08f4592:' || _git fetch ' refs/heads/dist-amd64:' ; fi
107- _commit
108- mkdir temp
109- _git archive --format=tar ' d0b7d566eb4f1fa9933984e6fc04ab11f08f4592:latest/glibc/amd64/' | tar -xvC temp
110- jq -s '
111- if length != 1 then
112- error("unexpected ' \' ' oci-layout' \' ' document count: " + length)
113- else .[0] end
114- | if .imageLayoutVersion != "1.0.0" then
115- error("unsupported imageLayoutVersion: " + .imageLayoutVersion)
116- else . end
117- ' temp/oci-layout > /dev/null
118- jq -s '
119- if length != 1 then
120- error("unexpected ' \' ' index.json' \' ' document count: " + length)
121- else .[0] end
122- | if .schemaVersion != 2 then
123- error("unsupported schemaVersion: " + .schemaVersion)
124- else . end
125- | if .manifests | length != 1 then
126- error("expected only one manifests entry, not " + (.manifests | length))
127- else . end
128- | .manifests[0] |= (
129- if .mediaType != "application/vnd.oci.image.manifest.v1+json" then
130- error("unsupported descriptor mediaType: " + .mediaType)
131- else . end
132- | if .size < 0 then
133- error("invalid descriptor size: " + .size)
134- else . end
135- | del(.annotations, .urls)
136- | .annotations = {"org.opencontainers.image.source":"https://github.com/docker-library/busybox.git","org.opencontainers.image.revision":"d0b7d566eb4f1fa9933984e6fc04ab11f08f4592","org.opencontainers.image.created":"2024-02-28T00:44:18Z","org.opencontainers.image.version":"1.36.1","org.opencontainers.image.url":"https://hub.docker.com/_/busybox","com.docker.official-images.bashbrew.arch":"amd64","org.opencontainers.image.base.name":"scratch"}
137- )
138- ' temp/index.json > temp/index.json.new
139- mv temp/index.json.new temp/index.json
100+ build='{"buildId":"191402ad0feacf03daf9d52a492207e73ef08b0bd17265043aea13aa27e2bb3f","build":{"img":"oisupport/staging-amd64:191402ad0feacf03daf9d52a492207e73ef08b0bd17265043aea13aa27e2bb3f","resolved":{"schemaVersion":2,"mediaType":"application/vnd.oci.image.index.v1+json","manifests":[{"mediaType":"application/vnd.oci.image.manifest.v1+json","digest":"sha256:4be429a5fbb2e71ae7958bfa558bc637cf3a61baf40a708cb8fff532b39e52d0","size":610,"annotations":{"com.docker.official-images.bashbrew.arch":"amd64","org.opencontainers.image.base.name":"scratch","org.opencontainers.image.created":"2024-02-28T00:44:18Z","org.opencontainers.image.ref.name":"oisupport/staging-amd64:191402ad0feacf03daf9d52a492207e73ef08b0bd17265043aea13aa27e2bb3f@sha256:4be429a5fbb2e71ae7958bfa558bc637cf3a61baf40a708cb8fff532b39e52d0","org.opencontainers.image.revision":"d0b7d566eb4f1fa9933984e6fc04ab11f08f4592","org.opencontainers.image.source":"https://github.com/docker-library/busybox.git","org.opencontainers.image.url":"https://hub.docker.com/_/busybox","org.opencontainers.image.version":"1.36.1-glibc"},"platform":{"architecture":"amd64","os":"linux"}}],"annotations":{"org.opencontainers.image.ref.name":"oisupport/staging-amd64:191402ad0feacf03daf9d52a492207e73ef08b0bd17265043aea13aa27e2bb3f@sha256:70a227928672dffb7d24880bad1a705b527fab650f7503c191e48a209c4a0d10"}},"sourceId":"df39fa95e66c7e19e56af0f9dfb8b79b15a0422a9b44eb0f16274d3f1f8939a2","arch":"amd64","parents":{},"resolvedParents":{}},"source":{"sourceId":"df39fa95e66c7e19e56af0f9dfb8b79b15a0422a9b44eb0f16274d3f1f8939a2","reproducibleGitChecksum":"17e76ce3a5b47357c5724738db231ed2477c94d43df69ce34ae0871c99f7de78","entries":[{"GitRepo":"https://github.com/docker-library/busybox.git","GitFetch":"refs/heads/dist-amd64","GitCommit":"d0b7d566eb4f1fa9933984e6fc04ab11f08f4592","Directory":"latest/glibc/amd64","File":"index.json","Builder":"oci-import","SOURCE_DATE_EPOCH":1709081058}],"arches":{"amd64":{"tags":["busybox:1.36.1","busybox:1.36","busybox:1","busybox:stable","busybox:latest","busybox:1.36.1-glibc","busybox:1.36-glibc","busybox:1-glibc","busybox:stable-glibc","busybox:glibc"],"archTags":["amd64/busybox:1.36.1","amd64/busybox:1.36","amd64/busybox:1","amd64/busybox:stable","amd64/busybox:latest","amd64/busybox:1.36.1-glibc","amd64/busybox:1.36-glibc","amd64/busybox:1-glibc","amd64/busybox:stable-glibc","amd64/busybox:glibc"],"froms":["scratch"],"lastStageFrom":"scratch","platformString":"linux/amd64","platform":{"architecture":"amd64","os":"linux"},"parents":{"scratch":{"sourceId":null,"pin":null}}}}}}'
101+ " $BASHBREW_META_SCRIPTS /helpers/oci-import.sh" <<< " $build" temp
140102# SBOM
141- originalImageManifest=" $( jq -r ' .manifests[0].digest' temp/index.json) "
142- SOURCE_DATE_EPOCH=1709081058 \
143- docker buildx build --progress=plain \
144- --load=false \
145- --provenance=false \
146- --build-arg BUILDKIT_DOCKERFILE_CHECK=skip=all \
147- --sbom=generator=" $BASHBREW_BUILDKIT_SBOM_GENERATOR " \
148- --output ' type=oci,tar=false,dest=sbom' \
149- --platform ' linux/amd64' \
150- --build-context " fake=oci-layout://$PWD /temp@$originalImageManifest " \
151- - <<< ' FROM fake'
152- sbomIndex=" $( jq -r ' .manifests[0].digest' sbom/index.json) "
153- shell=" $( jq -r --arg originalImageManifest " $originalImageManifest " '
154- first(
155- .manifests[]
156- | select(.annotations["vnd.docker.reference.type"] == "attestation-manifest")
157- ) as $attDesc
158- | @sh "sbomManifest=\($attDesc.digest)",
159- @sh "sbomManifestDesc=\(
160- $attDesc
161- | .annotations["vnd.docker.reference.digest"] = $originalImageManifest
162- | tojson
163- )"
164- ' " sbom/blobs/${sbomIndex/:// } " ) "
165- eval " $shell "
166- shell=" $( jq -r '
167- "copyBlobs=( \([ .config.digest, .layers[].digest | @sh ] | join(" ")) )"
168- ' " sbom/blobs/${sbomManifest/:// } " ) "
169- eval " $shell "
170- copyBlobs+=( " $sbomManifest " )
171- for blob in " ${copyBlobs[@]} " ; do
172- cp " sbom/blobs/${blob/:// } " " temp/blobs/${blob/:// } "
173- done
174- jq -r --argjson sbomManifestDesc " $sbomManifestDesc " ' .manifests += [ $sbomManifestDesc ]' temp/index.json > temp/index.json.new
175- mv temp/index.json.new temp/index.json
103+ mv temp temp.orig
104+ " $BASHBREW_META_SCRIPTS /helpers/oci-sbom.sh" <<< " $build" temp.orig temp
105+ rm -rf temp.orig
176106# </build>
177107# <push>
178- crane push --index temp ' oisupport/staging-amd64:191402ad0feacf03daf9d52a492207e73ef08b0bd17265043aea13aa27e2bb3f'
108+ crane push temp ' oisupport/staging-amd64:191402ad0feacf03daf9d52a492207e73ef08b0bd17265043aea13aa27e2bb3f'
179109rm -rf temp
180110# </push>
0 commit comments