From 0835a430e8f28d577beb58fd09d051079268dfcd Mon Sep 17 00:00:00 2001 From: Vaica <94612053+zqlit@users.noreply.github.com> Date: Thu, 25 Jun 2026 00:30:25 +0800 Subject: [PATCH] 0030 --- .github/workflows/deploy.yml | 47 +++++++++++++++++++++++++----- scripts/deploy_upyun_with_check.sh | 34 +++++++++++++++++++++ 2 files changed, 74 insertions(+), 7 deletions(-) create mode 100644 scripts/deploy_upyun_with_check.sh diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 52e47d7b..39183635 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -413,13 +413,41 @@ jobs: path: public/ - name: Deploy to UpYun - uses: her-cat/upyun-deployer@v1.0.3 - with: - bucket: ${{ secrets.UPYUN_BUCKET }} - operator: ${{ secrets.UPYUN_OPERATOR }} - password: ${{ secrets.UPYUN_PASSWORD }} - dir: 'public' - publish_dir: '/' + id: deploy-upyun + run: | + echo "🚀 开始 UpYun 部署..." + OUTPUT_FILE="/tmp/upyun_output.txt" + + # 运行 upyun-deployer + upyun-deployer \ + -bucket "${{ secrets.UPYUN_BUCKET }}" \ + -operator "${{ secrets.UPYUN_OPERATOR }}" \ + -password "${{ secrets.UPYUN_PASSWORD }}" \ + -local_dir "./public" \ + -publish_dir "/" 2>&1 | tee "$OUTPUT_FILE" + + # 检测完成信号 + if grep -q "done! consumed:" "$OUTPUT_FILE"; then + echo "✅ UpYun 部署完成" + + # 提取统计信息 + STATS=$(grep "exists:" "$OUTPUT_FILE") + echo "📊 统计: $STATS" + + # 统计 cached/refreshed/uploaded 数量 + CACHED=$(grep -c "cached!" "$OUTPUT_FILE" || true) + REFRESHED=$(grep -c "refreshed!" "$OUTPUT_FILE" || true) + UPLOADED=$(grep -c "uploaded!" "$OUTPUT_FILE" || true) + + echo "cached=${CACHED}" >> $GITHUB_OUTPUT + echo "refreshed=${REFRESHED}" >> $GITHUB_OUTPUT + echo "uploaded=${UPLOADED}" >> $GITHUB_OUTPUT + echo "success=true" >> $GITHUB_OUTPUT + else + echo "❌ 部署未完成或被中断" + echo "success=false" >> $GITHUB_OUTPUT + exit 1 + fi - name: End timing id: end-upyun @@ -429,6 +457,11 @@ jobs: duration=$((end_time - start_time)) echo "duration=${duration}" >> $GITHUB_OUTPUT echo "## ⏱️ Deploy UpYun 耗时: ${duration}秒" >> $GITHUB_STEP_SUMMARY + echo "" >> $GITHUB_STEP_SUMMARY + echo "### 📊 部署详情" >> $GITHUB_STEP_SUMMARY + echo "- ✅ Cached (跳过): ${{ steps.deploy-upyun.outputs.cached }}" >> $GITHUB_STEP_SUMMARY + echo "- 🔄 Refreshed (更新): ${{ steps.deploy-upyun.outputs.refreshed }}" >> $GITHUB_STEP_SUMMARY + echo "- ⬆️ Uploaded (新增): ${{ steps.deploy-upyun.outputs.uploaded }}" >> $GITHUB_STEP_SUMMARY # ============================================================ # Job 5: CDN Refresh & Notifications (在所有部署完成后) diff --git a/scripts/deploy_upyun_with_check.sh b/scripts/deploy_upyun_with_check.sh new file mode 100644 index 00000000..47550c8e --- /dev/null +++ b/scripts/deploy_upyun_with_check.sh @@ -0,0 +1,34 @@ +#!/bin/bash +# UpYun 部署完成检测脚本 + +set -e + +echo "🚀 开始 UpYun 部署..." +START_TIME=$(date +%s) + +# 运行 upyun-deployer 并捕获输出 +OUTPUT_FILE="/tmp/upyun_output.txt" +her-cat/upyun-deployer@v1.0.3 2>&1 | tee "$OUTPUT_FILE" + +# 检测完成信号 +if grep -q "done! consumed:" "$OUTPUT_FILE"; then + END_TIME=$(date +%s) + DURATION=$((END_TIME - START_TIME)) + + echo "" + echo "✅ UpYun 部署完成!" + echo "⏱️ 总耗时: ${DURATION}秒" + + # 提取统计信息 + STATS=$(grep "exists:" "$OUTPUT_FILE") + echo "📊 统计: $STATS" + + # 检查是否有失败 + if grep -q "failed" "$OUTPUT_FILE"; then + echo "⚠️ 有文件上传失败,请检查日志" + exit 1 + fi +else + echo "❌ 部署未完成或被中断" + exit 1 +fi