fix(ci): 修复auto-merge语法bug - 逻辑抽取到独立脚本 #748

Merged
auto-approve-bot merged 5 commits from fix/auto-merge-syntax-bug into develop 2026-07-23 10:31:12 +08:00
Owner

问题

auto-merge workflow的bash脚本在act runner中报 syntax error near unexpected token 'fi',本地bash -n检查无问题,疑似YAML内嵌大段bash导致act解析异常。

修复

将auto-approve和auto-merge的核心逻辑从workflow YAML中抽取为独立脚本:

  • scripts/ci/auto_approve.sh
  • scripts/ci/auto_merge.sh

workflow中改为单行调用,彻底规避YAML内嵌bash的转义/缩进/解析坑,也方便本地调试。

## 问题 auto-merge workflow的bash脚本在act runner中报 `syntax error near unexpected token 'fi'`,本地bash -n检查无问题,疑似YAML内嵌大段bash导致act解析异常。 ## 修复 将auto-approve和auto-merge的核心逻辑从workflow YAML中抽取为独立脚本: - `scripts/ci/auto_approve.sh` - `scripts/ci/auto_merge.sh` workflow中改为单行调用,彻底规避YAML内嵌bash的转义/缩进/解析坑,也方便本地调试。
xiaoxia added 3 commits 2026-07-23 10:15:02 +08:00
fix(ci): auto-merge语法bug - 调用独立脚本替代内嵌大段bash
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 18s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 34s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 42s
CI/CD Pipeline / Build Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 53s
CI/CD Pipeline / PR Build Web Image (pull_request) Successful in 36s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 42s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / Build Production API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI/CD Pipeline / Validate - Code Quality (pull_request) Successful in 2m11s
CI/CD Pipeline / Deploy Production (pull_request) Has been skipped
CI/CD Pipeline / Staging E2E Tests (pull_request) Has been skipped
CI/CD Pipeline / Staging API Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / Integration Tests (pull_request) Successful in 42s
CI/CD Pipeline / ACR Image Cleanup (pull_request) Has been skipped
CI/CD Pipeline / Production Browser E2E (pull_request) Has been skipped
CI/CD Pipeline / Unit Tests (pull_request) Failing after 2m11s
AI Code Review / AI Code Review (pull_request) Successful in 5m51s
CI/CD Pipeline / PR Build API Image (pull_request) Has been cancelled
CI/CD Pipeline / PR Build Worker Image (pull_request) Has been cancelled
daa4e80f53
xiaoxia added 1 commit 2026-07-23 10:15:04 +08:00
fix(ci): auto-merge语法bug - 调用独立脚本替代内嵌大段bash
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 18s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 34s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 42s
CI/CD Pipeline / Build Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 53s
CI/CD Pipeline / PR Build Web Image (pull_request) Successful in 36s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 42s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / Build Production API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI/CD Pipeline / Validate - Code Quality (pull_request) Successful in 2m11s
CI/CD Pipeline / Deploy Production (pull_request) Has been skipped
CI/CD Pipeline / Staging E2E Tests (pull_request) Has been skipped
CI/CD Pipeline / Staging API Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / Integration Tests (pull_request) Successful in 42s
CI/CD Pipeline / ACR Image Cleanup (pull_request) Has been skipped
CI/CD Pipeline / Production Browser E2E (pull_request) Has been skipped
CI/CD Pipeline / Unit Tests (pull_request) Failing after 2m11s
AI Code Review / AI Code Review (pull_request) Successful in 5m51s
CI/CD Pipeline / PR Build API Image (pull_request) Has been cancelled
CI/CD Pipeline / PR Build Worker Image (pull_request) Has been cancelled
daa4e80f53

🚀 预览环境已部署

项目 详情
PR号 #748
预览链接 https://pr-748.preview.xiaoxiajianji.com
API环境 staging

💡 预览环境使用 staging API 数据,请勿在预览环境中操作重要数据。

🔄 每次提交新代码后预览环境会自动更新。

