github.com/pdmccormick/importable-docker-buildx@v0.0.0-20240426161518-e47091289030/hack/release (about) 1 #!/usr/bin/env bash 2 3 set -eu -o pipefail 4 5 : "${GITHUB_ACTIONS=}" 6 : "${GITHUB_REPOSITORY=}" 7 : "${GITHUB_RUN_ID=}" 8 9 : "${BUILDX_CMD=docker buildx}" 10 : "${DESTDIR=./bin/release}" 11 : "${CACHE_FROM=}" 12 : "${CACHE_TO=}" 13 : "${PLATFORMS=}" 14 15 if [ -n "$CACHE_FROM" ]; then 16 for cfrom in $CACHE_FROM; do 17 setFlags+=(--set "*.cache-from=$cfrom") 18 done 19 fi 20 if [ -n "$CACHE_TO" ]; then 21 for cto in $CACHE_TO; do 22 setFlags+=(--set "*.cache-to=$cto") 23 done 24 fi 25 if [ -n "$PLATFORMS" ]; then 26 setFlags+=(--set "*.platform=$PLATFORMS") 27 fi 28 if ${BUILDX_CMD} build --help 2>&1 | grep -- '--attest' >/dev/null; then 29 prvattrs="mode=max" 30 if [ "$GITHUB_ACTIONS" = "true" ]; then 31 prvattrs="$prvattrs,builder-id=https://github.com/${GITHUB_REPOSITORY}/actions/runs/${GITHUB_RUN_ID}" 32 fi 33 setFlags+=(--set "*.attest=type=sbom") 34 setFlags+=(--set "*.attest=type=provenance,$prvattrs") 35 fi 36 37 output=$(mktemp -d -t buildx-output.XXXXXXXXXX) 38 39 ( 40 set -x 41 ${BUILDX_CMD} bake "${setFlags[@]}" --set "*.args.BUILDKIT_MULTI_PLATFORM=true" --set "*.output=$output" release 42 ) 43 44 for pdir in "${output}"/*/; do 45 ( 46 cd "$pdir" 47 binname=$(find . -name 'buildx-*') 48 filename=$(basename "${binname%.exe}") 49 mv "provenance.json" "${filename}.provenance.json" 50 mv "sbom-binaries.spdx.json" "${filename}.sbom.json" 51 find . -name 'sbom*.json' -exec rm {} \; 52 ) 53 done 54 55 mkdir -p "$DESTDIR" 56 mv "$output"/**/* "$DESTDIR/" 57 rm -rf "$output"