Update deploy.yml

This commit is contained in:
Vaica committed 2026-06-29 22:53:20 +08:00
1 parent 28ecb667a6
commit 9dc501f033
1 file changed
+43 -94
+43 -94
View File
@@ -225,6 +225,7 @@ jobs:
UPYUN_OPERATOR: ${{ secrets.UPYUN_OPERATOR }} UPYUN_OPERATOR: ${{ secrets.UPYUN_OPERATOR }}
UPYUN_PASSWORD: ${{ secrets.UPYUN_PASSWORD }} UPYUN_PASSWORD: ${{ secrets.UPYUN_PASSWORD }}
id: upload id: upload
continue-on-error: true
run: | run: |
echo "📤 上传构建产物到 UpYun..." echo "📤 上传构建产物到 UpYun..."
@@ -239,34 +240,26 @@ jobs:
chmod +x "$UPX_BIN" chmod +x "$UPX_BIN"
fi fi
for i in 1 2 3; do for i in 1 2 3 4 5; do
echo "🔐 UpYun 登录 (尝试 $i/3)..." echo "🔐 UpYun 登录 (尝试 $i/5)..."
if "$UPX_BIN" login "$UPYUN_SERVICE" "$UPYUN_OPERATOR" "$UPYUN_PASSWORD" 2>&1; then if "$UPX_BIN" login "$UPYUN_SERVICE" "$UPYUN_OPERATOR" "$UPYUN_PASSWORD" 2>&1; then
echo "✅ 登录成功" echo "✅ 登录成功"
break break
else else
echo "⚠️ 登录失败,等待 5 秒后重试..." echo "⚠️ 登录失败,等待 10 秒后重试..."
sleep 5 sleep 10
fi fi
done done
# 获取上次部署的哈希
LAST_HASH=$("$UPX_BIN" get /__build_hash 2>/dev/null || echo "")
CURRENT_HASH=$(cat public/.build_hash) CURRENT_HASH=$(cat public/.build_hash)
echo "上次部署 hash: $LAST_HASH"
echo "当前构建 hash: $CURRENT_HASH" echo "当前构建 hash: $CURRENT_HASH"
if [ "$CURRENT_HASH" = "$LAST_HASH" ]; then echo "🔄 开始上传到 UpYun..."
echo "✅ 构建产物无变化,跳过上传" "$UPX_BIN" sync public/ / -w 10 --delete --strong
echo "skipped=true" >> $GITHUB_OUTPUT "$UPX_BIN" put public/.build_hash /__build_hash
else echo "✅ UpYun 上传完成"
echo "🔄 发现变化,开始上传..." echo "skipped=false" >> $GITHUB_OUTPUT
"$UPX_BIN" sync public/ / -w 10 --delete --strong
"$UPX_BIN" put public/.build_hash /__build_hash
echo "✅ 上传完成"
echo "skipped=false" >> $GITHUB_OUTPUT
fi
- name: Push Image Optimizations - name: Push Image Optimizations
continue-on-error: true continue-on-error: true
@@ -317,45 +310,6 @@ jobs:
id: start-edgeone id: start-edgeone
run: echo "start_time=$(date +%s)" >> $GITHUB_OUTPUT 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) - name: Checkout code (for scripts)
uses: actions/checkout@v4 uses: actions/checkout@v4
with: with:
@@ -377,6 +331,19 @@ jobs:
COS_REGION: ${{ secrets.COS_REGION }} COS_REGION: ${{ secrets.COS_REGION }}
run: coscmd config -a $COS_SECRET_ID -s $COS_SECRET_KEY -b $COS_BUCKET -r $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 - name: Get current hash from COS
id: download id: download
run: | run: |
@@ -475,39 +442,28 @@ jobs:
id: start-upyun id: start-upyun
run: echo "start_time=$(date +%s)" >> $GITHUB_OUTPUT run: echo "start_time=$(date +%s)" >> $GITHUB_OUTPUT
- name: Get last build hash from UpYun - name: Setup Python
id: last-hash uses: actions/setup-python@v4
with:
python-version: '3.x'
- name: Install coscmd
run: pip install -U coscmd
- name: Configure coscmd
env: env:
UPYUN_SERVICE: ${{ secrets.UPYUN_BUCKET }} COS_SECRET_ID: ${{ secrets.COS_SECRET_ID }}
UPYUN_OPERATOR: ${{ secrets.UPYUN_OPERATOR }} COS_SECRET_KEY: ${{ secrets.COS_SECRET_KEY }}
UPYUN_PASSWORD: ${{ secrets.UPYUN_PASSWORD }} 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: | run: |
echo "🔍 从 UpYun 获取上次部署的 hash..." echo "� 从腾讯云 COS 获取上次部署的 hash..."
coscmd download /__build_hash /tmp/last_hash 2>/dev/null || echo ""
UPX_VERSION="0.4.9" LAST_HASH=$(cat /tmp/last_hash 2>/dev/null || echo "")
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 if [ -z "$LAST_HASH" ]; then
echo "⚠️ 没有找到上次部署的 hash(首次部署)" echo "⚠️ 没有找到上次部署的 hash(首次部署)"
else else
@@ -517,15 +473,8 @@ jobs:
- name: Get current hash from COS - name: Get current hash from COS
id: download 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: | run: |
echo "📥 从腾讯云 COS 获取 build_hash..." 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 "" coscmd download /__build_hash /tmp/current_hash 2>/dev/null || echo ""
CURRENT_HASH=$(cat /tmp/current_hash 2>/dev/null || echo "") CURRENT_HASH=$(cat /tmp/current_hash 2>/dev/null || echo "")
echo "current_hash=${CURRENT_HASH}" >> $GITHUB_OUTPUT echo "current_hash=${CURRENT_HASH}" >> $GITHUB_OUTPUT