l0rinc
commented at 9:38 pm on January 22, 2026:
contributor
Problem
test-each-commit currently tests only a limited number of ancestor commits in a PR, so failures introduced deeper in the commit stack might be missed.
Fix
Remove the max-count limit so test-each-commit runs the full build + unit + functional test flow on every non-head PR commit, while keeping the PR tip excluded because it is already covered by the normal CI jobs.
Note: this PR has gone through a few other versions, the latest one just extends the existing job.
DrahtBot added the label
Tests
on Jan 22, 2026
DrahtBot
commented at 9:38 pm on January 22, 2026:
contributor
The following sections might be updated with supplementary metadata relevant to reviewers and maintainers.
#25722 (refactor: Use util::Result class for wallet loading by ryanofsky)
If you consider this pull request important, please also help to review the conflicting pull requests. Ideally, start with the one that should be merged first.
l0rinc force-pushed
on Jan 22, 2026
DrahtBot added the label
CI failed
on Jan 22, 2026
DrahtBot
commented at 10:14 pm on January 22, 2026:
contributor
Try to run the tests locally, according to the documentation. However, a CI failure may still
happen due to a number of reasons, for example:
Possibly due to a silent merge conflict (the changes in this pull request being
incompatible with the current code in the target branch). If so, make sure to rebase on the latest
commit of the target branch.
A sanitizer issue, which can only be found by compiling with the sanitizer and running the
affected test.
An intermittent issue.
Leave a comment here, if you need help tracking down a confusing failure.
l0rinc marked this as ready for review
on Jan 22, 2026
DrahtBot removed the label
CI failed
on Jan 23, 2026
maflcko
commented at 8:48 am on January 23, 2026:
member
ci-test-each-commit-exec.py
unrelated note: I think this script is missing the functional test runner --failfast option. A failure will lead to a massive log output with all failures collected, which is hard to read and debug. It would be better to just print the first failure.
More generally, I wonder if it wouldn’t be easier to just run it on all commits. I guess the timeout could be raised to the max (6 hours), possibly using a cirrus runner.
If a pull request doesn’t finish after 6 hours on a 16 core machine, then it is probably too large and should be split up?
If it isn’t possible to split up, one or two reviewers can run the script locally?
l0rinc marked this as a draft
on Jan 23, 2026
l0rinc force-pushed
on Jan 23, 2026
l0rinc force-pushed
on Jan 23, 2026
DrahtBot added the label
CI failed
on Jan 23, 2026
l0rinc renamed this:
ci: compile remaining untested ancestor commits
ci: run unit + functional tests on all ancestor commits
on Jan 23, 2026
l0rinc
commented at 5:13 pm on January 23, 2026:
contributor
Thanks @maflcko, split the previous test-each-commit into two, updated PR title&description (kept old branch name though).
l0rinc marked this as ready for review
on Jan 23, 2026
DrahtBot removed the label
CI failed
on Jan 23, 2026
maflcko
commented at 8:17 am on January 26, 2026:
member
Ah, with “it” I meant “pull request”, not “the ci task here”.
If a pull request doesn’t finish after 6 hours on a 16 core machine, then it is probably too large and should be split up?
Was there ever a pull request in history that wouldn’t compile and test all commits in 6 hours on a modern 16 core machine?
l0rinc
commented at 8:20 am on January 26, 2026:
contributor
Was there ever a pull request in history that wouldn’t compile and test all commits in 6 hours on a modern 16 core machine?
let’s find out
l0rinc
commented at 8:21 am on January 26, 2026:
contributor
the leveldb and crc32 updates don’t always compile, but I couldn’t find any other
edit: e.g. first commit of #33641 fails with util/env_posix.cc:857:24: error: no template named 'is_standard_layout_v' in namespace 'std'; did you mean 'is_standard_layout'? And 9a5d29711afcdc4609da4786673758e641958bb4 also fails with old cmake requirement.
maflcko
commented at 8:32 am on January 26, 2026:
member
the leveldb and crc32 updates don’t always compile, but I couldn’t find any other
edit: e.g. first commit of #33641 fails with util/env_posix.cc:857:24: error: no template named 'is_standard_layout_v' in namespace 'std'; did you mean 'is_standard_layout'? And 9a5d297 also fails with old cmake requirement.
That pull request has a single commit, so it seems impossible for it to time out. Also, if it timed-out the current CI task would time out as well.
If you want to actually test this, my recommendation would be to only look at pulls with more than 6 commits.
l0rinc
commented at 8:54 am on January 26, 2026:
contributor
you mean that f21162d8193319d3cdd43cecd66ee5389632533b was already skipped by CI?
maflcko
commented at 9:08 am on January 26, 2026:
member
ci: remove commit count limit from `test-each-commit`
Extend `test-each-commit` to run on every non-head pull request commit.
The PR tip is excluded because it is already covered by other CI jobs.
Co-authored-by: MarcoFalke <*~=`'#}+{/-|&$^_@721217.xyz>
d5964cee95
l0rinc force-pushed
on Jan 26, 2026
l0rinc renamed this:
ci: run unit + functional tests on all ancestor commits
ci: remove commit count limit from `test-each-commit`
on Jan 26, 2026
l0rinc
commented at 4:05 pm on January 26, 2026:
contributor
Thanks for the feedback, the latest version of the PR simply removes the 6 commit limit from test-each-commit job.
This is a metadata mirror of the GitHub repository
bitcoin/bitcoin.
This site is not affiliated with GitHub.
Content is generated from a GitHub metadata backup.
generated: 2026-01-27 06:13 UTC
This site is hosted by @0xB10C More mirrored repositories can be found on mirror.b10c.me