fix(ci): 修复预览环境workflow YAML解析错误 #499

Merged
auto-approve-bot merged 3 commits from fix/preview-workflow-yaml into develop 2026-07-18 13:04:47 +08:00
Owner

问题

preview-deploy.yml 和 preview-cleanup.yml 中,Comment 步骤内嵌的 Python 三重引号字符串包含 Markdown 表格(| 项目 | 详情 |),表格行没有缩进,导致 YAML 的 run: | 块标量提前终止,整个 workflow 无法被 Gitea 解析注册。

影响:预览环境 workflow 完全不会触发,PR 创建后没有预览部署。

修复

  1. 评论生成逻辑抽离为独立脚本 scripts/ci/preview_comment.py
  2. workflow 中直接调用脚本,避免 YAML + Shell + Python + Markdown 四层嵌套
  3. 两个 workflow 均已通过 YAML 语法验证

验证

  • 创建测试PR,确认预览部署workflow正常触发
  • 预览页面能正常HTTPS访问
  • PR评论中出现预览链接
### 问题 preview-deploy.yml 和 preview-cleanup.yml 中,Comment 步骤内嵌的 Python 三重引号字符串包含 Markdown 表格(`| 项目 | 详情 |`),表格行没有缩进,导致 YAML 的 `run: |` 块标量提前终止,整个 workflow 无法被 Gitea 解析注册。 影响:预览环境 workflow 完全不会触发,PR 创建后没有预览部署。 ### 修复 1. 评论生成逻辑抽离为独立脚本 `scripts/ci/preview_comment.py` 2. workflow 中直接调用脚本,避免 YAML + Shell + Python + Markdown 四层嵌套 3. 两个 workflow 均已通过 YAML 语法验证 ### 验证 - [ ] 创建测试PR,确认预览部署workflow正常触发 - [ ] 预览页面能正常HTTPS访问 - [ ] PR评论中出现预览链接
xiaoxia added 1 commit 2026-07-18 12:02:15 +08:00
fix(ci): 修复预览环境workflow YAML解析错误,评论逻辑抽为独立脚本
CI Build & Deploy Pipeline / Build Staging Web Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Build Staging API Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Build Staging Worker Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Build Production Web Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI Build & Deploy Pipeline / Build Production API Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Build Production Worker Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Staging E2E Tests (pull_request) Has been skipped
CI Build & Deploy Pipeline / Staging API Integration Tests (pull_request) Has been skipped
CI Build & Deploy Pipeline / Deploy Production (pull_request) Has been skipped
CI Build & Deploy Pipeline / Production Browser E2E (pull_request) Has been skipped
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 24s
Preview Deploy / Deploy Preview Environment (pull_request) Failing after 48s
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 54s
CI/CD Pipeline / Validate Code Quality And Tests (pull_request) Failing after 43s
Auto Merge CI PRs / Auto Merge on CI Green + Approved (pull_request) Successful in 1m11s
AI Code Review / AI Code Review (pull_request) Successful in 2m7s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 1m29s
CI/CD Pipeline / Unit Tests (pull_request) Has been cancelled
Auto Approve CI PRs / Auto Approve on CI Green (pull_request) Successful in 2m59s
c4f2a2f817
- 修复 preview-deploy.yml 和 preview-cleanup.yml 中Python三重引号
  嵌Markdown表格导致YAML解析失败的问题
- 评论生成逻辑抽离为 scripts/ci/preview_comment.py
- workflow中直接调用脚本,避免多层嵌套字符串
Collaborator

🚀 预览环境已部署

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

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

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

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

🚀 **预览环境已部署** | 项目 | 详情 | |------|------| | PR号 | #499 | | 预览链接 | [https://pr-499.preview.xiaoxiajianji.com](https://pr-499.preview.xiaoxiajianji.com) | | API环境 | staging | > 💡 预览环境使用 staging API 数据,请勿在预览环境中操作重要数据。 > > 🔄 每次提交新代码后预览环境会自动更新。 > > 🗑️ PR 关闭或合并后,预览环境会自动清理。
xiaoxia added 1 commit 2026-07-18 12:05:12 +08:00
fix(ci): 预览环境rsync安装兼容Alpine runner(apk替代apt-get)
CI Build & Deploy Pipeline / Build Staging Worker Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Build Staging Web Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Build Staging API Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Build Production API Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI Build & Deploy Pipeline / Staging E2E Tests (pull_request) Has been skipped
CI Build & Deploy Pipeline / Build Production Worker Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Build Production Web Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Staging API Integration Tests (pull_request) Has been skipped
CI Build & Deploy Pipeline / Deploy Production (pull_request) Has been skipped
CI Build & Deploy Pipeline / Production Browser E2E (pull_request) Has been skipped
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 19s
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 50s
CI/CD Pipeline / Validate Code Quality And Tests (pull_request) Failing after 43s
Auto Merge CI PRs / Auto Merge on CI Green + Approved (pull_request) Successful in 1m12s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 1m15s
AI Code Review / AI Code Review (pull_request) Successful in 2m1s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 1m25s
CI/CD Pipeline / Unit Tests (pull_request) Successful in 2m54s
Auto Approve CI PRs / Auto Approve on CI Green (pull_request) Successful in 3m19s
fadc8db9c7
runtime-builder标签的runner是Alpine系统,没有apt-get,
导致openssh-client和rsync安装失败。改为自动检测包管理器
(apk/apt-get/yum),兼容多种runner环境。
Collaborator

