#!/bin/sh set -eu if ! set -o pipefail 2>/dev/null; then : fi REPO_ROOT="$(cd "$(dirname "$0")/../../.." && pwd)" cd "${REPO_ROOT}" sh ci/scripts/common/ensure_env_version.sh normalize_env_file() { file="$1" tmp="${file}.tmp.$$" tr -d '\r' <"$file" >"$tmp" mv "$tmp" "$file" } load_env_file() { file="$1" while IFS= read -r line || [ -n "$line" ]; do case "$line" in ''|\#*) continue ;; esac key="${line%%=*}" value="${line#*=}" key="$(printf '%s' "$key" | tr -d '[:space:]')" value="${value#"${value%%[![:space:]]*}"}" value="${value%"${value##*[![:space:]]}"}" export "$key=$value" done <"$file" } FX_ENV_NAME="${FX_ENV:-prod}" RUNTIME_ENV_FILE="./ci/${FX_ENV_NAME}/.env.runtime" if [ ! -f "${RUNTIME_ENV_FILE}" ]; then echo "[fx-build] runtime env file not found: ${RUNTIME_ENV_FILE}" >&2 exit 1 fi normalize_env_file "${RUNTIME_ENV_FILE}" normalize_env_file ./.env.version load_env_file "${RUNTIME_ENV_FILE}" load_env_file ./.env.version REGISTRY_URL="${REGISTRY_URL:?missing REGISTRY_URL}" APP_V="${APP_V:?missing APP_V}" FX_DOCKERFILE="${FX_DOCKERFILE:?missing FX_DOCKERFILE}" FX_IMAGE_PATH="${FX_IMAGE_PATH:?missing FX_IMAGE_PATH}" REGISTRY_HOST="${REGISTRY_URL#http://}" REGISTRY_HOST="${REGISTRY_HOST#https://}" REGISTRY_USER="$(cat secrets/REGISTRY_USER)" REGISTRY_PASSWORD="$(cat secrets/REGISTRY_PASSWORD)" : "${REGISTRY_USER:?missing registry user}" : "${REGISTRY_PASSWORD:?missing registry password}" mkdir -p /kaniko/.docker AUTH_B64="$(printf '%s:%s' "$REGISTRY_USER" "$REGISTRY_PASSWORD" | base64 | tr -d '\n')" cat </kaniko/.docker/config.json { "auths": { "https://${REGISTRY_HOST}": { "auth": "${AUTH_B64}" } } } EOF BUILD_CONTEXT="${FX_BUILD_CONTEXT:-${WOODPECKER_WORKSPACE:-${CI_WORKSPACE:-${PWD:-/workspace}}}}" if [ ! -d "${BUILD_CONTEXT}" ]; then BUILD_CONTEXT="/workspace" fi /kaniko/executor \ --context "${BUILD_CONTEXT}" \ --dockerfile "${FX_DOCKERFILE}" \ --destination "${REGISTRY_URL}/${FX_IMAGE_PATH}:${APP_V}" \ --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}" \ --single-snapshot