Prhub

#25987 [CI] Fix bot-cherry-pick: use state == "MERGED" instead of invalid `merged` field

原始 PR 作者 Kangyan-Zhou 合并时间 2026-05-21 20:10 文件变更 1 提交数 1 评论 1 代码增减 +2 / -3

执行摘要

修复 bot-cherry-pick 的合并状态检测

PR #25981 更新了 bot-cherry-pick 工作流,但首次触发时由于 merged 字段无效而失败(报错 Unknown JSON field: merged)。需要修复合并状态检测逻辑,确保工作流正常运行。

该 PR 是紧急修复工作流缺陷的简单变更,值得部署以恢复 bot-cherry-pick 功能。

讨论亮点

该 PR 无 review 评论,变更直截了当。

实现拆解

  1. 修改 .github/workflows/bot-cherry-pick.yml 中的 gh pr view 命令,从请求字段中移除无效的 merged 字段。
  2. 将 PR 是否已合并的判断条件从 MERGED != "true" 改为 STATE != "MERGED",使用 state 字段的 MERGED 值来判断合并状态。
文件 模块 状态 重要度
.github/workflows/bot-cherry-pick.yml CI modified 3.6

关键源码片段

.github/workflows/bot-cherry-pick.yml infrastructure

工作流实际定义文件,本 PR 的所有变更均在此文件内完成。

# 修正后的 PR 信息获取与合并状态检查逻辑
# 之前使用了无效字段 `merged`,导致 gh CLI 报错
if ! PR_JSON=$(gh pr view "$PR_NUMBER" --repo "$GITHUB_REPOSITORY" --json state,mergeCommit,title,number,url); then
    echo "::error::Failed to fetch PR #$PR_NUMBER from $GITHUB_REPOSITORY (see gh output above)."
    exit 1
fiSTATE=$(jq -r '.state' <<<"$PR_JSON") # 从 JSON 中提取 state 字段# 使用 state == "MERGED" 判断 PR 是否合并(之前误用 '.merged' 布尔字段)
if [[ "$STATE" != "MERGED" ]]; then
    echo "::error::PR #$PR_NUMBER is not merged (state=$STATE). Only merged PRs can be cherry-picked."
    exit 1
fi

评论区精华

没有提炼出高价值讨论线程

当前评论区没有形成足够清晰的争议点或结论,后续有更多讨论时会体现在这里。

风险与影响

风险极低:变更仅涉及两个条件表达式的调整,且与 CI 工作流运行结果直接对齐。若 gh pr view --json state 返回的 state 字段值在极端情况下有大写/小写差异,可能导致判断失败,但 GitHub CLI 保证该值为大写 MERGED

仅影响 bot-cherry-pick 工作流,确保其能正确判断 PR 是否已合并,从而正常执行 cherry-pick 操作。

CI 工作流依赖修复

关联 Issue

未识别关联 Issue

当前没有检测到明确关联的 Issue 链接,后续同步到相关引用后会出现在这里。

完整报告

参与讨论