Run Zephyr tests in their own workflow - #11294
Merged
Merged
Conversation
The `ports` job depends on `tests`, and `tests` is the whole of run-tests.yml, which contained both the VM test matrix and the Zephyr job. A called workflow is not complete until every job in it is, so no board in any port started building until the Zephyr job had finished its west setup, built native_sim and bsim, and run the port's tests. That happened on every pull request, including ones touching no Zephyr code. Move the Zephyr job into run-zephyr-tests.yml and call it from build.yml alongside `tests`, but deliberately not in `ports`' `needs`. The job body is byte-identical and still runs on every pull request. Two consequences worth naming, since the job body being unchanged does not make them so: The check run is now named `zephyr-tests / zephyr` rather than `tests / zephyr`. Branch protection lists required checks by name, so it needs updating if it names the old one. That rename also changes ci_changes_per_commit.py, which prefix-matches check names against have_dependent_jobs = ["scheduler", "mpy-cross", "tests"]. A failed Zephyr job used to match and disable the resume-from- last-checked-commit optimization entirely. It no longer matches, and the result is discarded, which is correct now that nothing depends on it. It is deliberately not added to that list. Also add the new workflow to IGNORE_BOARD in ci_set_matrix.py, next to run-tests.yml. Without it, editing the file falls through to the "build it all" case and rebuilds every board in the repo. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
tannewt
requested changes
Sep 2, 2026
tannewt
left a comment
Member
There was a problem hiding this comment.
One comment we don't need. Good otherwise. This sort of thing is better documented by git history than inline code comment.
Per review: the reason belongs in git history, not an inline comment. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Collaborator
Author
|
Here we go! |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Zephyr tests move to their own workflow, out of the
portsdependency chain.Why
Board builds in every port waited on the Zephyr job, every PR.
Changes
run-zephyr-tests.ymlzephyrjob, body byte-identical.run-tests.ymlrun.build.ymlzephyr-tests, absent fromports'needs.tools/ci_set_matrix.pyIGNORE_BOARD.Needs a maintainer action
Branch protection lists required checks by name. This renames one.
tests / zephyrzephyr-tests / zephyrSide effect of the rename
The rename also changes
ci_changes_per_commit.py. Correct, but worth naming.Why not gate the Zephyr job on changed files
It exercises core
py/andshared-*. Reordering is safe, skipping is not.Trade-off
A red Zephyr job no longer stops board jobs from spending compute.
Hardware tested
None. Workflow change only.
How I tested it
Scope
Job wiring only. The Zephyr job body is unchanged.
Not in this PR:
deps/ports/zephyr-cp, which cachesnothing today.
main.AI assistance
Claude Code traced the dependency chain and wrote the diff.