#!/bin/bash echo ">>> Building images..." source ./hooks/arches.sh if [[ -z "${SOURCE_COMMIT}" ]]; then # This var is typically predefined by Docker Hub, but it won't be # when testing locally. SOURCE_COMMIT="$(git rev-parse HEAD)" fi # Construct a version string in the style of `build.rs`. GIT_EXACT_TAG="$(git describe --tags --abbrev=0 --exact-match 2>/dev/null)" if [[ -n "${GIT_EXACT_TAG}" ]]; then SOURCE_VERSION="${GIT_EXACT_TAG}" else GIT_LAST_TAG="$(git describe --tags --abbrev=0)" SOURCE_VERSION="${GIT_LAST_TAG}-${SOURCE_COMMIT:0:8}" fi LABELS=( # https://github.com/opencontainers/image-spec/blob/master/annotations.md org.opencontainers.image.created="$(date --utc --iso-8601=seconds)" org.opencontainers.image.documentation="https://github.com/dani-garcia/vaultwarden/wiki" org.opencontainers.image.licenses="AGPL-3.0-only" org.opencontainers.image.revision="${SOURCE_COMMIT}" org.opencontainers.image.source="${SOURCE_REPOSITORY_URL}" org.opencontainers.image.url="https://hub.docker.com/r/${DOCKER_REPO#*/}" org.opencontainers.image.version="${SOURCE_VERSION}" ) LABEL_ARGS=() for label in "${LABELS[@]}"; do LABEL_ARGS+=(--label "${label}") done # Check if DOCKER_BUILDKIT is set, if so, use the Dockerfile.buildkit as template if [[ -n "${DOCKER_BUILDKIT}" ]]; then buildkit_suffix=.buildkit fi set -ex for arch in "${arches[@]}"; do docker build \ "${LABEL_ARGS[@]}" \ -t "${DOCKER_REPO}:${DOCKER_TAG}-${arch}" \ -f docker/${arch}/Dockerfile${buildkit_suffix}${distro_suffix} \ . done