From 9dc501f0333e20c1a8d4f2e9201cb1846efd2ea4 Mon Sep 17 00:00:00 2001 From: Vaica <94612053+zqlit@users.noreply.github.com> Date: Mon, 29 Jun 2026 22:53:20 +0800 Subject: [PATCH] Update deploy.yml --- .github/workflows/deploy.yml | 137 +++++++++++------------------------ 1 file changed, 43 insertions(+), 94 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 0a404691..323d4e79 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -225,6 +225,7 @@ jobs: UPYUN_OPERATOR: ${{ secrets.UPYUN_OPERATOR }} UPYUN_PASSWORD: ${{ secrets.UPYUN_PASSWORD }} id: upload + continue-on-error: true run: | echo "📤 上传构建产物到 UpYun..." @@ -239,34 +240,26 @@ jobs: chmod +x "$UPX_BIN" fi - for i in 1 2 3; do - echo "🔐 UpYun 登录 (尝试 $i/3)..." + for i in 1 2 3 4 5; do + echo "🔐 UpYun 登录 (尝试 $i/5)..." if "$UPX_BIN" login "$UPYUN_SERVICE" "$UPYUN_OPERATOR" "$UPYUN_PASSWORD" 2>&1; then echo "✅ 登录成功" break else - echo "⚠️ 登录失败,等待 5 秒后重试..." - sleep 5 + echo "⚠️ 登录失败,等待 10 秒后重试..." + sleep 10 fi done - # 获取上次部署的哈希 - LAST_HASH=$("$UPX_BIN" get /__build_hash 2>/dev/null || echo "") CURRENT_HASH=$(cat public/.build_hash) - echo "上次部署 hash: $LAST_HASH" echo "当前构建 hash: $CURRENT_HASH" - if [ "$CURRENT_HASH" = "$LAST_HASH" ]; then - echo "✅ 构建产物无变化,跳过上传" - echo "skipped=true" >> $GITHUB_OUTPUT - else - echo "🔄 发现变化,开始上传..." - "$UPX_BIN" sync public/ / -w 10 --delete --strong - "$UPX_BIN" put public/.build_hash /__build_hash - echo "✅ 上传完成" - echo "skipped=false" >> $GITHUB_OUTPUT - fi + 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: Push Image Optimizations continue-on-error: true @@ -317,45 +310,6 @@ jobs: id: start-edgeone run: echo "start_time=$(date +%s)" >> $GITHUB_OUTPUT - - name: Get last build hash from UpYun - id: last-hash - env: - UPYUN_SERVICE: ${{ secrets.UPYUN_BUCKET }} - UPYUN_OPERATOR: ${{ secrets.UPYUN_OPERATOR }} - UPYUN_PASSWORD: ${{ secrets.UPYUN_PASSWORD }} - run: | - echo "🔍 从 UpYun 获取上次部署的 hash..." - - UPX_VERSION="0.4.9" - UPX_URL="https://collection.b0.upaiyun.com/softwares/upx/upx_${UPX_VERSION}_linux_amd64.tar.gz" - UPX_BIN="/tmp/upyun-upx" - - if [ ! -x "$UPX_BIN" ]; then - curl -sL "$UPX_URL" -o /tmp/upx.tar.gz - tar -xzf /tmp/upx.tar.gz -C /tmp - mv /tmp/upx "$UPX_BIN" - chmod +x "$UPX_BIN" - fi - - for i in 1 2 3; do - echo "🔐 UpYun 登录 (尝试 $i/3)..." - if "$UPX_BIN" login "$UPYUN_SERVICE" "$UPYUN_OPERATOR" "$UPYUN_PASSWORD" 2>&1; then - echo "✅ 登录成功" - break - else - echo "⚠️ 登录失败,等待 5 秒后重试..." - sleep 5 - fi - done - - LAST_HASH=$("$UPX_BIN" get /__build_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: Checkout code (for scripts) uses: actions/checkout@v4 with: @@ -377,6 +331,19 @@ 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 + 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: | @@ -475,39 +442,28 @@ jobs: id: start-upyun run: echo "start_time=$(date +%s)" >> $GITHUB_OUTPUT - - name: Get last build hash from UpYun - id: last-hash + - name: Setup Python + uses: actions/setup-python@v4 + with: + python-version: '3.x' + + - name: Install coscmd + run: pip install -U coscmd + + - name: Configure coscmd env: - UPYUN_SERVICE: ${{ secrets.UPYUN_BUCKET }} - UPYUN_OPERATOR: ${{ secrets.UPYUN_OPERATOR }} - UPYUN_PASSWORD: ${{ secrets.UPYUN_PASSWORD }} + 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 "🔍 从 UpYun 获取上次部署的 hash..." - - UPX_VERSION="0.4.9" - UPX_URL="https://collection.b0.upaiyun.com/softwares/upx/upx_${UPX_VERSION}_linux_amd64.tar.gz" - UPX_BIN="/tmp/upyun-upx" - - if [ ! -x "$UPX_BIN" ]; then - curl -sL "$UPX_URL" -o /tmp/upx.tar.gz - tar -xzf /tmp/upx.tar.gz -C /tmp - mv /tmp/upx "$UPX_BIN" - chmod +x "$UPX_BIN" - fi - - for i in 1 2 3; do - echo "🔐 UpYun 登录 (尝试 $i/3)..." - if "$UPX_BIN" login "$UPYUN_SERVICE" "$UPYUN_OPERATOR" "$UPYUN_PASSWORD" 2>&1; then - echo "✅ 登录成功" - break - else - echo "⚠️ 登录失败,等待 5 秒后重试..." - sleep 5 - fi - done - - LAST_HASH=$("$UPX_BIN" get /__build_hash 2>/dev/null || echo "") - + 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 @@ -517,15 +473,8 @@ jobs: - 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: | echo "📥 从腾讯云 COS 获取 build_hash..." - pip install -U coscmd - coscmd config -a $COS_SECRET_ID -s $COS_SECRET_KEY -b $COS_BUCKET -r $COS_REGION 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