/
githubmirror
/
etcd
Обзор
Документация
Войти
/
githubmirror
/
etcd
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
scripts/build-docker.sh
77 строк
2 KB
Ivan Valdes
Use Docker buildx to build multi-arch images
06 июн 2026, 01:25
Не верифицирован
06 июн 2026, 01:25
2d1aaa7
Код
Авторство
О чём код?
#!/usr/bin/env bash # Copyright 2025 The etcd Authors # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. set -euo pipefail if [ "$#" -lt 1 ]; then echo "Usage: $0 VERSION [NO_DOCKER_PUSH]" >&2 exit 1 fi VERSION=${1} if [ -z "$VERSION" ]; then echo "Usage: ${0} VERSION [NO_DOCKER_PUSH]" >&2 exit 1 fi NO_DOCKER_PUSH=${2:-} PLATFORMS=${PLATFORMS:-"linux/amd64,linux/arm64,linux/ppc64le,linux/s390x"} BUILDDIR=${BUILDDIR:-release} mkdir -p "${BUILDDIR}" for platform in $(echo "${PLATFORMS}" | tr ',' ' '); do RELEASE="etcd-${VERSION}-linux-${platform#linux/}" if [ ! -d "${BUILDDIR}/${RELEASE}" ]; then TARFILE="${RELEASE}.tar.gz" TARURL="https://github.com/etcd-io/etcd/releases/download/${VERSION}/${TARFILE}" if ! curl -f -L -o "${BUILDDIR}/${TARFILE}" "${TARURL}" ; then echo "Failed to download ${TARURL}." exit 1 fi tar -C "${BUILDDIR}" -zvxf "${BUILDDIR}/${TARFILE}" fi done tag_args=() if [ -z "${OCI_REGISTRY:-}" ]; then tag_args+=("-t" "gcr.io/etcd-development/etcd:${VERSION}") tag_args+=("-t" "quay.io/coreos/etcd:${VERSION}") else tag_args+=("-t" "${OCI_REGISTRY}/${OCI_PATH:-etcd}:${VERSION}") fi if [ "${NO_DOCKER_PUSH}" == 1 ]; then # Build a single architecture to be tested later. docker build --build-arg="VERSION=${VERSION}" \ --build-arg="BUILDDIR=${BUILDDIR}" \ --build-arg="TARGETARCH=$(go env GOARCH)" \ "${tag_args[@]}" \ . else docker run --privileged --rm tonistiigi/binfmt --install all docker buildx rm --force multiarch-multiplatform-builder || true docker buildx create \ --name multiarch-multiplatform-builder \ --driver docker-container \ --bootstrap --use docker buildx build --build-arg="VERSION=${VERSION}" \ --build-arg="BUILDDIR=${BUILDDIR}" \ --platform="${PLATFORMS}" \ --push \ "${tag_args[@]}" \ . docker buildx stop multiarch-multiplatform-builder fi