Files
u-ppt/scripts/publish-viewer.sh
T

45 lines
1.6 KiB
Bash

#!/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 =="