Resolve backend Supabase env during deploy

This commit is contained in:
2569718930@qq.com
2026-06-14 07:07:46 +08:00
parent 0f497ab822
commit b1edb1b7e1
2 changed files with 65 additions and 20 deletions
+46 -18
View File
@@ -127,10 +127,54 @@ compose_up_retry() {
return 1
}
read_env_file_value() {
local key="$1"
if [ ! -f ".env" ]; then
return 0
fi
awk -F= -v key="$key" '
$0 ~ "^[[:space:]]*" key "[[:space:]]*=" {
value=$0
sub("^[^=]*=", "", value)
gsub("^[[:space:]]+|[[:space:]]+$", "", value)
gsub(/^["'"'"']|["'"'"']$/, "", value)
print value
}
' .env | tail -n 1
}
resolve_env_value() {
local primary_key="$1"
local fallback_key="${2:-}"
local value="${!primary_key:-}"
if [ -z "$value" ]; then
value="$(read_env_file_value "$primary_key")"
fi
if [ -z "$value" ] && [ -n "$fallback_key" ]; then
value="${!fallback_key:-}"
if [ -z "$value" ]; then
value="$(read_env_file_value "$fallback_key")"
fi
fi
printf '%s' "$value"
}
export IMAGE_TAG="$NEW_TAG"
export POLYWEATHER_API_BASE_URL="${POLYWEATHER_FRONTEND_INTERNAL_API_BASE_URL:-http://polyweather_web:8000}"
export SUPABASE_URL="${SUPABASE_URL:-${NEXT_PUBLIC_SUPABASE_URL:-}}"
export SUPABASE_ANON_KEY="${SUPABASE_ANON_KEY:-${NEXT_PUBLIC_SUPABASE_ANON_KEY:-}}"
resolved_supabase_url="$(resolve_env_value "SUPABASE_URL" "NEXT_PUBLIC_SUPABASE_URL")"
resolved_supabase_anon_key="$(resolve_env_value "SUPABASE_ANON_KEY" "NEXT_PUBLIC_SUPABASE_ANON_KEY")"
if [ -n "$resolved_supabase_url" ]; then
export SUPABASE_URL="$resolved_supabase_url"
else
unset SUPABASE_URL
fi
if [ -n "$resolved_supabase_anon_key" ]; then
export SUPABASE_ANON_KEY="$resolved_supabase_anon_key"
else
unset SUPABASE_ANON_KEY
fi
pull_ok=0
for pull_attempt in $(seq 1 6); do
docker compose pull && pull_ok=1 && break
@@ -248,22 +292,6 @@ wait_for_scan_terminal_snapshot() {
return 1
}
read_env_file_value() {
local key="$1"
if [ ! -f ".env" ]; then
return 0
fi
awk -F= -v key="$key" '
$0 ~ "^[[:space:]]*" key "[[:space:]]*=" {
value=$0
sub("^[^=]*=", "", value)
gsub("^[[:space:]]+|[[:space:]]+$", "", value)
gsub(/^["'"'"']|["'"'"']$/, "", value)
print value
}
' .env | tail -n 1
}
validate_frontend_api_base_url() {
local api_base="${POLYWEATHER_API_BASE_URL:-}"
if [ -z "$api_base" ]; then
+19 -2
View File
@@ -192,6 +192,21 @@ def test_deploy_script_retries_image_pull_for_registry_propagation():
assert "docker compose pull && pull_ok=1 && break" in script
def test_deploy_script_exports_backend_supabase_env_from_env_file():
script = (ROOT / "deploy.sh").read_text(encoding="utf-8")
assert "read_env_file_value()" in script
assert "resolve_env_value()" in script
assert 'resolve_env_value "SUPABASE_URL" "NEXT_PUBLIC_SUPABASE_URL"' in script
assert 'resolve_env_value "SUPABASE_ANON_KEY" "NEXT_PUBLIC_SUPABASE_ANON_KEY"' in script
assert 'export SUPABASE_URL="$resolved_supabase_url"' in script
assert 'export SUPABASE_ANON_KEY="$resolved_supabase_anon_key"' in script
assert "unset SUPABASE_URL" in script
assert "unset SUPABASE_ANON_KEY" in script
assert script.index("read_env_file_value()") < script.index('export IMAGE_TAG="$NEW_TAG"')
assert script.index('resolve_env_value "SUPABASE_URL"') < script.index("pull_ok=0")
def test_deploy_script_syncs_city_thread_ids_into_runtime_volume():
script = (ROOT / "deploy.sh").read_text(encoding="utf-8")
@@ -321,11 +336,13 @@ def test_frontend_and_web_share_supabase_forwarded_identity_secrets():
"POLYWEATHER_BACKEND_ENTITLEMENT_TOKEN: ${POLYWEATHER_BACKEND_ENTITLEMENT_TOKEN}"
in web_block
)
assert 'export SUPABASE_URL="${SUPABASE_URL:-${NEXT_PUBLIC_SUPABASE_URL:-}}"' in script
assert 'resolve_env_value "SUPABASE_URL" "NEXT_PUBLIC_SUPABASE_URL"' in script
assert 'export SUPABASE_URL="$resolved_supabase_url"' in script
assert (
'export SUPABASE_ANON_KEY="${SUPABASE_ANON_KEY:-${NEXT_PUBLIC_SUPABASE_ANON_KEY:-}}"'
'resolve_env_value "SUPABASE_ANON_KEY" "NEXT_PUBLIC_SUPABASE_ANON_KEY"'
in script
)
assert 'export SUPABASE_ANON_KEY="$resolved_supabase_anon_key"' in script
def test_web_container_raises_open_file_limit_for_sse_and_proxy_load():