53 lines
1.7 KiB
Bash
53 lines
1.7 KiB
Bash
#!/bin/sh
|
|
set -eu
|
|
|
|
if ! set -o pipefail 2>/dev/null; then
|
|
:
|
|
fi
|
|
|
|
REGISTRY_HOST="${REGISTRY_HOST:?missing REGISTRY_HOST}"
|
|
REGISTRY_USER="${REGISTRY_USER:?missing REGISTRY_USER}"
|
|
REGISTRY_PASSWORD="${REGISTRY_PASSWORD:?missing REGISTRY_PASSWORD}"
|
|
BUILD_CONTEXT="${BUILD_CONTEXT:?missing BUILD_CONTEXT}"
|
|
IMAGE_DOCKERFILE="${IMAGE_DOCKERFILE:?missing IMAGE_DOCKERFILE}"
|
|
IMAGE_DESTINATION="${IMAGE_DESTINATION:?missing IMAGE_DESTINATION}"
|
|
APP_V="${APP_V:?missing APP_V}"
|
|
GIT_REV="${GIT_REV:?missing GIT_REV}"
|
|
BUILD_BRANCH="${BUILD_BRANCH:?missing BUILD_BRANCH}"
|
|
BUILD_DATE="${BUILD_DATE:?missing BUILD_DATE}"
|
|
BUILD_USER="${BUILD_USER:?missing BUILD_USER}"
|
|
|
|
BUILD_PLATFORM="${BUILD_PLATFORM:-linux/amd64}"
|
|
BUILDER_NAME="${BUILDER_NAME:-sendico-cross-builder}"
|
|
|
|
if [ ! -S /var/run/docker.sock ]; then
|
|
echo "[buildx] docker socket not found at /var/run/docker.sock" >&2
|
|
exit 69
|
|
fi
|
|
|
|
printf '%s' "${REGISTRY_PASSWORD}" | docker login "${REGISTRY_HOST}" --username "${REGISTRY_USER}" --password-stdin
|
|
|
|
docker run --rm --privileged tonistiigi/binfmt --install amd64
|
|
|
|
if docker buildx inspect "${BUILDER_NAME}" >/dev/null 2>&1; then
|
|
docker buildx use "${BUILDER_NAME}"
|
|
else
|
|
docker buildx create --name "${BUILDER_NAME}" --driver docker-container --use
|
|
fi
|
|
|
|
docker buildx inspect --bootstrap >/dev/null
|
|
|
|
docker buildx build \
|
|
--platform "${BUILD_PLATFORM}" \
|
|
--file "${IMAGE_DOCKERFILE}" \
|
|
--tag "${IMAGE_DESTINATION}" \
|
|
--build-arg APP_VERSION="${APP_V}" \
|
|
--build-arg GIT_REV="${GIT_REV}" \
|
|
--build-arg BUILD_BRANCH="${BUILD_BRANCH}" \
|
|
--build-arg BUILD_DATE="${BUILD_DATE}" \
|
|
--build-arg BUILD_USER="${BUILD_USER}" \
|
|
--provenance=false \
|
|
--pull \
|
|
--push \
|
|
"${BUILD_CONTEXT}"
|