Skip to content

[ci-fix] Needs review: expand $HELIX_PYTHONPATH via WindowsShell on Android Windows-queue Helix legs (refs #131382) - #131515

Draft
github-actions[bot] wants to merge 1 commit into
mainfrom
ci-fix/131382-helix-pythonpath-windowsshell-a0626974e618723f
Draft

[ci-fix] Needs review: expand $HELIX_PYTHONPATH via WindowsShell on Android Windows-queue Helix legs (refs #131382)#131515
github-actions[bot] wants to merge 1 commit into
mainfrom
ci-fix/131382-helix-pythonpath-windowsshell-a0626974e618723f

Conversation

@github-actions

Copy link
Copy Markdown
Contributor

Workflow artifact: ci-fix
Artifact kind: help
Linked KBE: #131382

Note

This is an AI/Copilot-generated best-effort fix attempt. The reasoning is high-confidence, but a Helix/MSBuild condition change like this can only be exercised in a live Send to Helix run, so I could not validate it locally. Please confirm before merging.

Root cause

Every Windows Helix work item on the affected runtime-extra-platforms legs fails after the test run completes, with:

'$HELIX_PYTHONPATH' is not recognized as an internal or external command

The gen-debug-dump-docs.py post-command in src/libraries/sendtohelixhelp.proj picks its shell syntax from TargetOS:

  • Condition="'$(TargetOS)' == 'windows'"%HELIX_PYTHONPATH% ... \gen-debug-dump-docs.py (cmd syntax)
  • Condition="'$(TargetOS)' != 'windows' ..."$HELIX_PYTHONPATH .../gen-debug-dump-docs.py (POSIX syntax)

But Android (linux-bionic RID) test legs run their Helix work items on Windows queues. Those work items have TargetOS == android, so they take the POSIX branch, yet the command actually runs under cmd.exe. cmd.exe does not expand $HELIX_PYTHONPATH, so the token is treated as a command name, is not found, and the work item exits with code 1 — after results were already reported.

Attempted fix

The project already computes a WindowsShell property (line 8) that is true precisely when a work item runs under cmd.exe, including the linux-bionic + Windows-queue case:

<WindowsShell Condition="'$(TargetOS)' == 'windows' or '$(BrowserHost)' == 'windows' or ($(TargetRuntimeIdentifier.ToLowerInvariant().StartsWith('linux-bionic')) and $(HelixTargetQueue.ToLowerInvariant().Contains('windows')))">true</WindowsShell>

WindowsShell is already the shell-syntax selector used throughout this file (e.g. HelixPreCommand, HelixCommandPrefixEnvVarItem). This change keys the two gen-debug-dump-docs post-commands off WindowsShell instead of TargetOS == 'windows', so Android-on-Windows work items get the cmd-syntax command. browser/wasi remain excluded from the POSIX branch as before.

What is unverified / where I need help

  • The fix cannot be locally build-validated; it only takes effect in a live Send to Helix run on the affected Windows-queue Android legs. A maintainer should confirm the post-command now expands correctly (and that no non-Android Windows-queue leg regresses).
  • Please confirm WindowsShell is the intended selector here (it is used elsewhere in this same file for exactly this shell-syntax decision).

Validation

  • Command: not run — MSBuild Condition / Helix post-command change with no local test path; exercised only in CI Send to Helix.
  • Result: not run

Evidence

  • Failing build: https://dev.azure.com/dnceng-public/public/_build/results?buildId=1524472
  • First build it occurred: within the scanned window (source build 1524472, recurring through 1526281); the true origin is whenever gen-debug-dump-docs post-commands began running on Android Windows-queue legs.
  • Suspected regressing change: none identified with sufficient confidence.

Help wanted

  • Likely author: none identified with sufficient confidence.
  • Area owners (area-Infrastructure): @agocke, @dotnet/runtime-infrastructure

Filed by ci-failure-fix. Comment here or on the workflow file to suggest changes; ci-failure-scan-feedback reads in-scope feedback daily and opens (or updates) a PR with prompt edits.

Warning

Firewall blocked 1 domain

The following domain was blocked by the firewall during workflow execution:

  • awmgmcpg

To allow these domains, add them to the network.allowed list in your workflow frontmatter:

network:
  allowed:
    - defaults
    - "awmgmcpg"

See Network Configuration for more information.

Generated by CI Outer-Loop Failure Fixer · 396.3 AIC · ⌖ 17.9 AIC · ⊞ 17.1K ·

…131382)

Android-on-Windows Helix work items (linux-bionic RID on a Windows queue)
took the Unix-syntax HelixPostCommand branch even though cmd.exe runs the
command, so $HELIX_PYTHONPATH was never expanded and the work item exited 1.
Key the gen-debug-dump-docs post-commands off the existing WindowsShell
property, which already accounts for that case.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
Successfully started running 3 pipeline(s).
13 pipeline(s) were filtered out due to trigger conditions.
There may be pipelines that require an authorized user to comment /azp run to run.

@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to this area: @dotnet/area-infrastructure-libraries
See info in area-owners.md if you want to be subscribed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants