ci: Reword stale readme #36574

pull maflcko wants to merge 3 commits into bitcoin:master from maflcko:2610-2610-ci-readme changing 1 files +26 −16
  1. maflcko commented at 9:50 AM on October 19, 2026: member

    The ci readme is a bit stale, so update it.

  2. DrahtBot renamed this:
    ci: Reword stale readme
    ci: Reword stale readme
    on Oct 19, 2026
  3. DrahtBot added the label Tests on Oct 19, 2026
  4. DrahtBot commented at 9:50 AM on October 19, 2026: contributor

    <!--e57a25ab6845829454e8d69fc972939a-->

    The following sections might be updated with supplementary metadata relevant to reviewers and maintainers.

    <!--006a51241073e994b41acfe9ec718e94-->

    External sites

    <!--021abf342d371248e50ceaed478a90ca-->

    Reviews

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

    <!--5faf32d7da4f0f540f40219e4f7537a3-->

  5. ci: Update binfmt qemu note
    Modern container engines ship QEMU by default. So installing
    qemu-user-static is not always needed.
    
    Also, docker.io/multiarch/qemu-user-static hasn't been updated in years
    and the replacement according to the Docker docs is tonistiigi/binfmt.
    fabc10bc59
  6. maflcko force-pushed on Oct 19, 2026
  7. DrahtBot added the label CI failed on Oct 19, 2026
  8. DrahtBot removed the label CI failed on Oct 19, 2026
  9. in ci/README.md:75 in faa4478b1a outdated
      71 | @@ -72,6 +72,18 @@ packages on each run. For faster incremental builds, there are also container
      72 |  volumes to hold the results of the dependency-generator from `../depends` and
      73 |  to hold `ccache` results.
      74 |  
      75 | +## Pinning dependencies
    


    l0rinc commented at 4:59 PM on October 20, 2026:

    faa4478 ci: Add a note on pinning dependencies:

    I don't agree with this, but I won't block the change. These are all valid statements, but it's not complete.

    pins can delay normal and security updates until the next bump

    They can also do the opposite silently update to a buggy version - we've seen this before, it's not theoretical.

    It does not constrain recursive downloads at runtime

    Sure, they don't fix every single thing that could go wrong, but when things do, it helps in narrowing down what caused the inconsistency.

    it could create a false sense of reproducibility and security

    I don't see how that's different from what we're doing now, we're already pinning some versions and commits and hashes, where is the threshold for "sense of security"? In the same way as we're pinning C++ includes lately to reduce the number of moving parts, I would push towards pinning as much as we can in the externally controllable dependencies so that more changes are under our control - even if it won't ever be 100%. I don't like that each CI run is magically slightly different without notice...


    maflcko commented at 8:25 AM on October 21, 2026:

    They can also do the opposite silently update to a buggy version - we've seen this before, it's not theoretical.

    I don't think this was ever seen in this CI. Do you mind providing a link where a buggy version lead to a CI bug that would have been prevented by a pin?

    Sure, they don't fix every single thing that could go wrong, but when things do, it helps in narrowing down what caused the inconsistency.

    We don't even consistently track stuff that goes wrong in internal test code. E.g. #35919#event-33782256873 silently re-runs an intermittent failure without reporting it.

    I don't mind pinning, but if someone wants to do it, they'll have to explain what the expectations are around the review effort required for the maintenance churn. Ideally with a real-world observable benefit (e.g. an instance in the past where it would have helped).

    I don't see how that's different from what we're doing now, we're already pinning some versions and commits and hashes, where is the threshold for "sense of security"?

    Those pins are not for security. They are to catch transport and storage errors.

    I don't like that each CI run is magically slightly different without notice...

    The CI should be robust to pass on diverse underlying hardware and software, and it has extended logging, so that if something goes wrong, one can trace the logs to find the exact difference that caused a different outcome.


    I don't feel too strongly here, so I am happy to drop this commit, but I think it can't hurt to explain the status-quo and it should be trivial to adjust or remove the doc in the future, if there is a rationale.


    l0rinc commented at 8:39 AM on October 21, 2026:

    Do you mind providing a link where a buggy version lead to a CI bug that would have been prevented by a pin?

    When the socket availability in the 32-bit Docker containers was suddenly changed in #35202

    E.g. #35919#event-33782256873 silently re-runs an intermittent failure without reporting it.

    It was a Windows timeout, see https://github.com/bitcoin/bitcoin/actions/runs/39458100061/job/118756715796

    The CI should be robust to pass on diverse underlying hardware and software

    Yes, but we should know what that software is, it shouldn't just change without notice.


    maflcko commented at 8:50 AM on October 21, 2026:

    When the socket availability in the 32-bit Docker containers was suddenly changed in #35202

    docker isn't pinned and I don't think it can be pinned, as this is something the sysadmin provides and not the ci system. So I don't think this is relevant to pinning. In fact, it is a rationale against pinning, because that very docker update had a "CVE fix", so if docker were somehow pinned, users would continue running with the "vulnerable" docker, unless a bump was submitted and users backported that bump to all commit they are running the ci on.

    Again, I don't mind pinning, but my preference would be:

    • to have a rationale for it, ideally with an applicable real-world example; and
    • to have a policy explained to minimize the review effort and maintenance churn.

    l0rinc commented at 9:07 AM on October 21, 2026:

    so if docker were somehow pinned, users would continue running with the "vulnerable" docker

    No, we would provide a PR to fix it, just like we did when it broke when third parties decided to push the changes to our CI - except that we wouldn't be spectators.

  10. Hamza1610 commented at 5:14 PM on October 20, 2026: none

    Changes from ./depends to ../depends make sense if the reader understand that it's describing with relative to the ci/ directory. However some readers might think this is relative to the root directory of the project, because of commands like ./ci/test_run_all.sh are run from the root . I would suggest you clarify on the path references.

  11. ci: Reword readme
    * Remove note that scripts are ordered. They are not:
      02_run_container.py runs before 01_base_install.sh and some scripts
      have no number: GetCMakeLogFiles.cmake, wrap-valgrind.py, ...
    * Clarify that the CI cache also covers container images and ccache.
    fa5edac158
  12. ci: Add a note on pinning dependencies faebf98d5b
  13. maflcko force-pushed on Oct 21, 2026
  14. maflcko commented at 8:26 AM on October 21, 2026: member

    I would suggest you clarify on the path references.

    thx, dropped the change instead. Seems better to leave paths as-is.


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-10-21 18:51 UTC

This site is hosted by @0xB10C
More mirrored repositories can be found on mirror.b10c.me