ci: test cross-built macos arm64 binaries #35774

pull willcl-ark wants to merge 3 commits into bitcoin:master from willcl-ark:macos-cross-ci-test changing 3 files +127 −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-->

    Code Coverage & Benchmarks

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

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

  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. ci: enable cross-archive/os caching
    This allows cross-built binaries to be shared with a native host.
    138df7d930
  9. ci: move macos cross into own job
    Include new binary caching steps needed in the dependant job.
    672f8f0238
  10. ci: test macos cross arm64 binaries
    Run test_bitcoin and test_bitcoin-qt on native hardware.
    ab86ef440b
  11. willcl-ark force-pushed on Jul 22, 2026
  12. willcl-ark marked this as ready for review on Jul 22, 2026
  13. DrahtBot removed the label CI failed on Jul 22, 2026
  14. 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.

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

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


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-07-31 20:50 UTC

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