Mid-stack PRs miss stack-aware `pull_request` triggers: PRs are created before the stack object exists
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức phù hợp với người mới
- 45/100
Hướng nghiên cứu
Bắt đầu từ luồng gh stack submit và tái hiện stack gồm bốn nhánh với workflow pull_request được lọc cho main. Theo dõi thời điểm các PR thành viên được tạo, thời điểm stack được đăng ký và cách quan sát hành vi kích hoạt workflow thông qua các check suite. Hoàn tất khi mọi PR thành viên đều nhận được lần chạy workflow như mong đợi, bao gồm cả các PR ở giữa stack được tạo trước khi stack được đăng ký.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
What happened
On gh stack submit, PRs are created a few seconds before the stack object itself exists. pull_request workflows with a branches: filter are evaluated against each PR's literal base at open time, so mid-stack PRs are filtered out and never dispatched. They are not re-evaluated once the stack is registered, so they permanently show no checks.
This contradicts the documented behaviour in Optimizing CI for stacked pull requests: "A workflow configured to run on pull_request events targeting main runs for every pull request in the stack."
Reproduction
-
In a repo with the stacks preview enabled, add a workflow with:
on: pull_request: branches: [ "main" ] -
Create a 4-branch stack and
gh stack submit. -
Observe CI runs only on the bottom PR and the topmost PR. The middle PRs get a check suite with zero runs.
Observed timeline
Stack of 4 (PRs #10–#13, stack #14, stack.base.ref = main, size: 4):
| Time (UTC) | Event | Workflow dispatched |
|---|---|---|
| 13:24:13 | PR #10 opened (7 → main) |
yes — literal base is already main |
| 13:24:17 | PR #11 opened (8 → 7) |
no — check suite 85146388656, latest_check_runs_count: 0 |
| 13:24:21 | PR #12 opened (9 → 8) |
no — check suite 85146406327, latest_check_runs_count: 0 |
| 13:24:24 | PR #13 opened (10 → 9) |
no — first check suite, 0 runs |
| 13:24:26 | stack #14 created (GET /repos/{owner}/{repo}/stacks/14 → created_at) |
|
| 13:24:31 | second check suite on PR #13's head | yes — this is the run that appears |
The bottom PR runs because its base is literally main, independent of any stack awareness. The top PR runs because its dispatch landed after stack registration at 13:24:26 and got a second check suite. PRs #11 and #12 had their opened events fully processed before the stack existed, were rejected by the branches: [main] filter, and nothing re-dispatched them afterwards.
Reproduced identically on an earlier stack of 3 in the same repo: bottom PR ran, middle skipped, top ran.
Expected behavior
Every PR in the stack is evaluated against stack.base.ref, as documented — either by creating the stack before its PRs, or by re-evaluating pull_request workflow triggers for all member PRs once the stack is registered.
Actual behavior
Only PRs whose trigger evaluation happens after stack registration get stack-aware treatment. Mid-stack PRs are silently left with no checks, which is indistinguishable from "queued" and blocks merge on repos with required checks.
Not a duplicate of
- #319 — merge refs are healthy here:
refs/pull/{10,11,12,13}/mergeall exist and point at current commits, and all four PRs reportmergeable: true. - #379 — that concerns
pathsfilters being selected from the topmost PR. This isbranchesfilters and a registration-ordering race; the affected PRs get a check suite with zero runs rather than a workflow selected from the wrong PR.
Workaround
Remove the branches: filter from the pull_request trigger so CI runs regardless of base.
- Ngôn ngữ chính
- Go
- Star
- 1.5k
- Fork
- 73
- Merge trung bình
- 1 ngày 8 giờ
- Pull request đã merge (30 ngày)
- 7
Hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của github/gh-stack
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 85/100
-
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 92/100
-
feature request topic: cli - general
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
-
feature request topic: auto-merge
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
-
bug topic: docs
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 68/100
Tất cả issue của github/gh-stack
Issue tương tự
-
area/dev-productivity area/disaster-recovery area/ipcei kind/enhancement
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 70/100
-
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 85/100
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
-
kind/bug status/0-triage
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
-
🤔 refinement needed
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
equinor/radix-operator#1979 ·