diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index cb0785a..779325a 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -44,6 +44,8 @@ jobs: steps: - name: 📥 检出代码 uses: actions/checkout@v4 + with: + fetch-depth: 0 - name: 🔍 检查部署配置 id: check @@ -79,14 +81,23 @@ jobs: echo "migrations_changed=false" >> $GITHUB_OUTPUT if [[ "${{ github.event_name }}" == "push" ]]; then - if [[ "${{ github.event.before }}" == "0000000000000000000000000000000000000000" ]]; then + before="${{ github.event.before }}" + if [[ -z "$before" || "$before" == "0000000000000000000000000000000000000000" ]]; then echo "ui_changed=true" >> $GITHUB_OUTPUT echo "worker_changed=true" >> $GITHUB_OUTPUT echo "migrations_changed=true" >> $GITHUB_OUTPUT exit 0 fi - CHANGED=$(git diff --name-only "${{ github.event.before }}" "${{ github.sha }}") + if ! git cat-file -e "$before^{commit}" 2>/dev/null; then + echo "⚠️ before 提交不存在,默认视为全量变更" + echo "ui_changed=true" >> $GITHUB_OUTPUT + echo "worker_changed=true" >> $GITHUB_OUTPUT + echo "migrations_changed=true" >> $GITHUB_OUTPUT + exit 0 + fi + + CHANGED=$(git diff --name-only "$before" "${{ github.sha }}") if echo "$CHANGED" | grep -q "^apps/ui/"; then echo "ui_changed=true" >> $GITHUB_OUTPUT diff --git a/helloagents/CHANGELOG.md b/helloagents/CHANGELOG.md index dc3cbfb..cdafe8a 100644 --- a/helloagents/CHANGELOG.md +++ b/helloagents/CHANGELOG.md @@ -4,6 +4,9 @@ ### 微调 +- **[ci]**: push 变更检测在 before 提交缺失时按全量变更处理并拉全历史 + - 类型: 微调(无方案包) + - 文件: .github/workflows/deploy.yml:45-100 - **[admin-ui]**: 处理剪贴板异常时忽略未使用的错误变量 - 类型: 微调(无方案包) - 文件: apps/ui/src/App.tsx:500