main
sh 45 lines 1.35 KB
Raw
1 #!/bin/bash
2 # SPDX-License-Identifier: Apache-2.0
3 # SPDX-FileCopyrightText: Copyright contributors to the vLLM project
4
5 set -euo pipefail
6
7 if [ "$#" -ne 2 ]; then
8 echo "Usage: $0 SOURCE@sha256:DIGEST DESTINATION-zstd" >&2
9 exit 2
10 fi
11
12 SOURCE=$1
13 DESTINATION=$2
14 if [[ ! "$SOURCE" =~ ^[a-zA-Z0-9][a-zA-Z0-9._:/-]*@sha256:[a-f0-9]{64}$ ]] ||
15 [[ ! "$DESTINATION" =~ ^[a-zA-Z0-9][a-zA-Z0-9._:/-]*:[a-zA-Z0-9_][a-zA-Z0-9_.-]*-zstd$ ]]; then
16 echo "ERROR: source must use an immutable sha256 digest and destination must end in -zstd" >&2
17 exit 2
18 fi
19
20 BUILDER=
21 cleanup() {
22 status=$?
23 trap - EXIT INT TERM
24 if [ -n "$BUILDER" ] && ! docker buildx rm --force "$BUILDER"; then
25 echo "ERROR: failed to remove Buildx builder $BUILDER" >&2
26 [ "$status" -ne 0 ] || status=1
27 fi
28 exit "$status"
29 }
30 trap cleanup EXIT
31 trap 'exit 130' INT
32 trap 'exit 143' TERM
33
34 BUILDER=$(docker buildx create \
35 --driver docker-container \
36 --driver-opt network=host \
37 --driver-opt 'image=moby/buildkit:v0.32.2@sha256:28a898719c18a33f4e8000685287fa36fd0dd9560c6440227d3a732d79bb41d8')
38
39 printf '# check=error=true\n\nFROM %s\n' "$SOURCE" | docker buildx build \
40 --builder "$BUILDER" \
41 --platform linux/amd64 \
42 --progress plain \
43 --provenance=mode=min \
44 --output "type=image,name=${DESTINATION},push=true,compression=zstd,compression-level=3,force-compression=true,oci-mediatypes=true" \
45 -