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.
1name: CI2on:3pull_request:4push:5branches:6- '**'7tags-ignore:8- '**'9schedule:10# Run on the default branch every Monday morning.11# This also warms the Docker caches after key rotation.12- cron: '22 2 * * 1'14concurrency:15group: ${{ github.event_name != 'pull_request' && github.run_id || github.ref }}16cancel-in-progress: true18env:19### compiler options20HOST:21WRAPPER_CMD:22# Specific warnings can be disabled with -Wno-error=foo.23# -pedantic-errors is not equivalent to -Werror=pedantic and thus not implied by -Werror according to the GCC manual.24WERROR_CFLAGS: '-Werror -pedantic-errors'25MAKEFLAGS: '-j4'26BUILD: 'check'27### secp256k1 config28ECMULTWINDOW: 1529ECMULTGENKB: 8630ASM: 'no'31WIDEMUL: 'auto'32WITH_VALGRIND: 'yes'33EXTRAFLAGS:34### secp256k1 modules35EXPERIMENTAL: 'no'36ECDH: 'no'37RECOVERY: 'no'38EXTRAKEYS: 'no'39SCHNORRSIG: 'no'40MUSIG: 'no'41ELLSWIFT: 'no'42SILENTPAYMENTS: 'no'43### test options44SECP256K1_TEST_ITERS: 6445BENCH: 'yes'46SECP256K1_BENCH_ITERS: 247CTIMETESTS: 'yes'48SYMBOL_CHECK: 'yes'49# Compile and run the examples.50EXAMPLES: 'yes'51# Disable Docker build summary generation.52# See https://github.com/docker/build-push-action/blob/master/README.md#environment-variables.53DOCKER_BUILD_SUMMARY: false55jobs:56docker_cache:57name: "Build ${{ matrix.arch }} Docker image"58runs-on: ${{ matrix.runner }}59outputs:60cache_scope: ${{ steps.cache_timestamp.outputs.period }}62strategy:63fail-fast: false64matrix:65include:66- arch: x6467runner: ubuntu-latest68- arch: arm6469runner: ubuntu-24.04-arm71steps:72- name: Get cache validity period73id: cache_timestamp74run: echo "period=$((10#$(date +%V) / 4))" >> "$GITHUB_OUTPUT"76- name: Set up Docker Buildx77uses: docker/setup-buildx-action@v478with:79# See: https://github.com/moby/buildkit/issues/3969.80driver-opts: |81network=host83- name: Build container84uses: docker/build-push-action@v785with:86file: ./ci/linux-debian.Dockerfile87cache-from: type=gha,scope=${{ runner.arch }}-${{ steps.cache_timestamp.outputs.period }}88cache-to: type=gha,scope=${{ runner.arch }}-${{ steps.cache_timestamp.outputs.period }},mode=min90x86_64-debian:91name: "x86_64: Linux (Debian stable)"92runs-on: ubuntu-latest93needs: docker_cache95strategy:96fail-fast: false97matrix:98configuration:99- env_vars: { WIDEMUL: 'int64', RECOVERY: 'yes' }100- env_vars: { WIDEMUL: 'int64', ECDH: 'yes', EXTRAKEYS: 'yes', SCHNORRSIG: 'yes', MUSIG: 'yes', ELLSWIFT: 'yes', SILENTPAYMENTS: 'yes' }101- env_vars: { WIDEMUL: 'int128' }102- env_vars: { WIDEMUL: 'int128_struct', ELLSWIFT: 'yes' }103- env_vars: { WIDEMUL: 'int128', RECOVERY: 'yes', EXTRAKEYS: 'yes', SCHNORRSIG: 'yes', MUSIG: 'yes', ELLSWIFT: 'yes' }104- env_vars: { WIDEMUL: 'int128', ECDH: 'yes', EXTRAKEYS: 'yes', SCHNORRSIG: 'yes', MUSIG: 'yes', SILENTPAYMENTS: 'yes' }105- env_vars: { WIDEMUL: 'int128', ASM: 'x86_64', ELLSWIFT: 'yes' }106- env_vars: { RECOVERY: 'yes', EXTRAKEYS: 'yes', SCHNORRSIG: 'yes', MUSIG: 'yes' }107- env_vars: { CTIMETESTS: 'no', RECOVERY: 'yes', ECDH: 'yes', EXTRAKEYS: 'yes', SCHNORRSIG: 'yes', MUSIG: 'yes', SILENTPAYMENTS: 'yes', CPPFLAGS: '-DVERIFY' }108- env_vars: { BUILD: 'distcheck', WITH_VALGRIND: 'no', CTIMETESTS: 'no', BENCH: 'no' }109- env_vars: { CPPFLAGS: '-DDETERMINISTIC' }110- env_vars: { CFLAGS: '-O0', CTIMETESTS: 'no' }111- env_vars: { CFLAGS: '-O1', RECOVERY: 'yes', ECDH: 'yes', EXTRAKEYS: 'yes', SCHNORRSIG: 'yes', MUSIG: 'yes', ELLSWIFT: 'yes', SILENTPAYMENTS: 'yes' }112- env_vars: { ECMULTGENKB: 2, ECMULTWINDOW: 2 }113- env_vars: { ECMULTGENKB: 86, ECMULTWINDOW: 4 }114cc:115- 'gcc'116- 'clang'117- 'gcc-snapshot'118- 'clang-snapshot'120env:121CC: ${{ matrix.cc }}123steps:124- &CHECKOUT125name: Checkout126uses: actions/checkout@v5128- &CI_SCRIPT_IN_DOCKER129name: CI script130env: ${{ matrix.configuration.env_vars }}131uses: ./.github/actions/run-in-docker-action132with:133dockerfile: ./ci/linux-debian.Dockerfile134scope: ${{ runner.arch }}-${{ needs.docker_cache.outputs.cache_scope }}135command: ./ci/ci.sh137- &PRINT_LOGS138name: Print logs139uses: ./.github/actions/print-logs140if: ${{ !cancelled() }}142i686_debian:143name: "i686: Linux (Debian stable)"144runs-on: ubuntu-latest145needs: docker_cache147strategy:148fail-fast: false149matrix:150configuration:151- env_vars: {}152cc:153- 'i686-linux-gnu-gcc'154- 'clang --target=i686-pc-linux-gnu -isystem /usr/i686-linux-gnu/include'156env:157HOST: 'i686-linux-gnu'158ECDH: 'yes'159RECOVERY: 'yes'160EXTRAKEYS: 'yes'161SCHNORRSIG: 'yes'162MUSIG: 'yes'163ELLSWIFT: 'yes'164SILENTPAYMENTS: 'yes'165CC: ${{ matrix.cc }}167steps:168- *CHECKOUT169- *CI_SCRIPT_IN_DOCKER170- *PRINT_LOGS172s390x_debian:173name: "s390x (big-endian): Linux (Debian stable, QEMU)"174runs-on: ubuntu-latest175needs: docker_cache177strategy:178matrix:179configuration:180- env_vars: {}182env:183WRAPPER_CMD: 'qemu-s390x'184SECP256K1_TEST_ITERS: 16185HOST: 's390x-linux-gnu'186WITH_VALGRIND: 'no'187ECDH: 'yes'188RECOVERY: 'yes'189EXTRAKEYS: 'yes'190SCHNORRSIG: 'yes'191MUSIG: 'yes'192ELLSWIFT: 'yes'193SILENTPAYMENTS: 'yes'194CTIMETESTS: 'no'196steps:197- *CHECKOUT198- *CI_SCRIPT_IN_DOCKER199- *PRINT_LOGS201arm32_debian:202name: "ARM32: Linux (Debian stable, QEMU)"203runs-on: ubuntu-latest204needs: docker_cache206strategy:207fail-fast: false208matrix:209configuration:210- env_vars: {}211- env_vars: { EXPERIMENTAL: 'yes', ASM: 'arm32' }213env:214WRAPPER_CMD: 'qemu-arm'215SECP256K1_TEST_ITERS: 16216HOST: 'arm-linux-gnueabihf'217WITH_VALGRIND: 'no'218ECDH: 'yes'219RECOVERY: 'yes'220EXTRAKEYS: 'yes'221SCHNORRSIG: 'yes'222MUSIG: 'yes'223ELLSWIFT: 'yes'224SILENTPAYMENTS: 'yes'225CTIMETESTS: 'no'227steps:228- *CHECKOUT229- *CI_SCRIPT_IN_DOCKER230- *PRINT_LOGS232arm64-debian:233name: "arm64: Linux (Debian stable)"234runs-on: ubuntu-24.04-arm235needs: docker_cache237env:238SECP256K1_TEST_ITERS: 16239WITH_VALGRIND: 'no'240ECDH: 'yes'241RECOVERY: 'yes'242EXTRAKEYS: 'yes'243SCHNORRSIG: 'yes'244MUSIG: 'yes'245ELLSWIFT: 'yes'246SILENTPAYMENTS: 'yes'247CTIMETESTS: 'no'248CC: ${{ matrix.cc }}250strategy:
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.