1317
This commit is contained in:
1 parent
fba85464a0
commit
c8470cf603
2 files changed
+204
-23
No files matched your search
+204
-23
@@ -100,7 +100,8 @@ jobs:
|
|||||||
needs: pre-check
|
needs: pre-check
|
||||||
if: |
|
if: |
|
||||||
needs.pre-check.outputs.can_deploy == 'true' &&
|
needs.pre-check.outputs.can_deploy == 'true' &&
|
||||||
inputs.skip_font_subset != 'true'
|
inputs.skip_font_subset != 'true' &&
|
||||||
|
(github.event_name == 'schedule' || github.event_name == 'workflow_dispatch')
|
||||||
outputs:
|
outputs:
|
||||||
font_updated: ${{ steps.update.outputs.font_updated }}
|
font_updated: ${{ steps.update.outputs.font_updated }}
|
||||||
char_count: ${{ steps.stats.outputs.char_count }}
|
char_count: ${{ steps.stats.outputs.char_count }}
|
||||||
@@ -326,6 +327,7 @@ jobs:
|
|||||||
name: hugo-public
|
name: hugo-public
|
||||||
path: public/
|
path: public/
|
||||||
retention-days: 1
|
retention-days: 1
|
||||||
|
compression-level: 0
|
||||||
|
|
||||||
- name: Push Image Optimizations
|
- name: Push Image Optimizations
|
||||||
continue-on-error: true
|
continue-on-error: true
|
||||||
@@ -358,30 +360,75 @@ jobs:
|
|||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: read
|
||||||
needs: build
|
needs: build
|
||||||
|
outputs:
|
||||||
|
deployed: ${{ steps.check.outputs.deployed }}
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Start timing
|
- name: Start timing
|
||||||
id: start-edgeone
|
id: start-edgeone
|
||||||
run: echo "start_time=$(date +%s)" >> $GITHUB_OUTPUT
|
run: echo "start_time=$(date +%s)" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
|
- name: Check build hash cache
|
||||||
|
id: cache-check
|
||||||
|
uses: actions/cache/restore@v4
|
||||||
|
with:
|
||||||
|
path: .last_deploy_hash
|
||||||
|
key: ${{ runner.os }}-deploy-edgeone-${{ needs.build.outputs.build_hash }}
|
||||||
|
restore-keys: |
|
||||||
|
${{ runner.os }}-deploy-edgeone-
|
||||||
|
|
||||||
|
- name: Check if deployment is needed
|
||||||
|
id: check
|
||||||
|
run: |
|
||||||
|
CURRENT_HASH="${{ needs.build.outputs.build_hash }}"
|
||||||
|
echo "当前 build_hash: $CURRENT_HASH"
|
||||||
|
|
||||||
|
if [ -f .last_deploy_hash ]; then
|
||||||
|
LAST_HASH=$(cat .last_deploy_hash)
|
||||||
|
echo "上次部署 hash: $LAST_HASH"
|
||||||
|
if [ "$CURRENT_HASH" = "$LAST_HASH" ]; then
|
||||||
|
echo "✅ 构建产物无变化,跳过 EdgeOne 部署"
|
||||||
|
echo "deployed=false" >> $GITHUB_OUTPUT
|
||||||
|
echo "skip_reason=hash_match" >> $GITHUB_OUTPUT
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "🔄 构建产物有变化,需要部署到 EdgeOne"
|
||||||
|
echo "deployed=true" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
- name: Checkout code (for scripts)
|
- name: Checkout code (for scripts)
|
||||||
|
if: steps.check.outputs.deployed == 'true'
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
|
|
||||||
- name: Download build artifact
|
- name: Download build artifact
|
||||||
|
if: steps.check.outputs.deployed == 'true'
|
||||||
uses: actions/download-artifact@v4
|
uses: actions/download-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: hugo-public
|
name: hugo-public
|
||||||
path: public/
|
path: public/
|
||||||
|
|
||||||
- name: Deploy to EdgeOne Pages
|
- name: Deploy to EdgeOne Pages
|
||||||
|
if: steps.check.outputs.deployed == 'true'
|
||||||
env:
|
env:
|
||||||
EDGEONE_API_TOKEN: ${{ secrets.EDGEONE_API_TOKEN }}
|
EDGEONE_API_TOKEN: ${{ secrets.EDGEONE_API_TOKEN }}
|
||||||
run: |
|
run: |
|
||||||
chmod +x scripts/deploy_edgeone.sh
|
chmod +x scripts/deploy_edgeone.sh
|
||||||
./scripts/deploy_edgeone.sh hugo-blog ./public overseas
|
./scripts/deploy_edgeone.sh hugo-blog ./public overseas
|
||||||
|
|
||||||
|
- name: Save deploy hash
|
||||||
|
if: steps.check.outputs.deployed == 'true'
|
||||||
|
run: echo "${{ needs.build.outputs.build_hash }}" > .last_deploy_hash
|
||||||
|
|
||||||
|
- name: Save build hash cache
|
||||||
|
if: steps.check.outputs.deployed == 'true'
|
||||||
|
uses: actions/cache/save@v4
|
||||||
|
with:
|
||||||
|
path: .last_deploy_hash
|
||||||
|
key: ${{ runner.os }}-deploy-edgeone-${{ needs.build.outputs.build_hash }}
|
||||||
|
|
||||||
- name: End timing
|
- name: End timing
|
||||||
id: end-edgeone
|
id: end-edgeone
|
||||||
run: |
|
run: |
|
||||||
@@ -389,7 +436,12 @@ jobs:
|
|||||||
start_time=${{ steps.start-edgeone.outputs.start_time }}
|
start_time=${{ steps.start-edgeone.outputs.start_time }}
|
||||||
duration=$((end_time - start_time))
|
duration=$((end_time - start_time))
|
||||||
echo "duration=${duration}" >> $GITHUB_OUTPUT
|
echo "duration=${duration}" >> $GITHUB_OUTPUT
|
||||||
echo "## ⏱️ Deploy EdgeOne 耗时: ${duration}秒" >> $GITHUB_STEP_SUMMARY
|
if [ "${{ steps.check.outputs.deployed }}" = "true" ]; then
|
||||||
|
echo "## ⏱️ Deploy EdgeOne 耗时: ${duration}秒" >> $GITHUB_STEP_SUMMARY
|
||||||
|
else
|
||||||
|
echo "## EdgeOne 部署已跳过(构建产物无变化)" >> $GITHUB_STEP_SUMMARY
|
||||||
|
echo "总耗时: ${duration}秒" >> $GITHUB_STEP_SUMMARY
|
||||||
|
fi
|
||||||
|
|
||||||
# ============================================================
|
# ============================================================
|
||||||
# Job 4: Deploy to UpYun (并行)
|
# Job 4: Deploy to UpYun (并行)
|
||||||
@@ -400,19 +452,72 @@ jobs:
|
|||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: read
|
||||||
needs: build
|
needs: build
|
||||||
|
outputs:
|
||||||
|
deployed: ${{ steps.check.outputs.deployed }}
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Start timing
|
- name: Start timing
|
||||||
id: start-upyun
|
id: start-upyun
|
||||||
run: echo "start_time=$(date +%s)" >> $GITHUB_OUTPUT
|
run: echo "start_time=$(date +%s)" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
|
- name: Check build hash cache
|
||||||
|
id: cache-check
|
||||||
|
uses: actions/cache/restore@v4
|
||||||
|
with:
|
||||||
|
path: .last_deploy_hash
|
||||||
|
key: ${{ runner.os }}-deploy-upyun-${{ needs.build.outputs.build_hash }}
|
||||||
|
restore-keys: |
|
||||||
|
${{ runner.os }}-deploy-upyun-
|
||||||
|
|
||||||
|
- name: Check if deployment is needed
|
||||||
|
id: check
|
||||||
|
run: |
|
||||||
|
CURRENT_HASH="${{ needs.build.outputs.build_hash }}"
|
||||||
|
echo "当前 build_hash: $CURRENT_HASH"
|
||||||
|
|
||||||
|
if [ -f .last_deploy_hash ]; then
|
||||||
|
LAST_HASH=$(cat .last_deploy_hash)
|
||||||
|
echo "上次部署 hash: $LAST_HASH"
|
||||||
|
if [ "$CURRENT_HASH" = "$LAST_HASH" ]; then
|
||||||
|
echo "✅ 构建产物无变化,跳过 UpYun 部署"
|
||||||
|
echo "deployed=false" >> $GITHUB_OUTPUT
|
||||||
|
echo "skip_reason=hash_match" >> $GITHUB_OUTPUT
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "🔄 构建产物有变化,需要部署到 UpYun"
|
||||||
|
echo "deployed=true" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
|
- name: Start artifact download timing
|
||||||
|
if: steps.check.outputs.deployed == 'true'
|
||||||
|
id: start-upyun-download
|
||||||
|
run: echo "start_time=$(date +%s)" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
- name: Download build artifact
|
- name: Download build artifact
|
||||||
|
if: steps.check.outputs.deployed == 'true'
|
||||||
uses: actions/download-artifact@v4
|
uses: actions/download-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: hugo-public
|
name: hugo-public
|
||||||
path: public/
|
path: public/
|
||||||
|
|
||||||
|
- name: End artifact download timing
|
||||||
|
if: steps.check.outputs.deployed == 'true'
|
||||||
|
id: end-upyun-download
|
||||||
|
run: |
|
||||||
|
end_time=$(date +%s)
|
||||||
|
start_time=${{ steps.start-upyun-download.outputs.start_time }}
|
||||||
|
duration=$((end_time - start_time))
|
||||||
|
echo "duration=${duration}" >> $GITHUB_OUTPUT
|
||||||
|
echo "## UpYun artifact download duration: ${duration}s" >> $GITHUB_STEP_SUMMARY
|
||||||
|
|
||||||
|
- name: Start UpYun upload timing
|
||||||
|
if: steps.check.outputs.deployed == 'true'
|
||||||
|
id: start-upyun-upload
|
||||||
|
run: echo "start_time=$(date +%s)" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
- name: Deploy to UpYun
|
- name: Deploy to UpYun
|
||||||
|
if: steps.check.outputs.deployed == 'true'
|
||||||
uses: her-cat/upyun-deployer@v1.0.4
|
uses: her-cat/upyun-deployer@v1.0.4
|
||||||
with:
|
with:
|
||||||
bucket: ${{ secrets.UPYUN_BUCKET }}
|
bucket: ${{ secrets.UPYUN_BUCKET }}
|
||||||
@@ -421,24 +526,46 @@ jobs:
|
|||||||
dir: 'public'
|
dir: 'public'
|
||||||
publish_dir: '/'
|
publish_dir: '/'
|
||||||
|
|
||||||
|
- name: Save deploy hash
|
||||||
|
if: steps.check.outputs.deployed == 'true'
|
||||||
|
run: echo "${{ needs.build.outputs.build_hash }}" > .last_deploy_hash
|
||||||
|
|
||||||
|
- name: Save build hash cache
|
||||||
|
if: steps.check.outputs.deployed == 'true'
|
||||||
|
uses: actions/cache/save@v4
|
||||||
|
with:
|
||||||
|
path: .last_deploy_hash
|
||||||
|
key: ${{ runner.os }}-deploy-upyun-${{ needs.build.outputs.build_hash }}
|
||||||
|
|
||||||
- name: End timing
|
- name: End timing
|
||||||
id: end-upyun
|
id: end-upyun
|
||||||
run: |
|
run: |
|
||||||
end_time=$(date +%s)
|
end_time=$(date +%s)
|
||||||
start_time=${{ steps.start-upyun.outputs.start_time }}
|
total_start_time=${{ steps.start-upyun.outputs.start_time }}
|
||||||
duration=$((end_time - start_time))
|
total_duration=$((end_time - total_start_time))
|
||||||
echo "duration=${duration}" >> $GITHUB_OUTPUT
|
echo "duration=${total_duration}" >> $GITHUB_OUTPUT
|
||||||
echo "## ⏱️ Deploy UpYun 耗时: ${duration}秒" >> $GITHUB_STEP_SUMMARY
|
|
||||||
|
if [ "${{ steps.check.outputs.deployed }}" = "true" ]; then
|
||||||
|
upload_start_time=${{ steps.start-upyun-upload.outputs.start_time }}
|
||||||
|
upload_duration=$((end_time - upload_start_time))
|
||||||
|
echo "upload_duration=${upload_duration}" >> $GITHUB_OUTPUT
|
||||||
|
echo "## Deploy UpYun total duration: ${total_duration}s" >> $GITHUB_STEP_SUMMARY
|
||||||
|
echo "## UpYun upload duration: ${upload_duration}s" >> $GITHUB_STEP_SUMMARY
|
||||||
|
else
|
||||||
|
echo "## UpYun 部署已跳过(构建产物无变化)" >> $GITHUB_STEP_SUMMARY
|
||||||
|
echo "总耗时: ${total_duration}s" >> $GITHUB_STEP_SUMMARY
|
||||||
|
fi
|
||||||
|
|
||||||
# ============================================================
|
# ============================================================
|
||||||
# Job 5: CDN Refresh & Notifications (在所有部署完成后)
|
# Job 5: CDN Refresh & Notifications (after all deployments)
|
||||||
# ============================================================
|
# ============================================================
|
||||||
finalize:
|
finalize:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
timeout-minutes: 5
|
timeout-minutes: 5
|
||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: read
|
||||||
needs: [deploy-edgeone, deploy-upyun]
|
needs: [pre-check, subset-fonts, build, deploy-edgeone, deploy-upyun]
|
||||||
|
if: always() && needs.build.result == 'success' && needs.deploy-edgeone.result == 'success' && needs.deploy-upyun.result == 'success'
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Start timing
|
- name: Start timing
|
||||||
@@ -459,7 +586,23 @@ jobs:
|
|||||||
- name: Install Node.js dependencies
|
- name: Install Node.js dependencies
|
||||||
run: npm ci
|
run: npm ci
|
||||||
|
|
||||||
|
- name: Determine deployment status
|
||||||
|
id: deploy-status
|
||||||
|
run: |
|
||||||
|
EDGEONE_DEPLOYED="${{ needs.deploy-edgeone.outputs.deployed }}"
|
||||||
|
UPYUN_DEPLOYED="${{ needs.deploy-upyun.outputs.deployed }}"
|
||||||
|
|
||||||
|
echo "EdgeOne deployed: $EDGEONE_DEPLOYED"
|
||||||
|
echo "UpYun deployed: $UPYUN_DEPLOYED"
|
||||||
|
|
||||||
|
if [ "$EDGEONE_DEPLOYED" = "true" ] || [ "$UPYUN_DEPLOYED" = "true" ]; then
|
||||||
|
echo "any_deployed=true" >> $GITHUB_OUTPUT
|
||||||
|
else
|
||||||
|
echo "any_deployed=false" >> $GITHUB_OUTPUT
|
||||||
|
fi
|
||||||
|
|
||||||
- name: Refresh DogeCloud CDN
|
- name: Refresh DogeCloud CDN
|
||||||
|
if: steps.deploy-status.outputs.any_deployed == 'true'
|
||||||
env:
|
env:
|
||||||
DOGECLOUD_ACCESS_KEY: ${{ secrets.DOGECLOUD_ACCESS_KEY }}
|
DOGECLOUD_ACCESS_KEY: ${{ secrets.DOGECLOUD_ACCESS_KEY }}
|
||||||
DOGECLOUD_SECRET_KEY: ${{ secrets.DOGECLOUD_SECRET_KEY }}
|
DOGECLOUD_SECRET_KEY: ${{ secrets.DOGECLOUD_SECRET_KEY }}
|
||||||
@@ -467,6 +610,7 @@ jobs:
|
|||||||
run: node scripts/refresh_cdn.js
|
run: node scripts/refresh_cdn.js
|
||||||
|
|
||||||
- name: Generate Notification Report
|
- name: Generate Notification Report
|
||||||
|
if: steps.deploy-status.outputs.any_deployed == 'true'
|
||||||
continue-on-error: true
|
continue-on-error: true
|
||||||
run: node scripts/generate_notification_report.js
|
run: node scripts/generate_notification_report.js
|
||||||
|
|
||||||
@@ -480,7 +624,17 @@ jobs:
|
|||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
MESSAGE="✅ **部署成功**
|
EDGEONE_STATUS="${{ needs.deploy-edgeone.outputs.deployed == 'true' && '✅' || '⏭️ 跳过' }}"
|
||||||
|
UPYUN_STATUS="${{ needs.deploy-upyun.outputs.deployed == 'true' && '✅' || '⏭️ 跳过' }}"
|
||||||
|
CDN_STATUS="${{ steps.deploy-status.outputs.any_deployed == 'true' && '✅' || '⏭️ 跳过' }}"
|
||||||
|
|
||||||
|
if [ "${{ steps.deploy-status.outputs.any_deployed }}" = "true" ]; then
|
||||||
|
TITLE="✅ **部署成功**"
|
||||||
|
else
|
||||||
|
TITLE="ℹ️ **无变化,跳过部署**"
|
||||||
|
fi
|
||||||
|
|
||||||
|
MESSAGE="${TITLE}
|
||||||
|
|
||||||
📦 项目: ${{ github.repository }}
|
📦 项目: ${{ github.repository }}
|
||||||
🌿 分支: ${{ github.ref_name }}
|
🌿 分支: ${{ github.ref_name }}
|
||||||
@@ -488,9 +642,9 @@ jobs:
|
|||||||
🕐 时间: $(date +'%Y-%m-%d %H:%M:%S')
|
🕐 时间: $(date +'%Y-%m-%d %H:%M:%S')
|
||||||
|
|
||||||
📊 部署目标:
|
📊 部署目标:
|
||||||
- EdgeOne Pages ✓
|
- EdgeOne Pages ${EDGEONE_STATUS}
|
||||||
- UpYun ✓
|
- UpYun ${UPYUN_STATUS}
|
||||||
- CDN 刷新 ✓"
|
- CDN 刷新 ${CDN_STATUS}"
|
||||||
|
|
||||||
curl -s -X POST "https://api.telegram.org/bot${TELEGRAM_BOT_TOKEN}/sendMessage" \
|
curl -s -X POST "https://api.telegram.org/bot${TELEGRAM_BOT_TOKEN}/sendMessage" \
|
||||||
-d chat_id="${TELEGRAM_CHAT_ID}" \
|
-d chat_id="${TELEGRAM_CHAT_ID}" \
|
||||||
@@ -506,21 +660,33 @@ jobs:
|
|||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
EDGEONE_STATUS="${{ needs.deploy-edgeone.outputs.deployed == 'true' && '✅' || '⏭️ 跳过' }}"
|
||||||
|
UPYUN_STATUS="${{ needs.deploy-upyun.outputs.deployed == 'true' && '✅' || '⏭️ 跳过' }}"
|
||||||
|
CDN_STATUS="${{ steps.deploy-status.outputs.any_deployed == 'true' && '✅' || '⏭️ 跳过' }}"
|
||||||
|
|
||||||
|
if [ "${{ steps.deploy-status.outputs.any_deployed }}" = "true" ]; then
|
||||||
|
TITLE="✅ **部署成功**"
|
||||||
|
else
|
||||||
|
TITLE="ℹ️ **无变化,跳过部署**"
|
||||||
|
fi
|
||||||
|
|
||||||
CURRENT_TIME=$(date +'%Y-%m-%d %H:%M:%S')
|
CURRENT_TIME=$(date +'%Y-%m-%d %H:%M:%S')
|
||||||
curl -s -X POST "${FEISHU_WEBHOOK_URL}" \
|
curl -s -X POST "${FEISHU_WEBHOOK_URL}" \
|
||||||
-H "Content-Type: application/json" \
|
-H "Content-Type: application/json" \
|
||||||
-d '{
|
-d '{
|
||||||
"msg_type": "text",
|
"msg_type": "text",
|
||||||
"content": {
|
"content": {
|
||||||
"text": "✅ **部署成功**\n\n📦 项目: ${{ github.repository }}\n🌿 分支: ${{ github.ref_name }}\n🔗 Commit: ${{ github.sha }}\n🕐 时间: '"${CURRENT_TIME}"'\n\n📊 部署目标:\n- EdgeOne Pages ✓\n- UpYun ✓\n- CDN 刷新 ✓"
|
"text": "'"${TITLE}"'\n\n📦 项目: ${{ github.repository }}\n🌿 分支: ${{ github.ref_name }}\n🔗 Commit: ${{ github.sha }}\n🕐 时间: '"${CURRENT_TIME}"'\n\n📊 部署目标:\n- EdgeOne Pages '"${EDGEONE_STATUS}"'\n- UpYun '"${UPYUN_STATUS}"'\n- CDN 刷新 '"${CDN_STATUS}"'"
|
||||||
}
|
}
|
||||||
}'
|
}'
|
||||||
|
|
||||||
- name: Get current date (CN)
|
- name: Get current date (CN)
|
||||||
|
if: steps.deploy-status.outputs.any_deployed == 'true'
|
||||||
id: date
|
id: date
|
||||||
run: echo "date=$(date +'%Y-%m-%d %H:%M:%S')" >> $GITHUB_OUTPUT
|
run: echo "date=$(date +'%Y-%m-%d %H:%M:%S')" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
- name: Send deployment notification
|
- name: Send deployment notification
|
||||||
|
if: steps.deploy-status.outputs.any_deployed == 'true'
|
||||||
uses: dawidd6/action-send-mail@v3
|
uses: dawidd6/action-send-mail@v3
|
||||||
with:
|
with:
|
||||||
server_address: smtp.qq.com
|
server_address: smtp.qq.com
|
||||||
@@ -541,18 +707,33 @@ jobs:
|
|||||||
start_time=${{ steps.start-finalize.outputs.start_time }}
|
start_time=${{ steps.start-finalize.outputs.start_time }}
|
||||||
finalize_duration=$((end_time - start_time))
|
finalize_duration=$((end_time - start_time))
|
||||||
|
|
||||||
|
EDGEONE_DEPLOYED="${{ needs.deploy-edgeone.outputs.deployed }}"
|
||||||
|
UPYUN_DEPLOYED="${{ needs.deploy-upyun.outputs.deployed }}"
|
||||||
|
|
||||||
|
if [ "$EDGEONE_DEPLOYED" = "true" ]; then
|
||||||
|
EDGEONE_DISPLAY="✅ 已部署"
|
||||||
|
else
|
||||||
|
EDGEONE_DISPLAY="⏭️ 跳过(无变化)"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$UPYUN_DEPLOYED" = "true" ]; then
|
||||||
|
UPYUN_DISPLAY="✅ 已部署"
|
||||||
|
else
|
||||||
|
UPYUN_DISPLAY="⏭️ 跳过(无变化)"
|
||||||
|
fi
|
||||||
|
|
||||||
echo "## ⏱️ 部署耗时统计" >> $GITHUB_STEP_SUMMARY
|
echo "## ⏱️ 部署耗时统计" >> $GITHUB_STEP_SUMMARY
|
||||||
echo "" >> $GITHUB_STEP_SUMMARY
|
echo "" >> $GITHUB_STEP_SUMMARY
|
||||||
echo "| 阶段 | 耗时 |" >> $GITHUB_STEP_SUMMARY
|
echo "| 阶段 | 状态 |" >> $GITHUB_STEP_SUMMARY
|
||||||
echo "|------|------|" >> $GITHUB_STEP_SUMMARY
|
echo "|------|------|" >> $GITHUB_STEP_SUMMARY
|
||||||
echo "| Pre-check | ${{ needs.pre-check.result == 'success' && '✅' || '⏭️' }} |" >> $GITHUB_STEP_SUMMARY
|
echo "| Pre-check | ${{ needs.pre-check.result == 'success' && '✅ 成功' || needs.pre-check.result == 'skipped' && '⏭️ 跳过' || '❌ 失败' }} |" >> $GITHUB_STEP_SUMMARY
|
||||||
echo "| Subset-fonts | ${{ needs.build.result == 'success' && '✅' || '⏭️' }} |" >> $GITHUB_STEP_SUMMARY
|
echo "| Subset-fonts | ${{ needs.subset-fonts.result == 'success' && '✅ 成功' || needs.subset-fonts.result == 'skipped' && '⏭️ 跳过' || '❌ 失败' }} |" >> $GITHUB_STEP_SUMMARY
|
||||||
echo "| Build | ${{ needs.build.result == 'success' && '✅' || '❌' }} |" >> $GITHUB_STEP_SUMMARY
|
echo "| Build | ${{ needs.build.result == 'success' && '✅ 成功' || '❌ 失败' }} |" >> $GITHUB_STEP_SUMMARY
|
||||||
echo "| Deploy EdgeOne | ${{ needs.deploy-edgeone.result == 'success' && '✅' || '❌' }} |" >> $GITHUB_STEP_SUMMARY
|
echo "| Deploy EdgeOne | ${EDGEONE_DISPLAY} |" >> $GITHUB_STEP_SUMMARY
|
||||||
echo "| Deploy UpYun | ${{ needs.deploy-upyun.result == 'success' && '✅' || '❌' }} |" >> $GITHUB_STEP_SUMMARY
|
echo "| Deploy UpYun | ${UPYUN_DISPLAY} |" >> $GITHUB_STEP_SUMMARY
|
||||||
echo "| Finalize | ✅ (${finalize_duration}秒) |" >> $GITHUB_STEP_SUMMARY
|
echo "| Finalize | ✅ 成功 (${finalize_duration}秒) |" >> $GITHUB_STEP_SUMMARY
|
||||||
echo "" >> $GITHUB_STEP_SUMMARY
|
echo "" >> $GITHUB_STEP_SUMMARY
|
||||||
echo "**总计耗时:** ${finalize_duration}秒 (finalize 阶段)" >> $GITHUB_STEP_SUMMARY
|
echo "**Finalize 阶段耗时:** ${finalize_duration}秒" >> $GITHUB_STEP_SUMMARY
|
||||||
|
|
||||||
# ============================================================
|
# ============================================================
|
||||||
# Job 6: Failure Notification (失败通知)
|
# Job 6: Failure Notification (失败通知)
|
||||||
@@ -562,8 +743,8 @@ jobs:
|
|||||||
timeout-minutes: 3
|
timeout-minutes: 3
|
||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: read
|
||||||
needs: [build, deploy-edgeone, deploy-upyun, finalize]
|
needs: [pre-check, subset-fonts, build, deploy-edgeone, deploy-upyun, finalize]
|
||||||
if: failure()
|
if: always() && (needs.pre-check.result == 'failure' || needs.build.result == 'failure' || needs.deploy-edgeone.result == 'failure' || needs.deploy-upyun.result == 'failure' || needs.finalize.result == 'failure')
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Send Telegram failure notification
|
- name: Send Telegram failure notification
|
||||||
|
|||||||
Binary file not shown.
Reference in new issue
Block a user