fix: load ACR config from env file

This commit is contained in:
2026-03-01 14:47:21 +08:00
parent f91c7c1971
commit a7b98d0752

View File

@@ -3,16 +3,76 @@ set -euo pipefail
script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
require() {
local name="$1"
if [[ -z "${!name:-}" ]]; then
echo "Missing env: ${name}" >&2
exit 2
fi
load_env_file() {
local file="$1"
[[ -f "$file" ]] || return 0
while IFS= read -r line || [[ -n "$line" ]]; do
line="${line#${line%%[![:space:]]*}}"
line="${line%${line##*[![:space:]]}}"
[[ -z "$line" ]] && continue
[[ "$line" == \#* ]] && continue
[[ "$line" != *=* ]] && continue
local key="${line%%=*}"
local val="${line#*=}"
key="${key#${key%%[![:space:]]*}}"
key="${key%${key##*[![:space:]]}}"
[[ "$key" =~ ^[A-Za-z_][A-Za-z0-9_]*$ ]] || continue
if [[ "$val" =~ ^\".*\"$ ]]; then
val="${val:1:${#val}-2}"
elif [[ "$val" =~ ^\'.*\'$ ]]; then
val="${val:1:${#val}-2}"
fi
if [[ -z "${!key:-}" ]]; then
export "$key=$val"
fi
done < "$file"
}
require ACR_REGISTRY
require ACR_NAMESPACE
usage() {
cat <<'EOF' >&2
Usage:
ACR_REGISTRY=... ACR_NAMESPACE=... [ACR_USERNAME=... ACR_PASSWORD=...] bash build-push-acr.sh
Required:
ACR_REGISTRY e.g. registry.cn-hangzhou.aliyuncs.com OR <instance>-registry.<region>.cr.aliyuncs.com
ACR_NAMESPACE your namespace
Optional:
ENV_FILE env file to load (default: ../deploy/.env if exists)
IMAGE_REPO default: digital-archive-frontend
IMAGE_TAG default: git sha or timestamp
PKG_MANAGER pnpm|npm (build-arg)
NPM_REGISTRY custom npm registry (build-arg)
ACR_USERNAME / ACR_PASSWORD if set, script will docker login before pushing
Compatibility:
REPO_URL -> ACR_REGISTRY
NAMESPACE -> ACR_NAMESPACE
EOF
}
if [[ -n "${ENV_FILE:-}" ]]; then
load_env_file "$ENV_FILE"
else
load_env_file "$script_dir/../deploy/.env"
fi
if [[ -z "${ACR_REGISTRY:-}" && -n "${REPO_URL:-}" ]]; then
export ACR_REGISTRY="$REPO_URL"
fi
if [[ -z "${ACR_NAMESPACE:-}" && -n "${NAMESPACE:-}" ]]; then
export ACR_NAMESPACE="$NAMESPACE"
fi
if [[ -z "${ACR_REGISTRY:-}" || -z "${ACR_NAMESPACE:-}" ]]; then
echo "Missing required env: ACR_REGISTRY and/or ACR_NAMESPACE" >&2
usage
exit 2
fi
image_repo="${IMAGE_REPO:-digital-archive-frontend}"
image_tag="${IMAGE_TAG:-}"