#!/bin/bash # ===================================================================== # publish-viewer.sh — u-ppt 查看器一键发布 # 流程: 构建 → 全量上传七牛 bucket → 可达性核对 → CDN 缓存刷新 # 用法: bash scripts/publish-viewer.sh [--check-only] # 配套技能: publish-uppt-viewer (踩坑记录见技能文档) # ===================================================================== set -e PROJECT="/e/wk-lab/u-ppt" BUCKET="u-res" CDN="https://img.1216.top" cd "$PROJECT" if [ "$1" != "--check-only" ]; then echo "== [1/4] 类型检查 + 构建 ==" npx vue-tsc -b || { echo "vue-tsc 失败,中止"; exit 1; } npm run build || { echo "构建失败,中止"; exit 1; } cd dist echo "== [2/4] 全量上传 (viewer.html + assets/*) ==" qshell rput "$BUCKET" viewer.html viewer.html --overwrite > /dev/null 2>&1 || echo "上传 viewer.html 失败" for f in $(ls assets/); do qshell rput "$BUCKET" "assets/$f" "assets/$f" --overwrite > /dev/null 2>&1 || echo "上传 assets/$f 失败" done else cd dist echo "== check-only: 跳过构建上传 ==" fi echo "== [3/4] 可达性核对 ==" FAIL=0 for f in viewer.html $(ls assets/ | sed 's|^|assets/|'); do code=$(curl -s -o /dev/null -w "%{http_code}" "$CDN/$f") if [ "$code" != "200" ]; then echo "FAIL $code $f"; FAIL=1; fi done [ "$FAIL" = "0" ] && echo "ALL-200" echo "== [4/4] 刷新 CDN 缓存 ==" echo "$CDN/viewer.html" > /tmp/uppt-refresh.txt echo "$CDN/index.html" >> /tmp/uppt-refresh.txt qshell cdnrefresh -i /tmp/uppt-refresh.txt 2>&1 | grep -o "Code: [0-9]*" echo "== 完成: $CDN/viewer.html =="