From fabdd4e82342b57e8e7750c5292e9fe0d598105b Mon Sep 17 00:00:00 2001 From: MarcoFalke <*~=`'#}+{/-|&$^_@721217.xyz> Date: Wed, 4 Feb 2026 09:23:49 +0100 Subject: [PATCH 1/8] ci: Refactor Windows CI into script This makes it easier to: * Run the exact command of any CI type and step locally * Re-Run older CI tasks on GHA and using the latest merged config. (.github/ci-windows.py is merged with master on re-runs, but .github/workflows/ci.yml is NOT) Also, writing it in Python has benefits: * Any developer (even non-Windows ones) can read and modify the script. * Python is already required for tests, so no new dependency is needed. --- .github/ci-windows.py | 71 ++++++++++++++++++++++++++++++++++++++++ .github/workflows/ci.yml | 4 +-- 2 files changed, 72 insertions(+), 3 deletions(-) create mode 100755 .github/ci-windows.py diff --git a/.github/ci-windows.py b/.github/ci-windows.py new file mode 100755 index 00000000000..142fee7bac2 --- /dev/null +++ b/.github/ci-windows.py @@ -0,0 +1,71 @@ +#!/usr/bin/env python3 +# Copyright (c) The Bitcoin Core developers +# Distributed under the MIT software license, see the accompanying +# file COPYING or https://opensource.org/license/mit/. + +import argparse +import os +import shlex +import subprocess +import sys + + +def run(cmd, **kwargs): + print("+ " + shlex.join(cmd), flush=True) + kwargs.setdefault("check", True) + try: + return subprocess.run(cmd, **kwargs) + except Exception as e: + sys.exit(str(e)) + + +GENERATE_OPTIONS = { + "standard": [ + "-DBUILD_BENCH=ON", + "-DBUILD_KERNEL_LIB=ON", + "-DBUILD_UTIL_CHAINSTATE=ON", + "-DCMAKE_COMPILE_WARNING_AS_ERROR=ON", + ], + "fuzz": [ + "-DVCPKG_MANIFEST_NO_DEFAULT_FEATURES=ON", + "-DVCPKG_MANIFEST_FEATURES=wallet", + "-DBUILD_GUI=OFF", + "-DWITH_ZMQ=OFF", + "-DBUILD_FOR_FUZZING=ON", + "-DCMAKE_COMPILE_WARNING_AS_ERROR=ON", + ], +} + + +def generate(ci_type): + toolchain_file = os.path.join( + os.environ["VCPKG_INSTALLATION_ROOT"], + "scripts", + "buildsystems", + "vcpkg.cmake", + ) + command = [ + "cmake", + "-B", + "build", + "-Werror=dev", + "--preset", + "vs2022", + f"-DCMAKE_TOOLCHAIN_FILE={toolchain_file}", + ] + GENERATE_OPTIONS[ci_type] + run(command) + + +def main(): + parser = argparse.ArgumentParser(description="Utility to run Windows CI steps.") + parser.add_argument("ci_type", choices=GENERATE_OPTIONS, help="CI type to run.") + steps = ["generate"] + parser.add_argument("step", choices=steps, help="CI step to perform.") + args = parser.parse_args() + + if args.step == "generate": + generate(args.ci_type) + + +if __name__ == "__main__": + main() diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8257f565c01..f293b06e53e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -218,10 +218,8 @@ jobs: job-type: [standard, fuzz] include: - job-type: standard - generate-options: '-DBUILD_BENCH=ON -DBUILD_KERNEL_LIB=ON -DBUILD_UTIL_CHAINSTATE=ON -DCMAKE_COMPILE_WARNING_AS_ERROR=ON' job-name: 'Windows native, VS 2022' - job-type: fuzz - generate-options: '-DVCPKG_MANIFEST_NO_DEFAULT_FEATURES=ON -DVCPKG_MANIFEST_FEATURES="wallet" -DBUILD_GUI=OFF -DWITH_ZMQ=OFF -DBUILD_FOR_FUZZING=ON -DCMAKE_COMPILE_WARNING_AS_ERROR=ON' job-name: 'Windows native, fuzz, VS 2022' steps: @@ -272,7 +270,7 @@ jobs: - name: Generate build system run: | - cmake -B build -Werror=dev --preset vs2022 -DCMAKE_TOOLCHAIN_FILE="${VCPKG_INSTALLATION_ROOT}/scripts/buildsystems/vcpkg.cmake" ${{ matrix.generate-options }} + py -3 .github/ci-windows.py ${{ matrix.job-type }} generate - name: Save vcpkg binary cache uses: actions/cache/save@v4 From 4444808dd3a704ec0f5d97e2c736cc917656c491 Mon Sep 17 00:00:00 2001 From: MarcoFalke <*~=`'#}+{/-|&$^_@721217.xyz> Date: Wed, 4 Feb 2026 10:14:32 +0100 Subject: [PATCH 2/8] ci: [refactor] Add .github/ci-windows.py build step Note, the use of process_cpu_count() is intentional. It was only added in Python 3.13, according to https://docs.python.org/3/library/os.html#os.process_cpu_count . However, Python 3.13 is also the minimum required version on Windows, according to https://github.com/bitcoin/bitcoin/issues/29897#issuecomment-2940318094 to avoid intermittent test failures. --- .github/ci-windows.py | 17 ++++++++++++++++- .github/workflows/ci.yml | 3 +-- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/.github/ci-windows.py b/.github/ci-windows.py index 142fee7bac2..5d28ed0b855 100755 --- a/.github/ci-windows.py +++ b/.github/ci-windows.py @@ -56,15 +56,30 @@ def generate(ci_type): run(command) +def build(): + command = [ + "cmake", + "--build", + "build", + "-j", + str(os.process_cpu_count()), + "--config", + "Release", + ] + run(command) + + def main(): parser = argparse.ArgumentParser(description="Utility to run Windows CI steps.") parser.add_argument("ci_type", choices=GENERATE_OPTIONS, help="CI type to run.") - steps = ["generate"] + steps = ["generate", "build"] parser.add_argument("step", choices=steps, help="CI step to perform.") args = parser.parse_args() if args.step == "generate": generate(args.ci_type) + elif args.step == "build": + build() if __name__ == "__main__": diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f293b06e53e..75590d1d926 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -280,9 +280,8 @@ jobs: key: ${{ github.job }}-vcpkg-binary-${{ hashFiles('cmake_version', 'msbuild_version', 'toolset_version', 'vcpkg.json') }} - name: Build - working-directory: build run: | - cmake --build . -j $NUMBER_OF_PROCESSORS --config Release + py -3 .github/ci-windows.py ${{ matrix.job-type }} build - name: Check executable manifests if: matrix.job-type == 'standard' From fa3e607c6dfb220684a65638b35ac5a4d3b1fcb7 Mon Sep 17 00:00:00 2001 From: MarcoFalke <*~=`'#}+{/-|&$^_@721217.xyz> Date: Wed, 4 Feb 2026 10:22:35 +0100 Subject: [PATCH 3/8] ci: Print verbose Windows CI build failure --- .github/ci-windows.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/ci-windows.py b/.github/ci-windows.py index 5d28ed0b855..d99ba2d97ec 100755 --- a/.github/ci-windows.py +++ b/.github/ci-windows.py @@ -61,12 +61,12 @@ def build(): "cmake", "--build", "build", - "-j", - str(os.process_cpu_count()), "--config", "Release", ] - run(command) + if run(command + ["-j", str(os.process_cpu_count())], check=False).returncode != 0: + print("Build failure. Verbose build follows.") + run(command + ["-j1", "--verbose"]) def main(): From fa561682ce4052bed91fac11f8fc872af5132437 Mon Sep 17 00:00:00 2001 From: MarcoFalke <*~=`'#}+{/-|&$^_@721217.xyz> Date: Fri, 6 Feb 2026 09:24:34 +0100 Subject: [PATCH 4/8] ci: [refactor] Add .github/ci-windows.py prepare_tests step --- .github/ci-windows.py | 25 ++++++++++++++++++++++++- .github/workflows/ci.yml | 13 ++++--------- 2 files changed, 28 insertions(+), 10 deletions(-) diff --git a/.github/ci-windows.py b/.github/ci-windows.py index d99ba2d97ec..d797814da1a 100755 --- a/.github/ci-windows.py +++ b/.github/ci-windows.py @@ -69,10 +69,31 @@ def build(): run(command + ["-j1", "--verbose"]) +def prepare_tests(ci_type): + if ci_type == "standard": + run([sys.executable, "-m", "pip", "install", "pyzmq"]) + elif ci_type == "fuzz": + repo_dir = os.path.join(os.environ["RUNNER_TEMP"], "qa-assets") + clone_cmd = [ + "git", + "clone", + "--depth=1", + "https://github.com/bitcoin-core/qa-assets", + repo_dir, + ] + run(clone_cmd) + print("Using qa-assets repo from commit ...") + run(["git", "-C", repo_dir, "log", "-1"]) + + def main(): parser = argparse.ArgumentParser(description="Utility to run Windows CI steps.") parser.add_argument("ci_type", choices=GENERATE_OPTIONS, help="CI type to run.") - steps = ["generate", "build"] + steps = [ + "generate", + "build", + "prepare_tests", + ] parser.add_argument("step", choices=steps, help="CI step to perform.") args = parser.parse_args() @@ -80,6 +101,8 @@ def main(): generate(args.ci_type) elif args.step == "build": build() + elif args.step == "prepare_tests": + prepare_tests(args.ci_type) if __name__ == "__main__": diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 75590d1d926..a088021eeed 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -310,6 +310,10 @@ jobs: run: | ctest --output-on-failure --stop-on-failure -j $NUMBER_OF_PROCESSORS -C Release + - name: Prepare tests + run: | + py -3 .github/ci-windows.py ${{ matrix.job-type }} prepare_tests + - name: Run functional tests if: matrix.job-type == 'standard' working-directory: build @@ -324,17 +328,8 @@ jobs: BITCOINCHAINSTATE: '${{ github.workspace }}\build\bin\Release\bitcoin-chainstate.exe' TEST_RUNNER_EXTRA: ${{ github.event_name != 'pull_request' && '--extended' || '' }} run: | - py -3 -m pip install pyzmq py -3 test/functional/test_runner.py --jobs $NUMBER_OF_PROCESSORS --quiet --tmpdirprefix="${RUNNER_TEMP}" --combinedlogslen=99999999 --timeout-factor=${TEST_RUNNER_TIMEOUT_FACTOR} ${TEST_RUNNER_EXTRA} - - name: Clone corpora - if: matrix.job-type == 'fuzz' - run: | - git clone --depth=1 https://github.com/bitcoin-core/qa-assets "${RUNNER_TEMP}/qa-assets" - cd "${RUNNER_TEMP}/qa-assets" - echo "Using qa-assets repo from commit ..." - git log -1 - - name: Run fuzz tests if: matrix.job-type == 'fuzz' working-directory: build From 1111079a16b92bb34ee2f8d4ae3529fbcb3180b2 Mon Sep 17 00:00:00 2001 From: MarcoFalke <*~=`'#}+{/-|&$^_@721217.xyz> Date: Fri, 6 Feb 2026 10:16:22 +0100 Subject: [PATCH 5/8] ci: Add run_tests step to ci-windows.py This is mostly a refactor, except for using the runner workspace (cwd) for: * fuzz qa-assets * functional temp prefix This makes it easier to run the ci-windows.py locally. --- .github/ci-windows.py | 63 +++++++++++++++++++++++++++++++++++++++- .github/workflows/ci.yml | 30 ++----------------- 2 files changed, 65 insertions(+), 28 deletions(-) diff --git a/.github/ci-windows.py b/.github/ci-windows.py index d797814da1a..693a015489d 100755 --- a/.github/ci-windows.py +++ b/.github/ci-windows.py @@ -73,7 +73,7 @@ def prepare_tests(ci_type): if ci_type == "standard": run([sys.executable, "-m", "pip", "install", "pyzmq"]) elif ci_type == "fuzz": - repo_dir = os.path.join(os.environ["RUNNER_TEMP"], "qa-assets") + repo_dir = os.path.join(os.getcwd(), "qa-assets") clone_cmd = [ "git", "clone", @@ -86,6 +86,64 @@ def prepare_tests(ci_type): run(["git", "-C", repo_dir, "log", "-1"]) +def run_tests(ci_type): + build_dir = "build" + num_procs = str(os.process_cpu_count()) + release_bin = os.path.join(os.getcwd(), build_dir, "bin", "Release") + + if ci_type == "standard": + test_envs = { + "BITCOIN_BIN": "bitcoin.exe", + "BITCOIND": "bitcoind.exe", + "BITCOINCLI": "bitcoin-cli.exe", + "BITCOIN_BENCH": "bench_bitcoin.exe", + "BITCOINTX": "bitcoin-tx.exe", + "BITCOINUTIL": "bitcoin-util.exe", + "BITCOINWALLET": "bitcoin-wallet.exe", + "BITCOINCHAINSTATE": "bitcoin-chainstate.exe", + } + for var, exe in test_envs.items(): + os.environ[var] = os.path.join(release_bin, exe) + + ctest_cmd = [ + "ctest", + "--test-dir", + build_dir, + "--output-on-failure", + "--stop-on-failure", + "-j", + num_procs, + "--build-config", + "Release", + ] + run(ctest_cmd) + + test_cmd = [ + sys.executable, + os.path.join(build_dir, "test", "functional", "test_runner.py"), + "--jobs", + num_procs, + "--quiet", + f"--tmpdirprefix={os.getcwd()}", + "--combinedlogslen=99999999", + *shlex.split(os.environ.get("TEST_RUNNER_EXTRA", "").strip()), + ] + run(test_cmd) + + elif ci_type == "fuzz": + os.environ["BITCOINFUZZ"] = os.path.join(release_bin, "fuzz.exe") + fuzz_cmd = [ + sys.executable, + os.path.join(build_dir, "test", "fuzz", "test_runner.py"), + "--par", + num_procs, + "--loglevel", + "DEBUG", + os.path.join(os.getcwd(), "qa-assets", "fuzz_corpora"), + ] + run(fuzz_cmd) + + def main(): parser = argparse.ArgumentParser(description="Utility to run Windows CI steps.") parser.add_argument("ci_type", choices=GENERATE_OPTIONS, help="CI type to run.") @@ -93,6 +151,7 @@ def main(): "generate", "build", "prepare_tests", + "run_tests", ] parser.add_argument("step", choices=steps, help="CI step to perform.") args = parser.parse_args() @@ -103,6 +162,8 @@ def main(): build() elif args.step == "prepare_tests": prepare_tests(args.ci_type) + elif args.step == "run_tests": + run_tests(args.ci_type) if __name__ == "__main__": diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a088021eeed..d09433fc8f6 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -304,39 +304,15 @@ jobs: & mt.exe -nologo -inputresource:$_.FullName -validate_manifest } - - name: Run test suite - if: matrix.job-type == 'standard' - working-directory: build - run: | - ctest --output-on-failure --stop-on-failure -j $NUMBER_OF_PROCESSORS -C Release - - name: Prepare tests run: | py -3 .github/ci-windows.py ${{ matrix.job-type }} prepare_tests - - name: Run functional tests - if: matrix.job-type == 'standard' - working-directory: build + - name: Run tests env: - BITCOIN_BIN: '${{ github.workspace }}\build\bin\Release\bitcoin.exe' - BITCOIND: '${{ github.workspace }}\build\bin\Release\bitcoind.exe' - BITCOINCLI: '${{ github.workspace }}\build\bin\Release\bitcoin-cli.exe' - BITCOIN_BENCH: '${{ github.workspace }}\build\bin\Release\bench_bitcoin.exe' - BITCOINTX: '${{ github.workspace }}\build\bin\Release\bitcoin-tx.exe' - BITCOINUTIL: '${{ github.workspace }}\build\bin\Release\bitcoin-util.exe' - BITCOINWALLET: '${{ github.workspace }}\build\bin\Release\bitcoin-wallet.exe' - BITCOINCHAINSTATE: '${{ github.workspace }}\build\bin\Release\bitcoin-chainstate.exe' - TEST_RUNNER_EXTRA: ${{ github.event_name != 'pull_request' && '--extended' || '' }} + TEST_RUNNER_EXTRA: "--timeout-factor=${{ env.TEST_RUNNER_TIMEOUT_FACTOR }} ${{ case(github.event_name == 'pull_request', '', '--extended') }}" run: | - py -3 test/functional/test_runner.py --jobs $NUMBER_OF_PROCESSORS --quiet --tmpdirprefix="${RUNNER_TEMP}" --combinedlogslen=99999999 --timeout-factor=${TEST_RUNNER_TIMEOUT_FACTOR} ${TEST_RUNNER_EXTRA} - - - name: Run fuzz tests - if: matrix.job-type == 'fuzz' - working-directory: build - env: - BITCOINFUZZ: '${{ github.workspace }}\build\bin\Release\fuzz.exe' - run: | - py -3 test/fuzz/test_runner.py --par $NUMBER_OF_PROCESSORS --loglevel DEBUG "${RUNNER_TEMP}/qa-assets/fuzz_corpora" + py -3 .github/ci-windows.py ${{ matrix.job-type }} run_tests record-frozen-commit: # Record frozen commit, so that the native tests on cross-builds can run on From fa3f89acaa7ae3332f4bf13aa91fcff44902990c Mon Sep 17 00:00:00 2001 From: MarcoFalke <*~=`'#}+{/-|&$^_@721217.xyz> Date: Fri, 6 Feb 2026 11:19:28 +0100 Subject: [PATCH 6/8] ci: Add check_manifests to ci-windows.py This is mostly a refactor, except for placing the bitcoind.manifest into a different folder. --- .github/ci-windows.py | 43 ++++++++++++++++++++++++++++++++++++++++ .github/workflows/ci.yml | 19 +----------------- 2 files changed, 44 insertions(+), 18 deletions(-) diff --git a/.github/ci-windows.py b/.github/ci-windows.py index 693a015489d..7697021c300 100755 --- a/.github/ci-windows.py +++ b/.github/ci-windows.py @@ -8,6 +8,7 @@ import os import shlex import subprocess import sys +from pathlib import Path def run(cmd, **kwargs): @@ -69,6 +70,45 @@ def build(): run(command + ["-j1", "--verbose"]) +def check_manifests(ci_type): + if ci_type != "standard": + print(f"Skipping manifest validation for '{ci_type}' ci type.") + return + + release_dir = Path.cwd() / "build" / "bin" / "Release" + manifest_path = release_dir / "bitcoind.manifest" + cmd_bitcoind_manifest = [ + "mt.exe", + "-nologo", + f"-inputresource:{release_dir / 'bitcoind.exe'}", + f"-out:{manifest_path}", + ] + run(cmd_bitcoind_manifest) + print(manifest_path.read_text()) + + skips = { # Skip as they currently do not have manifests + "fuzz.exe", + "bench_bitcoin.exe", + "test_bitcoin-qt.exe", + "test_kernel.exe", + "bitcoin-chainstate.exe", + } + for entry in release_dir.iterdir(): + if entry.suffix.lower() != ".exe": + continue + if entry.name in skips: + print(f"Skipping {entry.name} (no manifest present)") + continue + print(f"Checking {entry.name}") + cmd_check_manifest = [ + "mt.exe", + "-nologo", + f"-inputresource:{entry}", + "-validate_manifest", + ] + run(cmd_check_manifest) + + def prepare_tests(ci_type): if ci_type == "standard": run([sys.executable, "-m", "pip", "install", "pyzmq"]) @@ -150,6 +190,7 @@ def main(): steps = [ "generate", "build", + "check_manifests", "prepare_tests", "run_tests", ] @@ -160,6 +201,8 @@ def main(): generate(args.ci_type) elif args.step == "build": build() + elif args.step == "check_manifests": + check_manifests(args.ci_type) elif args.step == "prepare_tests": prepare_tests(args.ci_type) elif args.step == "run_tests": diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d09433fc8f6..d862a88c09e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -284,25 +284,8 @@ jobs: py -3 .github/ci-windows.py ${{ matrix.job-type }} build - name: Check executable manifests - if: matrix.job-type == 'standard' - working-directory: build - shell: pwsh -Command "$PSVersionTable; $PSNativeCommandUseErrorActionPreference = $true; $ErrorActionPreference = 'Stop'; & '{0}'" run: | - mt.exe -nologo -inputresource:bin\Release\bitcoind.exe -out:bitcoind.manifest - Get-Content bitcoind.manifest - - Get-ChildItem -Filter "bin\Release\*.exe" | ForEach-Object { - $exeName = $_.Name - - # Skip as they currently do not have manifests - if ($exeName -eq "fuzz.exe" -or $exeName -eq "bench_bitcoin.exe" -or $exeName -eq "test_bitcoin-qt.exe" -or $exeName -eq "test_kernel.exe" -or $exeName -eq "bitcoin-chainstate.exe") { - Write-Host "Skipping $exeName (no manifest present)" - return - } - - Write-Host "Checking $exeName" - & mt.exe -nologo -inputresource:$_.FullName -validate_manifest - } + py -3 .github/ci-windows.py ${{ matrix.job-type }} check_manifests - name: Prepare tests run: | From fa9627af9f89b2e2c04ae564d11d1af148c9682b Mon Sep 17 00:00:00 2001 From: MarcoFalke <*~=`'#}+{/-|&$^_@721217.xyz> Date: Fri, 6 Feb 2026 16:45:04 +0100 Subject: [PATCH 7/8] ci: Rely on cmake --preset toolchain file This is the standard approach and avoids relying on VCPKG_INSTALLATION_ROOT and -DCMAKE_TOOLCHAIN_FILE= in the ci-windows.py script. This makes it easier to run locally. --- .github/ci-windows.py | 7 ------- .github/workflows/ci.yml | 4 ++++ 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/.github/ci-windows.py b/.github/ci-windows.py index 7697021c300..cbb5b27f242 100755 --- a/.github/ci-windows.py +++ b/.github/ci-windows.py @@ -39,12 +39,6 @@ GENERATE_OPTIONS = { def generate(ci_type): - toolchain_file = os.path.join( - os.environ["VCPKG_INSTALLATION_ROOT"], - "scripts", - "buildsystems", - "vcpkg.cmake", - ) command = [ "cmake", "-B", @@ -52,7 +46,6 @@ def generate(ci_type): "-Werror=dev", "--preset", "vs2022", - f"-DCMAKE_TOOLCHAIN_FILE={toolchain_file}", ] + GENERATE_OPTIONS[ci_type] run(command) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d862a88c09e..9a2d25238e7 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -255,6 +255,10 @@ jobs: # Workaround for libevent, which requires CMake 3.1 but is incompatible with CMake >= 4.0. sed -i '1s/^/set(ENV{CMAKE_POLICY_VERSION_MINIMUM} 3.5)\n/' "${VCPKG_INSTALLATION_ROOT}/scripts/ports.cmake" + - name: Set VCPKG_ROOT + run: | + echo "VCPKG_ROOT=${VCPKG_INSTALLATION_ROOT}" >> "$GITHUB_ENV" + - name: vcpkg tools cache uses: actions/cache@v5 with: From fa90277d22e1e6662e827e662eb6bda344cdcb20 Mon Sep 17 00:00:00 2001 From: MarcoFalke <*~=`'#}+{/-|&$^_@721217.xyz> Date: Thu, 5 Feb 2026 19:52:53 +0100 Subject: [PATCH 8/8] ci: Use ubuntu-slim for [meta] runners They should be sufficient for the task, and are based on containers, so may be minimally faster to schedule. Ref: https://docs.github.com/en/actions/reference/runners/github-hosted-runners#single-cpu-runners --- .github/workflows/ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9a2d25238e7..d6e8c799277 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -31,7 +31,7 @@ defaults: jobs: runners: name: '[meta] determine runners' - runs-on: ubuntu-latest + runs-on: ubuntu-slim outputs: provider: ${{ steps.runners.outputs.provider }} steps: @@ -305,7 +305,7 @@ jobs: # Record frozen commit, so that the native tests on cross-builds can run on # the exact same commit id of the build. name: '[meta] record frozen commit' - runs-on: ubuntu-latest + runs-on: ubuntu-slim outputs: commit: ${{ steps.record-commit.outputs.commit }} steps: