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"