代码审查结果 - PR #499

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

  1. .gitea/workflows/preview-deploy.yml 第218行:使用 except Exception: pass 吞掉了所有异常。如果 curl 请求失败(如网络超时、API限流)或返回了非JSON格式的错误响应,脚本会静默失败,导致 EXISTING_COMMENT_ID 为空。这会使得每次运行都创建新的评论而不是更新旧评论,造成 PR 下评论重复堆积。建议移除该捕获或至少将错误输出到 stderr 并设置非零退出码。
  2. scripts/ci/preview_comment.py 第49-50行:未对环境变量 PR_NUMBERPREVIEW_URL 进行非空校验。如果环境变量未设置或为空(例如上游 Job 解析失败),脚本会生成格式错误的评论内容(如 PR # 或链接为空)并以状态码 0 退出,导致 CI 流程误判为成功并发布了无效信息。建议增加非空检查,缺失关键变量时应调用 sys.exit(1)

💡 建议(1个可选)

  1. scripts/ci/preview_comment.py 第48行:参数解析逻辑 sys.argv[1] if len(sys.argv) > 1 else "deploy" 存在隐式默认值风险。如果调用方忘记传参,脚本会默认执行 deploy 逻辑而非报错,这在 cleanup 场景下会导致逻辑错误。建议移除默认值,参数缺失时直接报错退出。

格式检查通过 | 逻辑审查需修改 | ⚠️ 建议关注性能


🤖 由 AI 代码审查机器人自动生成 | 2026-07-18 12:07:14 | 模型:

## 代码审查结果 - PR #499 ### ⚠️ 问题(2个需要修改) 1. **.gitea/workflows/preview-deploy.yml 第218行**:使用 `except Exception: pass` 吞掉了所有异常。如果 `curl` 请求失败(如网络超时、API限流)或返回了非JSON格式的错误响应,脚本会静默失败,导致 `EXISTING_COMMENT_ID` 为空。这会使得每次运行都创建新的评论而不是更新旧评论,造成 PR 下评论重复堆积。建议移除该捕获或至少将错误输出到 stderr 并设置非零退出码。 2. **scripts/ci/preview_comment.py 第49-50行**:未对环境变量 `PR_NUMBER` 和 `PREVIEW_URL` 进行非空校验。如果环境变量未设置或为空(例如上游 Job 解析失败),脚本会生成格式错误的评论内容(如 `PR #` 或链接为空)并以状态码 0 退出,导致 CI 流程误判为成功并发布了无效信息。建议增加非空检查,缺失关键变量时应调用 `sys.exit(1)`。 ### 💡 建议(1个可选) 1. **scripts/ci/preview_comment.py 第48行**:参数解析逻辑 `sys.argv[1] if len(sys.argv) > 1 else "deploy"` 存在隐式默认值风险。如果调用方忘记传参,脚本会默认执行 deploy 逻辑而非报错,这在 cleanup 场景下会导致逻辑错误。建议移除默认值,参数缺失时直接报错退出。 --- ✅ 格式检查通过 | ❌ 逻辑审查需修改 | ⚠️ 建议关注性能 --- <sub>🤖 由 AI 代码审查机器人自动生成 | 2026-07-18 12:07:14 | 模型: </sub> <!-- AI_CODE_REVIEW_AUTO_COMMENT -->
xiaoxia added 1 commit 2026-07-18 13:00:29 +08:00
fix(ci): 格式化preview_comment.py以通过black检查
CI Build & Deploy Pipeline / Build Staging API Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Build Staging Web Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Build Staging Worker Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Build Production API Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI Build & Deploy Pipeline / Build Production Worker Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Build Production Web Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Deploy Production (pull_request) Has been skipped
CI Build & Deploy Pipeline / Staging API Integration Tests (pull_request) Has been skipped
CI Build & Deploy Pipeline / Staging E2E Tests (pull_request) Has been skipped
CI Build & Deploy Pipeline / Production Browser E2E (pull_request) Has been skipped
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 21s
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 50s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 51s
CI/CD Pipeline / Validate Code Quality And Tests (pull_request) Successful in 2m26s
CI/CD Pipeline / Unit Tests (pull_request) Successful in 2m44s
Auto Approve CI PRs / Auto Approve on CI Green (pull_request) Successful in 3m14s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 1m19s
Auto Merge CI PRs / Auto Merge on CI Green + Approved (pull_request) Successful in 4m18s
Preview Cleanup / Cleanup Preview Environment (pull_request) Failing after 0s
AI Code Review / AI Code Review (pull_request) Successful in 7m7s
650f5aa4f6
auto-approve-bot approved these changes 2026-07-18 13:03:43 +08:00
auto-approve-bot left a comment
Collaborator

CI全绿,自动审批通过。

CI全绿,自动审批通过。
auto-approve-bot approved these changes 2026-07-18 13:03:43 +08:00
auto-approve-bot left a comment
Collaborator

CI全绿,自动审批通过。

CI全绿,自动审批通过。
auto-approve-bot merged commit 9cf48d493d into develop 2026-07-18 13:04:47 +08:00
auto-approve-bot deleted branch fix/preview-workflow-yaml 2026-07-18 13:04:47 +08:00
Sign in to join this conversation.