Inside Bitcoin
Opening the selected file…
Inside Bitcoin
Opening the selected file…
The code behind the network, with room to understand it.
Release published 2026-10-28 · Snapshot fetched 2026-11-01. Latest stable release at fetch time; development branches and Git history are excluded. Only the selected code window and visible folders load here.
252- name: Generate build system253run: |254py -3 .github/ci-windows.py ${{ matrix.job-type }} generate256- name: Save vcpkg binary cache257uses: actions/cache/save@v5258if: github.event_name != 'pull_request' && github.ref_name == github.event.repository.default_branch && steps.vcpkg-binary-cache.outputs.cache-hit != 'true' && matrix.job-type == 'standard'259with:260path: ~/AppData/Local/vcpkg/archives261key: ${{ steps.vcpkg-binary-cache.outputs.cache-primary-key }}263- name: Save vcpkg downloads cache264uses: actions/cache/save@v5265# Only save cache from the 'standard' job, as it includes the necessary downloads for other jobs in the matrix. If the matrix is modified, this may need amending.266if: github.event_name != 'pull_request' && github.ref_name == github.event.repository.default_branch && steps.vcpkg-binary-cache.outputs.cache-hit != 'true' && steps.vcpkg-downloads-cache.outputs.cache-hit != 'true' && matrix.job-type == 'standard'267with:268# Cache the tools once as archives, but not redundantly in extracted form.269path: |270~/AppData/Local/vcpkg/downloads/*271!~/AppData/Local/vcpkg/downloads/tools272key: ${{ steps.vcpkg-downloads-cache.outputs.cache-primary-key }}274- name: Build275run: |276py -3 .github/ci-windows.py ${{ matrix.job-type }} build278- name: Check executable manifests279run: |280py -3 .github/ci-windows.py ${{ matrix.job-type }} check_manifests282- name: Prepare tests283run: |284py -3 .github/ci-windows.py ${{ matrix.job-type }} prepare_tests286- name: Run tests287env:288TEST_RUNNER_EXTRA: "--timeout-factor=${{ env.TEST_RUNNER_TIMEOUT_FACTOR }} ${{ case(github.event_name == 'pull_request', '', '--extended') }}"289run: |290py -3 .github/ci-windows.py ${{ matrix.job-type }} run_tests292record-frozen-commit:293# Record frozen commit, so that the native tests on cross-builds can run on294# the exact same commit id of the build.295name: '[meta] record frozen commit'296runs-on: ubuntu-slim297outputs:298commit: ${{ steps.record-commit.outputs.commit }}299steps:300- *ANNOTATION_PR_NUMBER301- *CHECKOUT302- name: Record commit303id: record-commit304run: echo "commit=$(git rev-parse HEAD)" >> "$GITHUB_OUTPUT"306windows-cross:307name: 'Windows-cross to x86_64, ${{ matrix.crt }}'308needs: record-frozen-commit309runs-on: ${{ github.repository == 'bitcoin/bitcoin' && 'warp-ubuntu-latest-x64-4x' || 'ubuntu-latest' }}310if: ${{ vars.SKIP_BRANCH_PUSH != 'true' || github.event_name == 'pull_request' }}312strategy:313fail-fast: false314matrix:315crt: [msvcrt, ucrt]316include:317- crt: msvcrt318file-env: './ci/test/00_setup_env_win64_msvcrt.sh'319artifact-name: 'x86_64-w64-mingw32-executables'320- crt: ucrt321file-env: './ci/test/00_setup_env_win64.sh'322artifact-name: 'x86_64-w64-mingw32ucrt-executables'324env:325FILE_ENV: ${{ matrix.file-env }}326DANGER_CI_ON_HOST_FOLDERS: 1328steps:329- *ANNOTATION_PR_NUMBER331- name: Checkout332uses: actions/checkout@v6333with:334ref: ${{ needs.record-frozen-commit.outputs.commit }}336- name: Configure environment337uses: ./.github/actions/configure-environment339- name: Restore caches340id: restore-cache341uses: ./.github/actions/cache/restore342with:343provider: ${{ github.repository == 'bitcoin/bitcoin' && 'warp' || 'gha' }}345- name: Configure Docker346uses: ./.github/actions/configure-docker347with:348provider: ${{ github.repository == 'bitcoin/bitcoin' && 'warp' || 'gha' }}350- name: CI script351run: ./ci/test_run_all.sh353- name: Save caches354uses: ./.github/actions/cache/save355with:356provider: ${{ github.repository == 'bitcoin/bitcoin' && 'warp' || 'gha' }}358- name: Upload built executables359uses: actions/upload-artifact@v7360with:361name: ${{ matrix.artifact-name }}-${{ github.run_id }}362path: |363${{ env.BASE_BUILD_DIR }}/bin/*.dll364${{ env.BASE_BUILD_DIR }}/bin/*.exe365${{ env.BASE_BUILD_DIR }}/src/secp256k1/bin/*.exe366${{ env.BASE_BUILD_DIR }}/src/univalue/*.exe367${{ env.BASE_BUILD_DIR }}/test/config.ini369windows-native-test:370name: 'Windows, ${{ matrix.crt }}, test cross-built'371runs-on: windows-2022372needs: [windows-cross, record-frozen-commit]374strategy:375fail-fast: false376matrix:377crt: [msvcrt, ucrt]378include:379- crt: msvcrt380artifact-name: 'x86_64-w64-mingw32-executables'381- crt: ucrt382artifact-name: 'x86_64-w64-mingw32ucrt-executables'384env:385PYTHONUTF8: 1386TEST_RUNNER_TIMEOUT_FACTOR: 40388steps:389- *ANNOTATION_PR_NUMBER391- name: Checkout392uses: actions/checkout@v6393with:394ref: ${{ needs.record-frozen-commit.outputs.commit }}396- name: Download built executables397uses: actions/download-artifact@v8398with:399name: ${{ matrix.artifact-name }}-${{ github.run_id }}401- name: Run bitcoind.exe402run: py -3 .github/ci-windows-cross.py print_version404- *IMPORT_VS_ENV406- name: Check imported DLLs407env:408CRT: ${{ matrix.crt }}409run: py -3 .github/ci-windows-cross.py check_imports411- name: Check executable manifests412run: py -3 .github/ci-windows-cross.py check_manifests414- name: Prepare Windows test environment415run: py -3 .github/ci-windows-cross.py prepare_tests417- name: Run unit tests418run: py -3 .github/ci-windows-cross.py run_unit_tests420- name: Run functional tests421env:422TEST_RUNNER_EXTRA: "--timeout-factor=${{ env.TEST_RUNNER_TIMEOUT_FACTOR }} ${{ case(github.event_name == 'pull_request', '', '--extended') }}"423run: |424py -3 .github/ci-windows-cross.py run_functional_tests426ci-matrix:427name: ${{ matrix.name }}428runs-on: ${{ github.repository == 'bitcoin/bitcoin' && matrix.warp-runner || matrix.fallback-runner }}429if: ${{ vars.SKIP_BRANCH_PUSH != 'true' || github.event_name == 'pull_request' }}430timeout-minutes: ${{ matrix.timeout-minutes }}432env:433DANGER_CI_ON_HOST_FOLDERS: 1434FILE_ENV: ${{ matrix.file-env }}436strategy:437fail-fast: false438matrix:439include:440- name: 'iwyu'441warp-runner: 'warp-ubuntu-latest-x64-8x'442fallback-runner: 'ubuntu-latest'443timeout-minutes: 120444file-env: './ci/test/00_setup_env_native_iwyu.sh'446- name: '32 bit ARM'447warp-runner: 'ubuntu-24.04-arm' # Warp's Arm runners don't support 32-bit mode currently448fallback-runner: 'ubuntu-24.04-arm'449timeout-minutes: 120450file-env: './ci/test/00_setup_env_arm.sh'451provider: 'gha'453- name: 'ASan + LSan + UBSan + integer'454warp-runner: 'warp-ubuntu-2404-x64-8x' # has to match container in ci/test/00_setup_env_native_asan.sh for tracing tools455fallback-runner: 'ubuntu-24.04'456timeout-minutes: 120457file-env: './ci/test/00_setup_env_native_asan.sh'459- name: 'macOS-cross to arm64'460warp-runner: 'warp-ubuntu-latest-x64-4x'461fallback-runner: 'ubuntu-latest'462timeout-minutes: 120463file-env: './ci/test/00_setup_env_mac_cross.sh'465- name: 'macOS-cross to x86_64'466warp-runner: 'warp-ubuntu-latest-x64-4x'467fallback-runner: 'ubuntu-latest'468timeout-minutes: 120469file-env: './ci/test/00_setup_env_mac_cross_intel.sh'471- name: 'NetBSD Cross'472warp-runner: 'warp-ubuntu-latest-x64-8x'473fallback-runner: 'ubuntu-latest'474timeout-minutes: 120475file-env: './ci/test/00_setup_env_netbsd_cross.sh'477- name: 'FreeBSD Cross'478warp-runner: 'warp-ubuntu-latest-x64-8x'479fallback-runner: 'ubuntu-latest'480timeout-minutes: 120481file-env: './ci/test/00_setup_env_freebsd_cross.sh'483- name: 'OpenBSD Cross'484warp-runner: 'warp-ubuntu-latest-x64-8x'485fallback-runner: 'ubuntu-latest'486timeout-minutes: 120487file-env: './ci/test/00_setup_env_openbsd_cross.sh'489- name: 'No wallet'490warp-runner: 'warp-ubuntu-latest-x64-4x'491fallback-runner: 'ubuntu-latest'492timeout-minutes: 120493file-env: './ci/test/00_setup_env_native_nowallet.sh'495- name: 'i686, no IPC'496warp-runner: 'warp-ubuntu-latest-x64-8x'497fallback-runner: 'ubuntu-latest'498timeout-minutes: 120499file-env: './ci/test/00_setup_env_i686_no_ipc.sh'
Independent explanations by MyBitcoinExplorer. Not affiliated with or endorsed by Bitcoin Core. Guides are educational and do not replace the source or its tests.
Bitcoin Core source © its contributors, distributed under the MIT license. Original notices and bundled third-party licenses are retained in the source tree.