ci: do not trigger Build on PR description edits - #3729
Conversation
The Depends-On feature (commit 2aebae7) made the Build workflow trigger on PR description edits. A gate job checks whether the edit changed any Depends-On declaration: if yes, the build jobs run again with the new dependencies; on any other edit the gate skips all build jobs. The gate has a side effect that breaks PR check results. Skipped jobs still register check results on the PR, and the PR checks view shows the newest check run of each name. So after any description edit the PR shows "skipped" for every build check instead of the pass/fail from the real run. Re-running that newest run only repeats the skip, so the real results never come back. This can also hide a red X from a failed build. Fix by not triggering Build on description edits at all: remove the "edited" event type and the gate job. Depends-On keeps working: dependencies are read from the description at the start of every run against master, as before. Fetch-Source now re-reads the description through the API instead of using the copy stored in the event payload, so every run uses the current Depends-On state no matter how it was triggered. After editing a Depends-On line, retrigger CI by any of: - pushing new or rebased commits to the PR branch - closing and reopening the PR - pressing "Re-run all jobs" on the existing Build run A description edit alone no longer triggers anything, which is exactly the behavior that corrupted the PR check results. Signed-off-by: raiden00pl <raiden00@railab.me> Assisted-by: Claude Code
|
Thanks. Please rebase this onto the current master (including #3727) and re-run CI. |
|
Thanks for catching this and for the quick fix, @raiden00pl. Sorry for the breakage — the gate job was my addition in #3690 and I clearly missed this failure mode. Your analysis is exactly right: skipped jobs still register check results, and since the PR checks view shows the newest run per check name, any description edit replaced the real pass/fail with "skipped". The part that worries me most is the one you called out — it can mask a red X from a failed build. That makes the gate strictly worse than not having it at all. The fix looks right to me, and I don't think there is a smarter variant: GitHub has no workflow-level conditional, so once Re-reading the description through the API in I see you already opened apache/nuttx#19855 for the same fix on the OS side — thanks for doing both. Looks good to me. Merging both should get CI back to normal. Two things worth writing down, since the behaviour changes for authors:
One follow-up that is missing: |
cederom
left a comment
There was a problem hiding this comment.
Thank you @raiden00pl :-)
|
Ugh, CI failed :-( |
Summary
The Depends-On feature (commit 2aebae7) made the Build workflow
trigger on PR description edits. A gate job checks whether the edit
changed any Depends-On declaration: if yes, the build jobs run again
with the new dependencies; on any other edit the gate skips all build
jobs.
The gate has a side effect that breaks PR check results. Skipped jobs
still register check results on the PR, and the PR checks view shows
the newest check run of each name. So after any description edit the
PR shows "skipped" for every build check instead of the pass/fail
from the real run. Re-running that newest run only repeats the skip,
so the real results never come back. This can also hide a red X from
a failed build.
Fix by not triggering Build on description edits at all: remove the
"edited" event type and the gate job.
Depends-On keeps working: dependencies are read from the description
at the start of every run against master, as before. Fetch-Source now
re-reads the description through the API instead of using the copy
stored in the event payload, so every run uses the current Depends-On
state no matter how it was triggered.
After editing a Depends-On line, retrigger CI by any of:
- pushing new or rebased commits to the PR branch
- closing and reopening the PR
- pressing "Re-run all jobs" on the existing Build run
A description edit alone no longer triggers anything, which is
exactly the behavior that corrupted the PR check results.
Impact
try to fix #3690 (comment)
Testing
none, must be checked upstream