Skip to content

Commit dd780d5

Browse files
committed
CLAUDE.md: document the Checks-API relay trigger flow
Signed-off-by: Trevor Gamblin <tgamblin@baylibre.com>
1 parent 3873974 commit dd780d5

1 file changed

Lines changed: 18 additions & 11 deletions

File tree

‎CLAUDE.md‎

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -33,18 +33,29 @@ name, repo, version, upstream build docs — come from the invoking prompt):
3333
**`.claude/worktrees/<pkg>`** inside this repo (locally ignored via `.git/info/exclude`).
3434
Never put a worktree — or anything else — outside the repository.
3535
2. Add `.github/workflows/build-<pkg>.yml` following the playbook below.
36-
3. Validate locally (gotcha 9), then push to `origin` and open a PR. A build only
37-
starts from a `Trigger: <pkg>:<tag>` line in the **PR description** — one per
38-
version you want built (`Trigger: numpy:v2.5.1`), which `pr-trigger.yml` picks
39-
up. Editing the workflow file alone does not start a build.
36+
3. Validate locally (gotcha 9), then push to `origin` and open a PR with a
37+
`Trigger: <pkg>:<tag>` line in the **PR description** for every version you want
38+
built (`Trigger: numpy:v2.5.1`). `build-<pkg>.yml` is `workflow_dispatch`-only —
39+
it has no `pull_request` trigger of its own, so a `Trigger:` line is the only
40+
thing that ever starts a run; editing the workflow file alone does nothing.
41+
`pr-trigger.yml` parses the directives, dispatches each via `workflow_dispatch`,
42+
and posts one GitHub Check Run per directive through the Checks API — a
43+
properly named, real check on the PR (`build-<pkg>.yml @ <version>`) whose
44+
"Details" link goes straight to the dispatched run, with real
45+
pending/success/failure/cancelled status mirrored via `gh run watch`.
4046
4. Watch CI, triage failures, iterate until every matrix job is green and the
4147
`publish` job dry-runs cleanly.
4248
5. When the wheels build and tests pass, reply to any review threads, then
4349
record reusable, project-agnostic learnings back into this file.
4450

4551
## Anatomy of a build-<pkg>.yml
4652

47-
Standard triggers (copy from an existing workflow):
53+
Standard trigger (copy from an existing workflow) — `workflow_dispatch` only, no
54+
`pull_request` block. A per-package `pull_request: paths` trigger was tried and
55+
dropped: with 40+ package workflows, any PR touching several of their files fired
56+
that many separate (mostly skipped) runs, flooding the Actions list for no benefit
57+
— `pr-trigger.yml`'s Checks-API relay (step 3 above) gives the same visible,
58+
per-directive status without it:
4859

4960
```yaml
5061
on:
@@ -53,10 +64,6 @@ on:
5364
version: { description: '<pkg> version/tag', required: true, default: '<latest stable>' }
5465
```
5566
56-
`workflow_dispatch` is the only trigger — no `pull_request` trigger. A build only ever starts
57-
via a manual dispatch or a `Trigger: <pkg>:<tag>` line in a PR description, which `pr-trigger.yml`
58-
turns into a `workflow_dispatch` call. Editing/pushing the workflow file itself must not start a build.
59-
6067
UV env vars (`UV_EXTRA_INDEX_URL`, `UV_INDEX_STRATEGY`, `UV_ONLY_BINARY`) are **only** needed
6168
if the workflow has steps that actually invoke `uv` (e.g. an sdist-build job on `ubuntu-latest`
6269
that uses `setup-uv`). For pure cibuildwheel build-from-checkout workflows with no `uv` steps,
@@ -212,8 +219,8 @@ upload without the docs-PR side effect.
212219

213220
6. **Wire up real testing** — mirror how upstream tests its wheels (gotcha 6).
214221

215-
7. **Validate locally, then push** (gotcha 9). Open a PR, add a `Trigger:
216-
<pkg>:<tag>` line to its description to start CI. Watch, triage, iterate.
222+
7. **Validate locally, then push** (gotcha 9). Open a PR; the `pull_request` path
223+
trigger runs CI. Watch, triage, iterate.
217224

218225
## Gotchas (the "wish I knew from the start" list)
219226

0 commit comments

Comments
 (0)