🗑️ PR 关闭或合并后,预览环境会自动清理。

🚀 **预览环境已部署** | 项目 | 详情 | |------|------| | PR号 | #748 | | 预览链接 | [https://pr-748.preview.xiaoxiajianji.com](https://pr-748.preview.xiaoxiajianji.com) | | API环境 | staging | > 💡 预览环境使用 staging API 数据,请勿在预览环境中操作重要数据。 > > 🔄 每次提交新代码后预览环境会自动更新。 > > 🗑️ PR 关闭或合并后,预览环境会自动清理。
xiaoxia added 1 commit 2026-07-23 10:21:57 +08:00
fix(ci): 修复YAML格式 - on触发器被PyYAML转为true的bug
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 37s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 40s
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 44s
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 50s
CI/CD Pipeline / Validate - Code Quality (pull_request) Has been cancelled
CI/CD Pipeline / Unit Tests (pull_request) Has been cancelled
CI/CD Pipeline / Integration Tests (pull_request) Has been cancelled
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been cancelled
CI/CD Pipeline / PR Build API Image (pull_request) Has been cancelled
CI/CD Pipeline / PR Build Web Image (pull_request) Has been cancelled
CI/CD Pipeline / PR Build Worker Image (pull_request) Has been cancelled
CI/CD Pipeline / Build Staging API Image (pull_request) Has been cancelled
CI/CD Pipeline / Build Staging Web Image (pull_request) Has been cancelled
CI/CD Pipeline / Build Staging Worker Image (pull_request) Has been cancelled
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been cancelled
CI/CD Pipeline / Staging E2E Tests (pull_request) Has been cancelled
CI/CD Pipeline / Staging API Integration Tests (pull_request) Has been cancelled
CI/CD Pipeline / Build Production API Image (pull_request) Has been cancelled
CI/CD Pipeline / Build Production Web Image (pull_request) Has been cancelled
CI/CD Pipeline / Build Production Worker Image (pull_request) Has been cancelled
CI/CD Pipeline / Deploy Production (pull_request) Has been cancelled
CI/CD Pipeline / Production Browser E2E (pull_request) Has been cancelled
CI/CD Pipeline / ACR Image Cleanup (pull_request) Has been cancelled
AI Code Review / AI Code Review (pull_request) Has been cancelled
Preview Deploy / Deploy Preview Environment (pull_request) Has been cancelled
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 1m7s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 3m27s
c10eac868a
xiaoxia added 1 commit 2026-07-23 10:22:50 +08:00
fix(ci): auto-merge语法bug修复 - 抽取到独立脚本调用
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 33s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 29s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 34s
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 51s
CI/CD Pipeline / Build Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / PR Build Web Image (pull_request) Successful in 40s
CI/CD Pipeline / Validate - Code Quality (pull_request) Successful in 1m23s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 56s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 53s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 2m12s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / Build Production API Image (pull_request) Has been skipped
CI/CD Pipeline / Integration Tests (pull_request) Successful in 49s
CI/CD Pipeline / Build Production Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 19s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 5m14s
CI/CD Pipeline / Unit Tests (pull_request) Successful in 3m6s
CI/CD Pipeline / Staging E2E Tests (pull_request) Has been skipped
CI/CD Pipeline / Staging API Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / Deploy Production (pull_request) Has been skipped
CI/CD Pipeline / ACR Image Cleanup (pull_request) Has been skipped
AI Code Review / AI Code Review (pull_request) Successful in 7m13s
CI/CD Pipeline / Production Browser E2E (pull_request) Has been skipped
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 14m57s
ed45c25b9c
auto-approve-bot approved these changes 2026-07-23 10:29:48 +08:00
auto-approve-bot left a comment
Collaborator

CI全绿,自动审批通过。

CI全绿,自动审批通过。
auto-approve-bot approved these changes 2026-07-23 10:29:48 +08:00
auto-approve-bot left a comment
Collaborator

CI全绿,自动审批通过。

