diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 35ee9dc3..0a0090c4 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -258,6 +258,13 @@ jobs: echo "📤 更新 hash 文件到腾讯云 COS..." coscmd upload public/.build_hash /__build_hash + - name: Cache upx + uses: actions/cache@v4 + id: upx-cache + with: + path: /tmp/upyun-upx + key: upx-0.4.9 + - name: Upload to UpYun if: steps.check-upload.outputs.need_upload == 'true' env: @@ -372,12 +379,15 @@ jobs: COS_REGION: ${{ secrets.COS_REGION }} run: coscmd config -a $COS_SECRET_ID -s $COS_SECRET_KEY -b $COS_BUCKET -r $COS_REGION - - name: Get last build hash from COS - id: last-hash + - name: Get build hash from COS (public URL) + id: hash + env: + COS_BUCKET: ${{ secrets.COS_BUCKET }} + COS_REGION: ${{ secrets.COS_REGION }} run: | + COS_URL="https://${COS_BUCKET}.cos.${COS_REGION}.myqcloud.com/__build_hash" echo "🔍 从腾讯云 COS 获取上次部署的 hash..." - coscmd download /__build_hash /tmp/last_hash 2>/dev/null || echo "" - LAST_HASH=$(cat /tmp/last_hash 2>/dev/null || echo "") + LAST_HASH=$(curl -sL "$COS_URL" 2>/dev/null || echo "") if [ -z "$LAST_HASH" ]; then echo "⚠️ 没有找到上次部署的 hash(首次部署)" else @@ -385,20 +395,11 @@ jobs: fi echo "last_hash=${LAST_HASH}" >> $GITHUB_OUTPUT - - name: Get current hash from COS - id: download - run: | - echo "📥 从腾讯云 COS 获取 build_hash..." - coscmd download /__build_hash /tmp/current_hash 2>/dev/null || echo "" - - CURRENT_HASH=$(cat /tmp/current_hash 2>/dev/null || echo "") - echo "current_hash=${CURRENT_HASH}" >> $GITHUB_OUTPUT - - name: Check if deployment is needed id: check run: | - CURRENT_HASH="${{ steps.download.outputs.current_hash }}" - LAST_HASH="${{ steps.last-hash.outputs.last_hash }}" + CURRENT_HASH="${{ needs.build.outputs.build_hash }}" + LAST_HASH="${{ steps.hash.outputs.last_hash }}" echo "当前 build_hash: $CURRENT_HASH" echo "上次部署 hash: $LAST_HASH" @@ -483,48 +484,23 @@ jobs: id: start-upyun run: echo "start_time=$(date +%s)" >> $GITHUB_OUTPUT - - 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 build hash from COS (public URL) + id: hash 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 last build hash from COS - id: last-hash 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: Get current hash from COS - id: download - run: | - echo "📥 从腾讯云 COS 获取 build_hash..." - coscmd download /__build_hash /tmp/current_hash 2>/dev/null || echo "" - CURRENT_HASH=$(cat /tmp/current_hash 2>/dev/null || echo "") + COS_URL="https://${COS_BUCKET}.cos.${COS_REGION}.myqcloud.com/__build_hash" + echo "🔍 从腾讯云 COS 获取 hash..." + CURRENT_HASH=$(curl -sL "$COS_URL" 2>/dev/null || echo "") + echo "当前 build_hash: $CURRENT_HASH" echo "current_hash=${CURRENT_HASH}" >> $GITHUB_OUTPUT - name: Check if deployment is needed id: check run: | - CURRENT_HASH="${{ steps.download.outputs.current_hash }}" - LAST_HASH="${{ steps.last-hash.outputs.last_hash }}" + CURRENT_HASH="${{ steps.hash.outputs.current_hash }}" + LAST_HASH="${{ needs.build.outputs.build_hash }}" echo "当前 build_hash: $CURRENT_HASH" echo "上次部署 hash: $LAST_HASH"