From 57932807120b5ab5a491293ef87bd2197a4bc0b9 Mon Sep 17 00:00:00 2001 From: Vaica <94612053+zqlit@users.noreply.github.com> Date: Mon, 29 Jun 2026 23:08:00 +0800 Subject: [PATCH] Update deploy.yml --- .github/workflows/deploy.yml | 53 ++++++++++++++++++++++++++++++++---- 1 file changed, 47 insertions(+), 6 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 323d4e79..35ee9dc3 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -115,7 +115,8 @@ jobs: duration: ${{ steps.end-build.outputs.duration }} file_count: ${{ steps.stats.outputs.file_count }} total_size: ${{ steps.stats.outputs.total_size }} - skipped: ${{ steps.upload.outputs.skipped }} + skipped: ${{ steps.upload.outputs.skipped || steps.set-skipped.outputs.skipped }} + need_upload: ${{ steps.check-upload.outputs.need_upload }} needs: pre-check if: needs.pre-check.outputs.can_deploy == 'true' @@ -211,7 +212,39 @@ jobs: COS_REGION: ${{ secrets.COS_REGION }} run: coscmd config -a $COS_SECRET_ID -s $COS_SECRET_KEY -b $COS_BUCKET -r $COS_REGION -m 30 + - name: Get last build hash from COS + id: last-hash + continue-on-error: true + run: | + echo "🔍 从腾讯云 COS 获取上次部署的 hash..." + coscmd download /__build_hash /tmp/last_hash 2>/dev/null || echo "" + LAST_HASH=$(cat /tmp/last_hash 2>/dev/null || echo "") + if [ -z "$LAST_HASH" ]; then + echo "⚠️ 没有找到上次部署的 hash(首次部署)" + else + echo "上次部署 hash: $LAST_HASH" + fi + echo "last_hash=${LAST_HASH}" >> $GITHUB_OUTPUT + + - name: Check if upload is needed + id: check-upload + run: | + LAST_HASH="${{ steps.last-hash.outputs.last_hash }}" + CURRENT_HASH="${{ steps.hash.outputs.build_hash }}" + + echo "上次部署 hash: $LAST_HASH" + echo "当前构建 hash: $CURRENT_HASH" + + if [ -z "$LAST_HASH" ] || [ "$CURRENT_HASH" != "$LAST_HASH" ]; then + echo "🔄 构建产物有变化,需要上传" + echo "need_upload=true" >> $GITHUB_OUTPUT + else + echo "✅ 构建产物无变化,跳过上传" + echo "need_upload=false" >> $GITHUB_OUTPUT + fi + - name: Upload to Tencent COS + if: steps.check-upload.outputs.need_upload == 'true' continue-on-error: true run: | echo "📤 打包并上传到腾讯云 COS..." @@ -219,7 +252,14 @@ jobs: coscmd upload public.tar.gz /public.tar.gz coscmd upload public/.build_hash /__build_hash - - name: Upload to UpYun and check hash + - name: Upload hash to COS (even if skipped) + if: steps.check-upload.outputs.need_upload == 'false' + run: | + echo "📤 更新 hash 文件到腾讯云 COS..." + coscmd upload public/.build_hash /__build_hash + + - name: Upload to UpYun + if: steps.check-upload.outputs.need_upload == 'true' env: UPYUN_SERVICE: ${{ secrets.UPYUN_BUCKET }} UPYUN_OPERATOR: ${{ secrets.UPYUN_OPERATOR }} @@ -251,16 +291,17 @@ jobs: fi done - CURRENT_HASH=$(cat public/.build_hash) - - echo "当前构建 hash: $CURRENT_HASH" - echo "🔄 开始上传到 UpYun..." "$UPX_BIN" sync public/ / -w 10 --delete --strong "$UPX_BIN" put public/.build_hash /__build_hash echo "✅ UpYun 上传完成" echo "skipped=false" >> $GITHUB_OUTPUT + - name: Set skipped status + if: steps.check-upload.outputs.need_upload == 'false' + id: set-skipped + run: echo "skipped=true" >> $GITHUB_OUTPUT + - name: Push Image Optimizations continue-on-error: true run: |