Skip to content

Comments

Use Helix in CI#5713

Draft
max-charlamb wants to merge 49 commits intodotnet:mainfrom
max-charlamb:wip-helix-copilot
Draft

Use Helix in CI#5713
max-charlamb wants to merge 49 commits intodotnet:mainfrom
max-charlamb:wip-helix-copilot

Conversation

@max-charlamb
Copy link
Member

No description provided.

- Linux: Set TMPDIR=/tmp to ensure consistent diagnostic IPC socket paths
  (Helix agents may set TMPDIR to non-writable work item temp dirs)
- macOS: Set TMPDIR=/private/tmp (resolved /tmp symlink)
- macOS: Resolve HELIX_CORRELATION_PAYLOAD through /tmp -> /private/tmp
  symlink so all derived paths match what the runtime reports
- macOS: Add ResolveMacOSDotNetRoot target to resolve DOTNET_ROOT after
  Helix SDK sets it (fixes BasicProcessInfoSuspendTest path mismatch)
MSBuild was interpreting \ as a property reference,
resolving to empty. Use %24 to escape the dollar sign so MSBuild
emits a literal \ for shell command substitution.
Copilot CLI skill that looks up CI build results for a PR:
- Finds ADO builds via GitHub PR status or ADO API
- Extracts Helix job IDs from ADO build logs
- Queries Helix API for per-work-item test results
- Includes reference tables for test suites and build configs
apt-get was failing with 'Could not get lock /var/lib/dpkg/lock-frontend'
because another process held it. Add -o DPkg::Lock::Timeout=120 to both
apt-get update and install to wait for the lock instead of failing.
SOS.LLDBPluginTests uses PYTHONPATH as the Python binary path, but Helix
sets PYTHONPATH to a colon-delimited import path string. Unset it so the
test falls back to /usr/bin/python, and create a symlink if needed.
Thread osSuffix parameter from diagnostics.yml through build.yml and
send-to-helix.yml to helix.proj so that linux-musl runs display as
'linux-musl x64 Debug' instead of 'linux x64 Debug'.
Switch musl Helix queues from Ubuntu.2204 (glibc) to Alpine 3.23
containers so musl-linked native binaries (libdbgshim.so,
libsosplugin.so) can load correctly. Split Linux pre-commands:
- Non-musl: apt-get based LLDB 16 install (Ubuntu)
- Musl: apk based LLDB/Python install (Alpine)
Alpine container queue names contain () and @ characters that bash
interprets as subshell/special chars. Quote the /p:HelixTargetQueues
parameter in all send-to-helix.yml steps to prevent shell errors.
The @ character is reserved in YAML and must be quoted in plain
scalars. Add single quotes around the container queue values to
prevent YAML parsing failures.
1. Remove 'unset PYTHONPATH' from common Linux pre-commands. This was
   breaking the Helix result reporter (ModuleNotFoundError: No module
   named 'helix'), causing ALL Linux x64 tests to be marked as failed
   even though the tests themselves pass.

2. Fix musl container read-only filesystem: correlation payload is
   mounted read-only in Docker containers, so cp into dotnet-cli/
   fails. Create a writable DOTNET_ROOT overlay using symlinks and
   copy Versions.txt there instead.

3. Move Versions.txt cp into platform-specific sections since the
   approach differs between Ubuntu (direct cp) and Alpine (overlay).
Two issues fixed:
1. DOTNET_ROOT/PATH overrides were being clobbered by Helix SDK's
   AddDotNetSdk target which runs after our pre-commands. Move the
   overrides to a FixMuslDotNetRoot Target (AfterTargets=AddDotNetSdk)
   so they take effect after the SDK sets its values.

2. The * glob in 'ln -sf .../dotnet-cli/*' was treated as an MSBuild
   file wildcard, causing the item to silently produce no output.
   Escape as %2A so MSBuild passes it through as a literal *. Also
   use a for loop with %3B-escaped semicolons for proper bash syntax.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant