diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 4c2d8162..aff03321 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -23,7 +23,7 @@ jobs: runs-on: ubuntu-latest timeout-minutes: 2 outputs: - can_deploy: ${{ steps.repo-check.outputs.can_deploy }} + can_deploy: ${{ steps.decide.outputs.can_deploy }} duration: ${{ steps.end-pre-check.outputs.duration }} steps: @@ -63,27 +63,34 @@ jobs: echo "⚠️ 提交信息格式建议: feat/fix/chore/docs/style/refactor/test: description" fi - - name: Check for new commits (only for cron) - if: github.event_name == 'schedule' - id: cron-check + - name: Decide whether to deploy + id: decide run: | - LAST_COMMIT_TIME=$(git log -1 --format=%ct) - CURRENT_TIME=$(date +%s) - DIFF_HOURS=$(( (CURRENT_TIME - LAST_COMMIT_TIME) / 3600 )) - - echo "⏰ 最后一次提交时间: $(date -d @$LAST_COMMIT_TIME)" - echo "⏰ 当前时间: $(date)" - echo "⏰ 距离上次提交: $DIFF_HOURS 小时" - - if [ "$DIFF_HOURS" -lt 1 ]; then - echo "✅ 最近有提交,继续构建" - echo "can_deploy=true" >> $GITHUB_OUTPUT - else - echo "⏭️ 超过 1 小时没有新提交,跳过定时构建" - echo "can_deploy=false" >> $GITHUB_OUTPUT - exit 0 + # 基础决策来自仓库校验 + CAN_DEPLOY="${{ steps.repo-check.outputs.can_deploy }}" + echo "📌 仓库校验结果: can_deploy=${CAN_DEPLOY}" + + # 定时触发:若 1 小时内无新提交则跳过,避免重复构建 + if [ "${{ github.event_name }}" = "schedule" ]; then + LAST_COMMIT_TIME=$(git log -1 --format=%ct) + CURRENT_TIME=$(date +%s) + DIFF_HOURS=$(( (CURRENT_TIME - LAST_COMMIT_TIME) / 3600 )) + + echo "⏰ 最后一次提交时间: $(date -d @$LAST_COMMIT_TIME)" + echo "⏰ 当前时间: $(date)" + echo "⏰ 距离上次提交: ${DIFF_HOURS} 小时" + + if [ "$DIFF_HOURS" -ge 1 ]; then + echo "⏭️ 超过 1 小时没有新提交,跳过定时构建" + CAN_DEPLOY="false" + else + echo "✅ 最近有提交,继续构建" + fi fi + echo "can_deploy=${CAN_DEPLOY}" >> $GITHUB_OUTPUT + echo "## 🚦 部署决策: can_deploy=${CAN_DEPLOY}" >> $GITHUB_STEP_SUMMARY + - name: Summary run: | echo "## 🔍 前置检查完成" >> $GITHUB_STEP_SUMMARY