[moz] fix(ci): 修复 deploy push trigger 不触发问题 #75

Merged
jiangwei-infra merged 2 commits from fix/cd-push-trigger-yaml into main 2026-06-14 08:31:36 +00:00
Owner

根因

deploy.yml notify-deploy-success job 中 python3 -c 使用多行字符串,Python 代码(import json, sys 等)零缩进(column 0),破坏了 YAML literal block scalar(run: |),导致 Gitea 报错:

ignore invalid workflow "deploy.yml": yaml: line 114: could not find expected :

DetectWorkflows() 阶段被静默丢弃,push 事件无法触发 deploy workflow。

Gitea 日志证据

.../actions/workflows.go:143:DetectWorkflows() [W] ignore invalid workflow "deploy.yml": yaml: line 114: could not find expected :

修复

将多行 python3 -c 改为单行,避免零缩进代码行破坏 YAML 块结构。

影响

  • 仅改 deploy.yml 1 行(多行→单行)
  • 不影响 ci.yml 和 e2e.yml
  • deploy.sh 不动

验证

  • YAML 解析通过
  • PR 合并后 push 事件触发 deploy.yml
## 根因 deploy.yml `notify-deploy-success` job 中 `python3 -c` 使用多行字符串,Python 代码(`import json, sys` 等)零缩进(column 0),破坏了 YAML literal block scalar(`run: |`),导致 Gitea 报错: ``` ignore invalid workflow "deploy.yml": yaml: line 114: could not find expected : ``` 在 `DetectWorkflows()` 阶段被**静默丢弃**,push 事件无法触发 deploy workflow。 ## Gitea 日志证据 ``` .../actions/workflows.go:143:DetectWorkflows() [W] ignore invalid workflow "deploy.yml": yaml: line 114: could not find expected : ``` ## 修复 将多行 `python3 -c` 改为单行,避免零缩进代码行破坏 YAML 块结构。 ## 影响 - 仅改 deploy.yml 1 行(多行→单行) - 不影响 ci.yml 和 e2e.yml - deploy.sh 不动 ## 验证 - [x] YAML 解析通过 - [ ] PR 合并后 push 事件触发 deploy.yml
jiangwei-infra added 1 commit 2026-06-14 08:29:00 +00:00
[moz] fix(ci): 修复 deploy push trigger 不触发问题
CI / lint (pull_request) Successful in 7s
CI / test (pull_request) Successful in 28s
CI / notify-on-failure (pull_request) Successful in 0s
aad5a6b317
根因:deploy.yml notify-deploy-success job 中 python3 -c 使用多行字符串,
Python 代码零缩进(column 0)破坏了 YAML literal block scalar (run: |),
导致 Gitea YAML 解析器报错 'line 114: could not find expected :',
在 DetectWorkflows 阶段被静默丢弃,push 事件无法触发 deploy。

Gitea 日志证据:
  ignore invalid workflow "deploy.yml": yaml: line 114: could not find expected ':'

修复:将多行 python3 -c 改为单行,避免零缩进代码行破坏 YAML 块结构。

影响范围:仅 deploy.yml,不影响 ci.yml 和 e2e.yml
验证方式:YAML 解析已通过,合并后观察 push 事件是否触发 Actions
simayi-challenger approved these changes 2026-06-14 08:29:46 +00:00
simayi-challenger left a comment
Member

🗡️ 司马懿审查 — PR #75

审查结论: APPROVED

改动概述

deploy.yml 中 PR 作者查询的 Python 脚本从多行改为一行。纯重构,逻辑等价。

等价性验证

维度 旧(多行) 新(一行) 一致
匹配条件 merge_sha.startswith(sha) or sha.startswith(merge_sha) 相同
首次匹配 for + break matches[0]
空结果处理 循环结束无输出 → shell || echo "" print(matches[0] if matches else "")
None 处理 (pr.get("merge_commit_sha","") or "") 相同

边界条件

  • 空列表:matches=[]print("") → shell fallback
  • merge_commit_sha 为 None:.get("","") or "" → 安全
  • 多个匹配:matches[0] = 列表第一个 = 同旧逻辑 break

建议(不阻断)

  • S1: 单行可读性略差,但 inline python 在 YAML 中本就脆弱,可接受

1 文件 +1/-9,风险级别:低。逻辑等价,可以合并。

## 🗡️ 司马懿审查 — PR #75 **审查结论:✅ APPROVED** ### 改动概述 deploy.yml 中 PR 作者查询的 Python 脚本从多行改为一行。纯重构,逻辑等价。 ### 等价性验证 | 维度 | 旧(多行) | 新(一行) | 一致 | |------|-----------|-----------|------| | 匹配条件 | `merge_sha.startswith(sha) or sha.startswith(merge_sha)` | 相同 | ✅ | | 首次匹配 | for + break | `matches[0]` | ✅ | | 空结果处理 | 循环结束无输出 → shell `\|\| echo ""` | `print(matches[0] if matches else "")` | ✅ | | None 处理 | `(pr.get("merge_commit_sha","") or "")` | 相同 | ✅ | ### 边界条件 - 空列表:`matches=[]` → `print("")` → shell fallback ✅ - merge_commit_sha 为 None:`.get("","") or ""` → 安全 ✅ - 多个匹配:`matches[0]` = 列表第一个 = 同旧逻辑 break ✅ ### 建议(不阻断) - S1: 单行可读性略差,但 inline python 在 YAML 中本就脆弱,可接受 1 文件 +1/-9,风险级别:低。逻辑等价,可以合并。
jiangwei-infra added 1 commit 2026-06-14 08:30:23 +00:00
Merge branch 'main' into fix/cd-push-trigger-yaml
CI / lint (pull_request) Successful in 7s
CI / test (pull_request) Successful in 27s
CI / frontend (pull_request) Successful in 11s
CI / notify-on-failure (pull_request) Successful in 0s
8df1d4a83c
jiangwei-infra merged commit b926b35703 into main 2026-06-14 08:31:36 +00:00
Member

审查意见(司马懿 post-merge review)

风险级别:低 | 结论: Approve

审查清单

检查项 结果
正确性 — 逻辑等价 多行→单行 list comprehension,双向 startswith 匹配逻辑完全一致
正确性 — YAML 修复 消除零缩进 Python 代码行,不再破坏 run: | literal block scalar
正确性 — Python 语法 单行语法正确
安全性 无硬编码密钥
一致性 与同文件 notify-deploy-failure job 的单行写法风格一致
可维护性 单行较长但属 CI 配置常见模式

逻辑等价性已验证:原代码遍历+break 与新代码 list comprehension[0] 行为一致。

⚠️ PR 已合并,无法提交正式 Review,以 comment 形式留痕。

## 审查意见(司马懿 post-merge review) **风险级别:低** | **结论:✅ Approve** ### 审查清单 | 检查项 | 结果 | |--------|------| | 正确性 — 逻辑等价 | ✅ 多行→单行 list comprehension,双向 startswith 匹配逻辑完全一致 | | 正确性 — YAML 修复 | ✅ 消除零缩进 Python 代码行,不再破坏 `run: \|` literal block scalar | | 正确性 — Python 语法 | ✅ 单行语法正确 | | 安全性 | ✅ 无硬编码密钥 | | 一致性 | ✅ 与同文件 notify-deploy-failure job 的单行写法风格一致 | | 可维护性 | ✅ 单行较长但属 CI 配置常见模式 | 逻辑等价性已验证:原代码遍历+break 与新代码 list comprehension[0] 行为一致。 > ⚠️ PR 已合并,无法提交正式 Review,以 comment 形式留痕。
Sign in to join this conversation.