Skip to content

Check Changeset 从事件载荷读 skip-changeset 标签:开 PR 后 5 秒内加标签,首个 run 永久红(重跑复用载荷)—— 一日三例 #5580

Description

@os-zhuang

发现于 devx 车道当日三个 PR 的同款竞态,按查重先行确认无既有单(changeset-check label payload 检索仅命中登记表)。

签名(一日三例)

PR 创建(opened 事件)后数秒内加 skip-changeset 标签,则:

  • opened 事件触发的 Check Changeset run 读事件载荷里的标签集(当时为空)→ 走计数路径 → 无 changeset → ;
  • 标签落上后,labeled 事件的新 run → skipped(正确);
  • 但首个红 run 永久红:rerun_failed_jobs 复用原事件载荷(Operational notes 5 的语义),重跑多少次都不会看见后来的标签。
现场 处置
PR #5467(该门禁文案自己的修复 PR) 红 run 被后续 skipped 取代,带着 stale 红合并
PR #5501 dev 用一次真实 labeled/synchronize 事件顶掉
PR #5577 标签在位,stale 红挂着(非必需检查,不阻塞)

每例的直接成本:一个需要人/agent 停下来「认签名解释掉」的红检查 —— 恰好是 merge-queue-triage、PM 复核、事件订阅三方都会各自撞一次的噪音源。

建议修法

pr-automation.yml 的 changeset-check 在 job 内实时读标签(gh api repos/$REPO/issues/$PR/labels 或等价物)替代 contains(github.event.pull_request.labels.*.name, ...) 的载荷读法 —— 这样首个 run 也能看见「创建后、运行前」落上的标签;重跑也随实时状态收敛。事件载荷读法保留为 fast-path 亦可(载荷有标签 → 直接 skip,无标签 → API 再确认一次)。

注意与该 job 现行「⛔ 不改计数逻辑」边界的关系:本单只动标签读取时机,不动 BASE_SHA diff 计数(#5292/PR #5467 的修正照旧)。

关联

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions