From fa1dacaebe5d326ff8736ab9a4475f8a99ce4bc3 Mon Sep 17 00:00:00 2001 From: MarcoFalke <*~=`'#}+{/-|&$^_@721217.xyz> Date: Mon, 17 Nov 2025 15:12:01 +0100 Subject: [PATCH] ci: Move lint exec snippet to stand-alone py file Moving the python code out of the yaml string makes it easier to lint, format, and edit. This can be reviewed with the git options: --color-moved=dimmed-zebra --color-moved-ws=ignore-all-space --- .github/ci-lint-exec.py | 51 ++++++++++++++++++++++++++++++++++++++++ .github/workflows/ci.yml | 38 +----------------------------- 2 files changed, 52 insertions(+), 37 deletions(-) create mode 100755 .github/ci-lint-exec.py diff --git a/.github/ci-lint-exec.py b/.github/ci-lint-exec.py new file mode 100755 index 00000000000..b0f78983886 --- /dev/null +++ b/.github/ci-lint-exec.py @@ -0,0 +1,51 @@ +#!/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 os +import shlex +import subprocess +import sys +import time + + +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(e) + + +def main(): + CONTAINER_NAME = os.environ["CONTAINER_NAME"] + + build_cmd = [ + "docker", "buildx", "build", + f"--tag={CONTAINER_NAME}", + *shlex.split(os.getenv("DOCKER_BUILD_CACHE_ARG", "")), + "--file=./ci/lint_imagefile", + "." + ] + + if run(build_cmd, check=False).returncode != 0: + print("Retry building image tag after failure") + time.sleep(3) + run(build_cmd) + + CIRRUS_PR_FLAG = [] + if os.environ.get("GITHUB_EVENT_NAME") == "pull_request": + CIRRUS_PR_FLAG = ["-e", "CIRRUS_PR=1"] + + run([ + "docker", "run", "--rm", + *CIRRUS_PR_FLAG, + f"--volume={os.getcwd()}:/bitcoin", + CONTAINER_NAME, + ]) + + +if __name__ == "__main__": + main() diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0265583b027..343c20b3b13 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -620,40 +620,4 @@ jobs: cache-provider: ${{ needs.runners.outputs.provider }} - name: CI script - shell: python - run: | - import os, shlex, subprocess, sys, time - - 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(e) - - CONTAINER_NAME = os.environ["CONTAINER_NAME"] - - build_cmd = [ - "docker", "buildx", "build", - f"--tag={CONTAINER_NAME}", - *shlex.split(os.getenv("DOCKER_BUILD_CACHE_ARG", "")), - "--file=./ci/lint_imagefile", - "." - ] - - if run(build_cmd, check=False).returncode != 0: - print("Retry building image tag after failure") - time.sleep(3) - run(build_cmd) - - CIRRUS_PR_FLAG = [] - if '${{ github.event_name }}' == "pull_request": - CIRRUS_PR_FLAG = ["-e", "CIRRUS_PR=1"] - - run([ - "docker", "run", "--rm", - *CIRRUS_PR_FLAG, - f"--volume={os.getcwd()}:/bitcoin", - CONTAINER_NAME, - ]) + run: python .github/ci-lint-exec.py