ci: test cross-built macos arm64 binaries #35774

pull willcl-ark wants to merge 2 commits into bitcoin:master from willcl-ark:macos-cross-ci-test changing 1 files +89 −6
  1. willcl-ark commented at 1:04 PM on July 22, 2026: member

    Currently we have some macos cross-built binaries, which are using depends as opposed to brew in the native macos builds, but these binaries are not being tested, culminating in silent breakages like #35771

    Build test_bitcoin-qt in macos_cross, and test the binaries in a subsequent job.

    the macos_cross job is removed from ci-matrix as otherwise the new macos-cross-arm64 test job has to wait for all matrix jobs to finish (successfully) before running. This includes some of our slow jobs, and will needlessly inflate CI runtimes.

    Doing this does add some more boilerplate into ci.yml, but IMO this is acceptable (and the best option currently).

  2. DrahtBot added the label Tests on Jul 22, 2026
  3. DrahtBot commented at 1:04 PM on July 22, 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.

    Type Reviewers
    Concept ACK fanquake

    If your review is incorrectly listed, please copy-paste <code>&lt;!--meta-tag:bot-skip--&gt;</code> into the comment that the bot should ignore.

    <!--174a7506f384e20aa4161008e828411d-->

    Conflicts

    No conflicts as of last run.

    <!--5faf32d7da4f0f540f40219e4f7537a3-->

  4. in .github/workflows/ci.yml:637 in a74438ce1a outdated
     632 | +        with:
     633 | +          path: macos-arm64-binaries.tar
     634 | +          key: macos-arm64-binaries-${{ github.run_id }}
     635 | +          provider: ${{ github.repository == 'bitcoin/bitcoin' && 'warp' || 'gha' }}
     636 | +          enable-cross-os-archive: true
     637 | +          enable-cross-arch-archive: true
    


    maflcko commented at 1:15 PM on July 22, 2026:

    Seems a bit tedious to use the cache for this? Why not use a artifact, like the pre-existing windows tests and like d40e61e87cfb18f75742c2efa6e705f38e3b36c9?


    willcl-ark commented at 1:54 PM on July 22, 2026:

    I intentionally used cache vs artefact as Warp don't have an [upload|download]-artifact action, and relying on GH infra upload/download speed has been ... not the most ideal thing to do in recent times.


    maflcko commented at 12:01 PM on July 30, 2026:

    Hmm, yeah, the GH cache seemed slow at some point in the past, but is it also true for artifacts?

    Side-topic: macOS/Windows are still using the GHA cache and moving Windows was closed in #35683

    Also, the GHA cache is still 200GB, so maybe it can be reduced again a bit (maybe to 20GB), given that only macOS/Windows are using it?

    Also, the windows-cross-to-native tasks are still using artifacts.

    No strong opinion. I just wonder if artifcats are also slow and if inconsistent handling is worth it.


    maflcko commented at 3:44 PM on November 5, 2026:

    Happy to review this pull, but still wondering about this:

    • Is this measurably faster?
    • If yes, why not use it for Windows as well?
    • If no, why not just use plain simple GHA for consistency?

    Not a blocker. Happy to give this a best-effort review, but I am wondering.

  5. in .github/workflows/ci.yml:585 in a74438ce1a outdated
     576 | @@ -583,6 +577,110 @@ jobs:
     577 |          with:
     578 |            provider: ${{ matrix.provider || (github.repository == 'bitcoin/bitcoin' && 'warp' || 'gha') }}
     579 |  
     580 | +  macos-cross-arm64:
     581 | +    name: 'macOS-cross to arm64'
     582 | +    runs-on: ${{ github.repository == 'bitcoin/bitcoin' && 'warp-ubuntu-latest-x64-4x' || 'ubuntu-latest' }}
     583 | +    if: ${{ vars.SKIP_BRANCH_PUSH != 'true' || github.event_name == 'pull_request' }}
     584 | +    timeout-minutes: 120
     585 | +
    


    maflcko commented at 1:16 PM on July 22, 2026:

    This must be frozen to record-frozen-commit, otherwise, the CI will fail due to non-determinism?


    willcl-ark commented at 1:58 PM on July 22, 2026:

    Done ready for next push

  6. in ci/test/00_setup_env_mac_cross.sh:19 in a74438ce1a
      15 | @@ -16,7 +16,7 @@ export XCODE_VERSION=26.1.1
      16 |  export XCODE_BUILD_ID=17B100
      17 |  export RUN_UNIT_TESTS=false
      18 |  export RUN_FUNCTIONAL_TESTS=false
      19 | -export GOAL="deploy"
      20 | +export GOAL="test_bitcoin-qt deploy"
    



    willcl-ark commented at 1:58 PM on July 22, 2026:

    Because I didn't realise deploy was already building that :)

    Commit will be dropped in next push.

  7. DrahtBot added the label CI failed on Jul 22, 2026
  8. willcl-ark force-pushed on Jul 22, 2026
  9. willcl-ark marked this as ready for review on Jul 22, 2026
  10. DrahtBot removed the label CI failed on Jul 22, 2026
  11. fanquake commented at 1:38 PM on July 23, 2026: member

    Concept ACK given #35771. Similar to Windows, we should have a CI that is natively testing the release-like cross built bins.

  12. fanquake commented at 11:06 AM on July 30, 2026: member

    Could rebase, and put this on top of #35838?

  13. sedited commented at 8:42 AM on September 11, 2026: contributor

    @willcl-ark can you do the requested rebase here?

  14. willcl-ark force-pushed on Sep 11, 2026
  15. willcl-ark commented at 8:44 AM on September 11, 2026: member

    Rebased

  16. fanquake added this to the milestone 33.0 on Sep 24, 2026
  17. sedited requested review from maflcko on Nov 4, 2026
  18. willcl-ark force-pushed on Nov 6, 2026
  19. in .github/workflows/ci.yml:563 in 0f573277d8
     559 | @@ -566,6 +560,94 @@ jobs:
     560 |          with:
     561 |            provider: ${{ matrix.provider || (github.repository == 'bitcoin/bitcoin' && 'warp' || 'gha') }}
     562 |  
     563 | +  macos-cross-arm64:
    


    maflcko commented at 8:57 AM on November 6, 2026:

    nit: Can you move this right next to the windows ones, so that it is easy to see/review the copy-pasted parts?


    willcl-ark commented at 9:19 AM on November 6, 2026:

    Done.

  20. maflcko approved
  21. maflcko commented at 8:58 AM on November 6, 2026: member

    lgtm

  22. ci: move macos cross into own job
    Give the arm64 cross-build a separate job so native tests can depend on
    its completion without waiting for unrelated matrix builds.
    1f9bdd448a
  23. ci: test macos cross arm64 binaries
    Run test_bitcoin and test_bitcoin-qt on native arm64 hardware to exercise
    the cross-built binaries. Transfer the binaries and test fixture through
    GitHub artifacts, matching the Windows cross-build jobs. Keep them in a
    tar archive to preserve executable permissions. Limit the native job to
    120 minutes so hung tests cannot occupy a runner for six hours.
    e7ddc816e4
  24. willcl-ark force-pushed on Nov 6, 2026
  25. willcl-ark commented at 9:20 AM on November 6, 2026: member

    Addressed @maflcko's comment, and added the missing timout suggested by ralph in: git range-diff 0f573277d888d07247197add0a60bf5331cbdc48...e7ddc816e4bf1b84b0013f56c6f7754e2a0406b2

  26. DrahtBot added the label CI failed on Nov 6, 2026
  27. DrahtBot removed the label CI failed on Nov 6, 2026
  28. fanquake requested review from hebasto on Nov 6, 2026
  29. in .github/workflows/ci.yml:414 in e7ddc816e4
     409 | +      FILE_ENV: './ci/test/00_setup_env_mac_cross.sh'
     410 | +
     411 | +    steps:
     412 | +      - *ANNOTATION_PR_NUMBER
     413 | +
     414 | +      - *CHECKOUT
    


    maflcko commented at 3:36 PM on November 6, 2026:

    This isn't copy-pasted correctly? Maybe use a template?


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-11-13 23:51 UTC

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