Skip to content

Split Helix into separate AzDO jobs per queue, enable verbose xunit, configurable timeout#38003

Merged
AndriySvyryd merged 4 commits intomainfrom
copilot/create-separate-azdo-jobs
Mar 28, 2026
Merged

Split Helix into separate AzDO jobs per queue, enable verbose xunit, configurable timeout#38003
AndriySvyryd merged 4 commits intomainfrom
copilot/create-separate-azdo-jobs

Conversation

Copy link
Copy Markdown
Contributor

Copilot AI commented Mar 26, 2026

Each Helix queue now runs as its own AzDO job so individual queue failures can be retried without re-running everything.

Per-queue Helix jobs

  • Replaced single Helix job with 6 independent jobs in both azure-pipelines-public.yml and azure-pipelines-internal-tests.yml:
    • Helix Windows, Helix macOS x64, Helix macOS ARM64, Helix Ubuntu SQL Server, Helix Ubuntu Cosmos, Helix Ubuntu

Configurable timeout

  • XUnitWorkItemTimeout in eng/helix.proj defaults to 02:00:00 but can be overridden per job via /p:XUnitWorkItemTimeout=...

Verbose xunit

  • <XUnitArguments>-verbose</XUnitArguments> in eng/helix.proj

Environment variable scoping

  • MSSQL_SA_PASSWORD is only set on Helix Ubuntu SQL Server jobs in pipeline YAML
  • COMPlus_EnableWriteXorExecute is handled entirely inside eng/helix.proj via PreCommands for OSX queues (removed from pipeline YAML)
  • Removed DotNetBuildsInternalReadSasToken from public pipeline Helix jobs (variable is never populated in that pipeline)

Internal pipeline cleanup

  • Removed System.TeamProject condition from delegation SAS steps (never public in this pipeline)
  • Changed expiryInHours to 3 for all delegation SAS steps

🔒 GitHub Advanced Security automatically protects Copilot coding agent pull requests. You can protect all pull requests by enabling Advanced Security for your repositories. Learn more about Advanced Security.

…es, enable verbose xunit, set unit test timeout to 10 minutes

Co-authored-by: AndriySvyryd <6539701+AndriySvyryd@users.noreply.github.com>
Agent-Logs-Url: https://github.com/dotnet/efcore/sessions/5ee77dab-a54a-40a4-b850-1708e6cb6637
…move System.TeamProject condition, expiryInHours=3

Co-authored-by: AndriySvyryd <6539701+AndriySvyryd@users.noreply.github.com>
Agent-Logs-Url: https://github.com/dotnet/efcore/sessions/343ccd50-5c61-480e-9b34-15064570b02c
Copilot AI changed the title Split Helix into separate AzDO jobs per queue, enable verbose xunit, 10-min unit test timeout Split Helix into separate AzDO jobs per queue, enable verbose xunit, configurable timeout Mar 26, 2026
Copilot AI requested a review from AndriySvyryd March 26, 2026 00:41
@AndriySvyryd AndriySvyryd requested a review from Copilot March 26, 2026 18:33
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR refactors EF Core’s CI Helix submission to run each Helix queue as an independent Azure DevOps job, improving retryability and isolating queue-specific failures. It also increases xUnit verbosity and makes Helix work item timeouts configurable.

Changes:

  • Split the single Helix job into per-queue Helix jobs in both public and internal Azure Pipelines.
  • Enable verbose xUnit output via XUnitArguments in eng/helix.proj.
  • Make Helix work item timeout configurable via XUnitWorkItemTimeout (defaulting to 2 hours) and adjust SAS token acquisition in the internal pipeline.

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated 8 comments.

File Description
eng/helix.proj Enables verbose xUnit logging and supports configurable Helix work item timeout.
azure-pipelines-public.yml Splits Helix submission into per-queue jobs for public CI.
azure-pipelines-internal-tests.yml Splits Helix submission into per-queue jobs for internal CI and updates delegation SAS handling.

@AndriySvyryd AndriySvyryd marked this pull request as ready for review March 26, 2026 18:59
Copilot AI review requested due to automatic review settings March 26, 2026 18:59
Copilot AI requested a review from AndriySvyryd March 26, 2026 19:00
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 3 out of 3 changed files in this pull request and generated no new comments.

…s (already set in helix.proj)

Agent-Logs-Url: https://github.com/dotnet/efcore/sessions/1360f071-35e2-44ac-82cf-75cb3d8737bb

Co-authored-by: AndriySvyryd <6539701+AndriySvyryd@users.noreply.github.com>
COMPlus_EnableWriteXorExecute: 0
DotNetBuildsInternalReadSasToken: $(dotnetbuilds-internal-container-read-token)

- job: Helix_Ubuntu_Cosmos
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we need a Cosmos-specific job? Especially now that we can test against the Linux-based emulator, shouldn't Cosmos testing just happen as part of all testing jobs, like SQLite?

Copy link
Copy Markdown
Member

@AndriySvyryd AndriySvyryd Mar 27, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We can look at the run times once this is running and combine them later

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I meant this more in terms of simplicity, not of run times optimizations; like why would we have a separate job in Helix specifically for Cosmos and not for SQLite...

But no particular blocking from my side, am OK to merge as-is.

@roji roji assigned AndriySvyryd and unassigned roji Mar 27, 2026
@AndriySvyryd AndriySvyryd assigned roji and unassigned AndriySvyryd Mar 27, 2026
@AndriySvyryd AndriySvyryd merged commit 5e0cb7b into main Mar 28, 2026
16 checks passed
@AndriySvyryd AndriySvyryd deleted the copilot/create-separate-azdo-jobs branch March 28, 2026 16:35
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.

4 participants