From 57de208914de76c3523448dc188c736d06d98ddb Mon Sep 17 00:00:00 2001 From: Vaica <94612053+zqlit@users.noreply.github.com> Date: Mon, 29 Jun 2026 22:26:59 +0800 Subject: [PATCH] Update deploy.yml --- .github/workflows/deploy.yml | 56 ++++++++++++------------------------ 1 file changed, 18 insertions(+), 38 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 3244ba14..6348e414 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -214,7 +214,9 @@ jobs: - name: Upload to Tencent COS continue-on-error: true run: | - coscmd upload -rs public/ / + echo "📤 打包并上传到腾讯云 COS..." + tar -czf public.tar.gz public/ + coscmd upload public.tar.gz /public.tar.gz coscmd upload public/.build_hash /__build_hash - name: Upload to UpYun and check hash @@ -298,8 +300,8 @@ jobs: outputs: deployed: ${{ steps.check.outputs.deployed }} duration: ${{ steps.end-edgeone.outputs.duration }} - download_duration: ${{ steps.end-edgeone.outputs.download_duration }} - upload_duration: ${{ steps.end-edgeone.outputs.upload_duration }} + download_duration: ${{ steps.download-files.outputs.download_duration }} + upload_duration: ${{ steps.end-edgeone-upload.outputs.duration }} steps: - name: Start timing @@ -361,11 +363,7 @@ jobs: id: download run: | echo "📥 从腾讯云 COS 获取 build_hash..." - DOWNLOAD_START=$(date +%s) coscmd get /__build_hash /tmp/current_hash 2>/dev/null || echo "" - DOWNLOAD_END=$(date +%s) - DOWNLOAD_DURATION=$((DOWNLOAD_END - DOWNLOAD_START)) - echo "download_duration=${DOWNLOAD_DURATION}" >> $GITHUB_OUTPUT CURRENT_HASH=$(cat /tmp/current_hash 2>/dev/null || echo "") echo "current_hash=${CURRENT_HASH}" >> $GITHUB_OUTPUT @@ -392,8 +390,12 @@ jobs: id: download-files run: | echo "📥 从腾讯云 COS 下载构建产物..." - mkdir -p public - coscmd download -rs / public/ + DOWNLOAD_START=$(date +%s) + coscmd get /public.tar.gz /tmp/public.tar.gz + tar -xzf /tmp/public.tar.gz + DOWNLOAD_END=$(date +%s) + DOWNLOAD_DURATION=$((DOWNLOAD_END - DOWNLOAD_START)) + echo "download_duration=${DOWNLOAD_DURATION}" >> $GITHUB_OUTPUT - name: Start upload timing if: steps.check.outputs.deployed == 'true' @@ -442,15 +444,13 @@ jobs: # ============================================================ deploy-upyun: runs-on: ubuntu-latest - timeout-minutes: 20 + timeout-minutes: 5 permissions: contents: read needs: build outputs: deployed: ${{ steps.check.outputs.deployed }} duration: ${{ steps.end-upyun.outputs.duration }} - download_duration: ${{ steps.end-upyun.outputs.download_duration }} - upload_duration: ${{ steps.end-upyun.outputs.upload_duration }} steps: - name: Start timing @@ -480,6 +480,7 @@ jobs: "$UPX_BIN" login "$UPYUN_SERVICE" "$UPYUN_OPERATOR" "$UPYUN_PASSWORD" LAST_HASH=$("$UPX_BIN" get /__build_hash 2>/dev/null || echo "") + if [ -z "$LAST_HASH" ]; then echo "⚠️ 没有找到上次部署的 hash(首次部署)" else @@ -487,37 +488,18 @@ jobs: fi echo "last_hash=${LAST_HASH}" >> $GITHUB_OUTPUT - - name: Checkout code (for scripts) - uses: actions/checkout@v4 - with: - fetch-depth: 1 - - - name: Setup Python - uses: actions/setup-python@v4 - with: - python-version: '3.x' - - - name: Install coscmd - run: pip install -U coscmd - - - name: Configure coscmd + - name: Get current hash from COS + id: download env: COS_SECRET_ID: ${{ secrets.COS_SECRET_ID }} COS_SECRET_KEY: ${{ secrets.COS_SECRET_KEY }} COS_BUCKET: ${{ secrets.COS_BUCKET }} COS_REGION: ${{ secrets.COS_REGION }} - run: coscmd config -a $COS_SECRET_ID -s $COS_SECRET_KEY -b $COS_BUCKET -r $COS_REGION - - - name: Get hash from Tencent COS - id: download run: | echo "📥 从腾讯云 COS 获取 build_hash..." - DOWNLOAD_START=$(date +%s) + pip install -U coscmd + coscmd config -a $COS_SECRET_ID -s $COS_SECRET_KEY -b $COS_BUCKET -r $COS_REGION coscmd get /__build_hash /tmp/current_hash 2>/dev/null || echo "" - DOWNLOAD_END=$(date +%s) - DOWNLOAD_DURATION=$((DOWNLOAD_END - DOWNLOAD_START)) - echo "download_duration=${DOWNLOAD_DURATION}" >> $GITHUB_OUTPUT - CURRENT_HASH=$(cat /tmp/current_hash 2>/dev/null || echo "") echo "current_hash=${CURRENT_HASH}" >> $GITHUB_OUTPUT @@ -809,12 +791,10 @@ jobs: 🏗️ Build: ${{ needs.build.outputs.duration }}s 🌐 EdgeOne Pages: ${{ needs.deploy-edgeone.outputs.duration }}s - 📥 下载 Artifact: ${{ needs.deploy-edgeone.outputs.download_duration }}s + 📥 下载 COS: ${{ needs.deploy-edgeone.outputs.download_duration }}s 📤 上传部署: ${{ needs.deploy-edgeone.outputs.upload_duration }}s ☁️ UpYun: ${{ needs.deploy-upyun.outputs.duration }}s - 📥 下载 Artifact: ${{ needs.deploy-upyun.outputs.download_duration }}s - 📤 上传部署: ${{ needs.deploy-upyun.outputs.upload_duration }}s 📌 部署状态 ──────────────────────────────────