CI全绿,自动审批通过。
auto-approve-bot merged commit 26cc6a88b7 into develop 2026-07-23 10:31:12 +08:00
auto-approve-bot deleted branch fix/auto-merge-syntax-bug 2026-07-23 10:31:12 +08:00

🗑️ 预览环境已清理

PR #748 已关闭或合并,对应的预览环境已被清理。

如有需要,可以重新打开 PR 来重新生成预览环境。

🗑️ **预览环境已清理** PR #748 已关闭或合并,对应的预览环境已被清理。 > 如有需要,可以重新打开 PR 来重新生成预览环境。
Collaborator

代码审查结果 - PR #748

⚠️ 问题(0个需要修改)

💡 建议(3个可选)

  1. scripts/ci/auto_approve.sh 第4-6行 & scripts/ci/auto_merge.sh 第4-6行set -eu 重复声明

    • 两个脚本中均连续出现了两次 set -eu,这是代码重构时的复制粘贴残留,虽然不影响功能,但应删除重复行以保持整洁。
  2. scripts/ci/auto_approve.sh & scripts/ci/auto_merge.sh:建议统一文件权限

    • 新增的脚本文件在 diff 中显示为 mode 100644(普通文本文件)。虽然 Workflow 中通过 bash scripts/... 调用不依赖执行权限,但作为可执行脚本,建议赋予 755 权限(chmod +x),符合惯例也方便本地直接运行测试。
  3. scripts/ci/auto_approve.sh 与 scripts/ci/auto_merge.sh 逻辑一致性BACKEND_COUNT 计算方式不统一

    • auto_approve.sh 使用 grep -cv 计算后端文件数,而 auto_merge.sh 使用 TOTAL - FRONTEND_COUNT 计算。
    • 虽然在大多数情况下结果一致,但在 FILES 为空或包含空行等边界情况下行为可能不同(例如空输入时 grep -cv 返回 1,而数学计算返回 0)。建议统一使用一种计算逻辑(推荐数学计算,更精确)。

格式检查通过 | 逻辑审查通过 | 性能良好


🤖 由 AI 代码审查机器人自动生成 | 2026-07-23 10:35:57 | 模型:

## 代码审查结果 - PR #748 ### ⚠️ 问题(0个需要修改) 无 ### 💡 建议(3个可选) 1. **scripts/ci/auto_approve.sh 第4-6行 & scripts/ci/auto_merge.sh 第4-6行**:`set -eu` 重复声明 - 两个脚本中均连续出现了两次 `set -eu`,这是代码重构时的复制粘贴残留,虽然不影响功能,但应删除重复行以保持整洁。 2. **scripts/ci/auto_approve.sh & scripts/ci/auto_merge.sh**:建议统一文件权限 - 新增的脚本文件在 diff 中显示为 `mode 100644`(普通文本文件)。虽然 Workflow 中通过 `bash scripts/...` 调用不依赖执行权限,但作为可执行脚本,建议赋予 `755` 权限(`chmod +x`),符合惯例也方便本地直接运行测试。 3. **scripts/ci/auto_approve.sh 与 scripts/ci/auto_merge.sh 逻辑一致性**:`BACKEND_COUNT` 计算方式不统一 - `auto_approve.sh` 使用 `grep -cv` 计算后端文件数,而 `auto_merge.sh` 使用 `TOTAL - FRONTEND_COUNT` 计算。 - 虽然在大多数情况下结果一致,但在 `FILES` 为空或包含空行等边界情况下行为可能不同(例如空输入时 `grep -cv` 返回 1,而数学计算返回 0)。建议统一使用一种计算逻辑(推荐数学计算,更精确)。 --- ✅ 格式检查通过 | ✅ 逻辑审查通过 | ✅ 性能良好 --- <sub>🤖 由 AI 代码审查机器人自动生成 | 2026-07-23 10:35:57 | 模型: </sub> <!-- AI_CODE_REVIEW_AUTO_COMMENT -->
Sign in to join this conversation.