fix: preserve local env overrides in shell pipelines
Some checks failed
CI / go-test (push) Has been cancelled
CI / scripts-regression (push) Has been cancelled
CI / frontend-build (push) Has been cancelled
CI / docker-build (push) Has been cancelled

This commit is contained in:
phamnazage-jpg
2026-05-30 16:38:38 +08:00
parent 9ff023dab4
commit 98b9203302
13 changed files with 402 additions and 97 deletions

25
scripts/env_precedence_test.sh Executable file
View File

@@ -0,0 +1,25 @@
#!/usr/bin/env bash
set -euo pipefail
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
cd "$ROOT_DIR"
TMP_DIR="$(mktemp -d)"
trap 'rm -rf "$TMP_DIR"' EXIT
cat > "$TMP_DIR/.env.local" <<'EOF'
LOCAL_ALPHA=test-placeholder-value
LOCAL_BETA=real-db
EOF
cat > "$TMP_DIR/.env" <<'EOF'
LOCAL_ALPHA=
LOCAL_BETA=
EOF
unset LOCAL_ALPHA LOCAL_BETA || true
while IFS= read -r kv; do export "$kv"; done < <(scripts/load_project_env.sh "$TMP_DIR/.env.local")
while IFS= read -r kv; do key="${kv%%=*}"; [[ -n "$key" && -n "${!key:-}" ]] && continue; export "$kv"; done < <(scripts/load_project_env.sh "$TMP_DIR/.env")
[[ "$LOCAL_ALPHA" == "test-placeholder-value" ]]
[[ "$LOCAL_BETA" == "real-db" ]]