ci: [refactor] Add .github/ci-windows.py prepare_tests step
What changed, and why it matters
This commit is a pure cleanup of the Windows CI (Continuous Integration) script. It moves two test-preparation tasks—installing a Python package for normal tests and cloning test data for fuzz tests—into a single helper function. There is no change to Bitcoin Core's actual code, no security fix, and no new vulnerability.
No security action needed. Treat as routine CI maintenance.
Security signals we found
No strong security signals were identified.
Evidence from the diff
The diff refactors .github/ci-windows.py and .github/workflows/ci.yml. It adds a prepare_tests(ci_type) function that either installs pyzmq for standard CI jobs or clones the bitcoin-core/qa-assets repository for fuzz jobs. The workflow now calls this function instead of inlining the equivalent shell commands. The commands executed and their order are essentially unchanged; only the structure is cleaner.
Changed components
.github/ci-windows.py.github/workflows/ci.ymlInspect captured patch +28 / −10
diff --git a/.github/ci-windows.py b/.github/ci-windows.py
index d99ba2d9..d797814d 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 75590d1d..a088021e 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
Why this scored 15/100
Community notes
Notes can correct, qualify, or add evidence to the AI analysis. Every note shown here has been validated by a human moderator.
The AI analysis stands alone for now. Submit a note if you can add evidence or important context.