Commit Graph

1 Commits

  • ci: derive cache-stable Windows Bazel PATH (#19161)
    ## Why
    
    The BuildBuddy runs for PR #19086 and the later `main` build had the
    same source tree, but their Windows Bazel action and test cache keys did
    not line up. Comparing the downloaded execution logs showed the full
    GitHub-hosted Windows runner `PATH` had changed from
    `apache-maven-3.9.14` to `apache-maven-3.9.15`.
    
    This repo is not using Maven; the Maven entry was just ambient
    hosted-runner state. The problem was that Windows Bazel CI was still
    forwarding the whole runner `PATH` into Bazel via `--action_env=PATH`,
    `--host_action_env=PATH`, and `--test_env=PATH`, which made otherwise
    reusable cache entries sensitive to unrelated runner image churn.
    
    After discussion with the Bazel and BuildBuddy folks, the better shape
    for this change was to stop asking Bazel to inherit the ambient Windows
    `PATH` and instead compute one explicit cache-stable `PATH` in the
    Windows setup action that already prepares the CI toolchain environment.
    
    ## What
    
    - remove Windows `PATH` passthrough from `.bazelrc`
    - export `CODEX_BAZEL_WINDOWS_PATH` from
    `.github/actions/setup-bazel-ci/action.yml`
    - move the PATH derivation logic into
    `.github/scripts/compute-bazel-windows-path.ps1` so the allow-list is
    easier to review and document
    - keep only the Windows tool locations these Bazel jobs actually need:
    MSVC and SDK paths, Git, PowerShell, Node, DotSlash, and the standard
    Windows system directories
    - update `.github/scripts/run-bazel-ci.sh` to require that explicit
    value and forward it to Bazel action, host action, and test environments
    - log the derived `CODEX_BAZEL_WINDOWS_PATH` in the setup step to
    simplify cache-key debugging
    
    ## Verification
    
    - `bash -n .github/scripts/run-bazel-ci.sh`
    - `ruby -e 'require "yaml"; YAML.load_file(ARGV[0])'
    .github/actions/setup-bazel-ci/action.yml`
    - PowerShell parse check for
    `.github/scripts/compute-bazel-windows-path.ps1`
    - simulated a representative Windows `PATH` in PowerShell; the
    allow-list retained MSVC, Git, PowerShell, Node, Windows, and DotSlash
    entries while dropping Maven