|
45 | 45 | runs-on: ubuntu-latest |
46 | 46 | steps: |
47 | 47 | - name: Run backfill on server via SSH |
| 48 | + id: ssh_backfill |
48 | 49 | uses: appleboy/ssh-action@v1.2.0 |
49 | 50 | with: |
50 | 51 | host: ${{ secrets.SERVER_HOST }} |
@@ -97,11 +98,24 @@ jobs: |
97 | 98 | # 生成的 JSON 内容是"本轮快照"而非"DB 累计值",覆盖 commit 回仓 |
98 | 99 | # 会把累计呈现变成单次快照——**视觉上像数据丢了**但 DB 没动。 |
99 | 100 | # 直接 fail 不给它走降级路径。 |
| 101 | + # |
| 102 | + # DATABASE_URL 合并策略: |
| 103 | + # .env 文件里可能只有分量(PGHOST/PGUSER/PGPASSWORD/PGDATABASE/PGPORT), |
| 104 | + # 不一定有合并好的 DATABASE_URL(Prisma 格式)。 |
| 105 | + # 优先用 .env 里的 DATABASE_URL;缺失时从分量动态拼出来。 |
| 106 | + # 分量都在 .env 里,所以 source 之后两种路径都能走。 |
100 | 107 | # ============================================================ |
101 | 108 | set -a && . ./.env && set +a |
102 | 109 | 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 |
105 | 119 | fi |
106 | 120 | if [[ -z "${GITHUB_TOKEN:-}" ]]; then |
107 | 121 | echo "::warning::GITHUB_TOKEN 未配置,GitHub API rate limit 60/h 会打爆" |
@@ -156,3 +170,16 @@ jobs: |
156 | 170 | else |
157 | 171 | echo "No metadata changes to commit." |
158 | 172 | 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