Skip to content

Commit 702f3b5

Browse files
fix(ci): sync-uuid 补 DATABASE_URL 分量拼接 + 加失败告警
根因:frontend .env 只存 PG 分量(PGHOST/PGUSER/PGPASSWORD/PGDATABASE), 没有 Prisma 格式的 DATABASE_URL 合并字符串,导致 step 1 检查拒绝运行。 修复:source .env 后,若 DATABASE_URL 为空则从 PG 分量动态拼出 postgresql://user:password@host:port/database 格式,Prisma 直接可用。 同时加 Notify on failure step(if: failure()):失败时在 Actions summary 打印醒目错误,避免静默 rot——此前两轮失败因无告警而被遗漏直到人工检查。
1 parent a4199db commit 702f3b5

1 file changed

Lines changed: 29 additions & 2 deletions

File tree

.github/workflows/sync-uuid.yml

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ jobs:
4545
runs-on: ubuntu-latest
4646
steps:
4747
- name: Run backfill on server via SSH
48+
id: ssh_backfill
4849
uses: appleboy/ssh-action@v1.2.0
4950
with:
5051
host: ${{ secrets.SERVER_HOST }}
@@ -97,11 +98,24 @@ jobs:
9798
# 生成的 JSON 内容是"本轮快照"而非"DB 累计值",覆盖 commit 回仓
9899
# 会把累计呈现变成单次快照——**视觉上像数据丢了**但 DB 没动。
99100
# 直接 fail 不给它走降级路径。
101+
#
102+
# DATABASE_URL 合并策略:
103+
# .env 文件里可能只有分量(PGHOST/PGUSER/PGPASSWORD/PGDATABASE/PGPORT),
104+
# 不一定有合并好的 DATABASE_URL(Prisma 格式)。
105+
# 优先用 .env 里的 DATABASE_URL;缺失时从分量动态拼出来。
106+
# 分量都在 .env 里,所以 source 之后两种路径都能走。
100107
# ============================================================
101108
set -a && . ./.env && set +a
102109
if [[ -z "${DATABASE_URL:-}" ]]; then
103-
echo "::error::DATABASE_URL 未配置,拒绝运行以免 JSON 降级成本轮快照"
104-
exit 1
110+
# 从 PG 分量拼 Prisma connection string
111+
# 格式:postgresql://user:password@host:port/database?sslmode=disable
112+
if [[ -n "${PGUSER:-}" && -n "${PGPASSWORD:-}" && -n "${PGHOST:-}" && -n "${PGDATABASE:-}" ]]; then
113+
export DATABASE_URL="postgresql://${PGUSER}:${PGPASSWORD}@${PGHOST}:${PGPORT:-5432}/${PGDATABASE}?sslmode=${PGSSLMODE:-disable}"
114+
echo "DATABASE_URL 从 PG 分量拼出:postgresql://${PGUSER}:***@${PGHOST}:${PGPORT:-5432}/${PGDATABASE}"
115+
else
116+
echo "::error::DATABASE_URL 未配置,且 PG 分量(PGUSER/PGPASSWORD/PGHOST/PGDATABASE)不完整,拒绝运行"
117+
exit 1
118+
fi
105119
fi
106120
if [[ -z "${GITHUB_TOKEN:-}" ]]; then
107121
echo "::warning::GITHUB_TOKEN 未配置,GitHub API rate limit 60/h 会打爆"
@@ -156,3 +170,16 @@ jobs:
156170
else
157171
echo "No metadata changes to commit."
158172
fi
173+
174+
# 失败时在 Actions summary 里打印醒目错误,避免静默 rot。
175+
# 此前两轮失败都因为没有失败告警而被遗漏直到人工检查。
176+
- name: Notify on failure
177+
if: failure()
178+
run: |
179+
echo "::error title=Docs Backfill 失败::sync-uuid workflow 在 ${{ github.sha }} 上失败。"
180+
echo "::error::DB 自本次 push 起将不再同步,doc_paths / path_current 将漂移。"
181+
echo "::error::请检查 Actions 日志,修复后手动触发 workflow_dispatch 补跑。"
182+
echo ""
183+
echo "触发 commit:${{ github.sha }}"
184+
echo "触发分支:${{ github.ref_name }}"
185+
echo "触发 actor:${{ github.actor }}"

0 commit comments

Comments
 (0)