gh-128446: Skip Windows CI for Unix build system changes (#128450)

Co-authored-by: Adam Turner <9087854+aa-turner@users.noreply.github.com>
Authored-by: Adam Turner <9087854+aa-turner@users.noreply.github.com>
This commit is contained in:
Srinivas Reddy Thatiparthy (తాటిపర్తి శ్రీనివాస్ రెడ్డి) 2025-02-12 07:23:29 +05:30 committed by GitHub
parent 06ac157c53
commit b05fa90b21
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 37 additions and 2 deletions

View file

@ -154,7 +154,7 @@ jobs:
Windows Windows
${{ fromJSON(matrix.free-threading) && '(free-threading)' || '' }} ${{ fromJSON(matrix.free-threading) && '(free-threading)' || '' }}
needs: build-context needs: build-context
if: fromJSON(needs.build-context.outputs.run-tests) if: fromJSON(needs.build-context.outputs.run-windows-tests)
strategy: strategy:
fail-fast: false fail-fast: false
matrix: matrix:
@ -654,13 +654,19 @@ jobs:
build_ubuntu, build_ubuntu,
build_ubuntu_ssltests, build_ubuntu_ssltests,
build_wasi, build_wasi,
build_windows,
build_asan, build_asan,
build_tsan, build_tsan,
test_hypothesis, test_hypothesis,
' '
|| '' || ''
}} }}
${{
!fromJSON(needs.build-context.outputs.run-windows-tests)
&& '
build_windows,
'
|| ''
}}
${{ ${{
!fromJSON(needs.build-context.outputs.run-ci-fuzz) !fromJSON(needs.build-context.outputs.run-ci-fuzz)
&& ' && '

View file

@ -26,6 +26,9 @@ on: # yamllint disable-line rule:truthy
run-tests: run-tests:
description: Whether to run the regular tests description: Whether to run the regular tests
value: ${{ jobs.compute-changes.outputs.run-tests }} # bool value: ${{ jobs.compute-changes.outputs.run-tests }} # bool
run-windows-tests:
description: Whether to run the Windows tests
value: ${{ jobs.compute-changes.outputs.run-windows-tests }} # bool
run-windows-msi: run-windows-msi:
description: Whether to run the MSI installer smoke tests description: Whether to run the MSI installer smoke tests
value: ${{ jobs.compute-changes.outputs.run-windows-msi }} # bool value: ${{ jobs.compute-changes.outputs.run-windows-msi }} # bool
@ -44,6 +47,7 @@ jobs:
run-docs: ${{ steps.changes.outputs.run-docs }} run-docs: ${{ steps.changes.outputs.run-docs }}
run-tests: ${{ steps.changes.outputs.run-tests }} run-tests: ${{ steps.changes.outputs.run-tests }}
run-windows-msi: ${{ steps.changes.outputs.run-windows-msi }} run-windows-msi: ${{ steps.changes.outputs.run-windows-msi }}
run-windows-tests: ${{ steps.changes.outputs.run-windows-tests }}
steps: steps:
- name: Set up Python - name: Set up Python
uses: actions/setup-python@v5 uses: actions/setup-python@v5

View file

@ -21,11 +21,27 @@ if TYPE_CHECKING:
GITHUB_DEFAULT_BRANCH = os.environ["GITHUB_DEFAULT_BRANCH"] GITHUB_DEFAULT_BRANCH = os.environ["GITHUB_DEFAULT_BRANCH"]
GITHUB_CODEOWNERS_PATH = Path(".github/CODEOWNERS") GITHUB_CODEOWNERS_PATH = Path(".github/CODEOWNERS")
GITHUB_WORKFLOWS_PATH = Path(".github/workflows") GITHUB_WORKFLOWS_PATH = Path(".github/workflows")
CONFIGURATION_FILE_NAMES = frozenset({ CONFIGURATION_FILE_NAMES = frozenset({
".pre-commit-config.yaml", ".pre-commit-config.yaml",
".ruff.toml", ".ruff.toml",
"mypy.ini", "mypy.ini",
}) })
UNIX_BUILD_SYSTEM_FILE_NAMES = frozenset({
Path("aclocal.m4"),
Path("config.guess"),
Path("config.sub"),
Path("configure"),
Path("configure.ac"),
Path("install-sh"),
Path("Makefile.pre.in"),
Path("Modules/makesetup"),
Path("Modules/Setup"),
Path("Modules/Setup.bootstrap.in"),
Path("Modules/Setup.stdlib.in"),
Path("Tools/build/regen-configure.sh"),
})
SUFFIXES_C_OR_CPP = frozenset({".c", ".h", ".cpp"}) SUFFIXES_C_OR_CPP = frozenset({".c", ".h", ".cpp"})
SUFFIXES_DOCUMENTATION = frozenset({".rst", ".md"}) SUFFIXES_DOCUMENTATION = frozenset({".rst", ".md"})
@ -36,6 +52,7 @@ class Outputs:
run_docs: bool = False run_docs: bool = False
run_tests: bool = False run_tests: bool = False
run_windows_msi: bool = False run_windows_msi: bool = False
run_windows_tests: bool = False
def compute_changes() -> None: def compute_changes() -> None:
@ -53,6 +70,8 @@ def compute_changes() -> None:
if outputs.run_tests: if outputs.run_tests:
print("Run tests") print("Run tests")
if outputs.run_windows_tests:
print("Run Windows tests")
if outputs.run_ci_fuzz: if outputs.run_ci_fuzz:
print("Run CIFuzz tests") print("Run CIFuzz tests")
@ -98,6 +117,7 @@ def process_changed_files(changed_files: Set[Path]) -> Outputs:
run_tests = False run_tests = False
run_ci_fuzz = False run_ci_fuzz = False
run_docs = False run_docs = False
run_windows_tests = False
run_windows_msi = False run_windows_msi = False
for file in changed_files: for file in changed_files:
@ -120,6 +140,9 @@ def process_changed_files(changed_files: Set[Path]) -> Outputs:
): ):
run_tests = True run_tests = True
if file not in UNIX_BUILD_SYSTEM_FILE_NAMES:
run_windows_tests = True
# The fuzz tests are pretty slow so they are executed only for PRs # The fuzz tests are pretty slow so they are executed only for PRs
# changing relevant files. # changing relevant files.
if file.suffix in SUFFIXES_C_OR_CPP: if file.suffix in SUFFIXES_C_OR_CPP:
@ -142,6 +165,7 @@ def process_changed_files(changed_files: Set[Path]) -> Outputs:
run_ci_fuzz=run_ci_fuzz, run_ci_fuzz=run_ci_fuzz,
run_docs=run_docs, run_docs=run_docs,
run_tests=run_tests, run_tests=run_tests,
run_windows_tests=run_windows_tests,
run_windows_msi=run_windows_msi, run_windows_msi=run_windows_msi,
) )
@ -172,6 +196,7 @@ def write_github_output(outputs: Outputs) -> None:
f.write(f"run-ci-fuzz={bool_lower(outputs.run_ci_fuzz)}\n") f.write(f"run-ci-fuzz={bool_lower(outputs.run_ci_fuzz)}\n")
f.write(f"run-docs={bool_lower(outputs.run_docs)}\n") f.write(f"run-docs={bool_lower(outputs.run_docs)}\n")
f.write(f"run-tests={bool_lower(outputs.run_tests)}\n") f.write(f"run-tests={bool_lower(outputs.run_tests)}\n")
f.write(f"run-windows-tests={bool_lower(outputs.run_windows_tests)}\n")
f.write(f"run-windows-msi={bool_lower(outputs.run_windows_msi)}\n") f.write(f"run-windows-msi={bool_lower(outputs.run_windows_msi)}\n")