ci: remove commit count limit from test-each-commit #34383

pull l0rinc wants to merge 1 commits into bitcoin:master from l0rinc:l0rinc/ci-compile-untested-commits changing 1 files +5 −13
  1. 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.

  2. DrahtBot added the label Tests on Jan 22, 2026
  3. 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.

    Code Coverage & Benchmarks

    For details see: https://corecheck.dev/bitcoin/bitcoin/pulls/34383.

    Reviews

    See the guideline for information on the review process. A summary of reviews will appear here.

    Conflicts

    Reviewers, this pull request conflicts with the following ones:

    • #30342 (kernel, logging: Pass Logger instances to kernel objects by ryanofsky)
    • #29700 (kernel, refactor: return error status on all fatal errors by ryanofsky)
    • #26022 (Add util::ResultPtr class by ryanofsky)
    • #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.

  4. l0rinc force-pushed on Jan 22, 2026
  5. DrahtBot added the label CI failed on Jan 22, 2026
  6. DrahtBot commented at 10:14 pm on January 22, 2026: contributor

    🚧 At least one of the CI tasks failed. Task lint: https://github.com/bitcoin/bitcoin/actions/runs/21265870531/job/61204792016 LLM reason (✨ experimental): Lint failure: a file is not executable (ci-compile-each-commit-exec.py has 644 permission).

    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.

  7. l0rinc marked this as ready for review on Jan 22, 2026
  8. DrahtBot removed the label CI failed on Jan 23, 2026
  9. 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?

  10. l0rinc marked this as a draft on Jan 23, 2026
  11. l0rinc force-pushed on Jan 23, 2026
  12. l0rinc force-pushed on Jan 23, 2026
  13. DrahtBot added the label CI failed on Jan 23, 2026
  14. l0rinc renamed this:
    ci: compile remaining untested ancestor commits
    ci: run unit + functional tests on all ancestor commits
    on Jan 23, 2026
  15. 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).
  16. l0rinc marked this as ready for review on Jan 23, 2026
  17. DrahtBot removed the label CI failed on Jan 23, 2026
  18. 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?

  19. 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

  20. 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.

  21. 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.

  22. l0rinc commented at 8:54 am on January 26, 2026: contributor
    you mean that f21162d8193319d3cdd43cecd66ee5389632533b was already skipped by CI?
  23. maflcko commented at 9:08 am on January 26, 2026: member

    you mean that f21162d was already skipped by CI?

    The commit is both a child of a merge commit and also a subtree commit of a different repo. You can also check the behavior here https://github.com/bitcoin/bitcoin/actions/runs/21197620806/job/60976836032?pr=34363, which is another subtree bump.

  24. 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
  25. l0rinc force-pushed on Jan 26, 2026
  26. 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
  27. 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.

github-metadata-mirror

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