Fix artifact upload collision in maui-pr-uitests pipeline#34478
Merged
Fix artifact upload collision in maui-pr-uitests pipeline#34478
Conversation
All 98+ test jobs publish to the default 'drop' artifact with no unique name. When multiple jobs finish simultaneously and upload the same file path (e.g. appium log for CollectionView tests), AzDO blob storage gets concurrent write conflicts causing 'Blob is incomplete (missing block)' and 'File upload failed even after retry' errors. Fix by giving each job a unique artifact name using System.StageName, System.JobName, and System.JobAttempt — the same pattern already used by snapshot diff artifacts in ui-tests-collect-snapshot-diffs.yml. Fixes #34477 Ref: dotnet/dnceng#1916 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Contributor
|
🚀 Dogfood this PR with:
curl -fsSL https://raw.githubusercontent.com/dotnet/maui/main/eng/scripts/get-maui-pr.sh | bash -s -- 34478Or
iex "& { $(irm https://raw.githubusercontent.com/dotnet/maui/main/eng/scripts/get-maui-pr.ps1) } 34478" |
Contributor
There was a problem hiding this comment.
Pull request overview
This PR updates the UI test pipeline template to publish build artifacts with a unique, job-scoped artifact name, reducing collisions across stages/jobs and retries in multi-stage UI test runs.
Changes:
- Assign a custom
artifactNameto thePublishBuildArtifacts@1step using$(System.StageName),$(System.JobName), and$(System.JobAttempt).
You can also share your feedback on Copilot code review. Take the survey.
3 tasks
This was referenced Mar 15, 2026
Member
Author
Member
|
/azp run maui-pr-uitests |
|
Azure Pipelines successfully started running 1 pipeline(s). |
3 tasks
PureWeen
approved these changes
Mar 20, 2026
This was referenced Mar 21, 2026
KarthikRajaKalaimani
pushed a commit
to KarthikRajaKalaimani/maui
that referenced
this pull request
Mar 30, 2026
## Problem The `maui-pr-uitests` pipeline has 98+ test jobs that all publish artifacts using `PublishBuildArtifacts@1` with **no artifact name**, defaulting to `drop`. When multiple jobs upload the same file to the same container simultaneously, AzDO blob storage encounters write conflicts: ``` Blob is incomplete (missing block). Blob: 29adda685a1ff1119a49000d3a9183a5, Expected Offset: 0, Actual Offset: 8388608 ##[error]File upload failed even after retry. ``` ### Recent failures - [Build 1334980](https://dev.azure.com/dnceng-public/public/_build/results?buildId=1334980): 3 jobs failed (Controls CollectionView, Controls (vlatest), Controls (vlatest) CollectionView) - [Build 1334245](https://dev.azure.com/dnceng-public/public/_build/results?buildId=1334245): 1 job failed (Controls (vlatest)) The specific collision: both "Controls (vlatest)" and "Controls (vlatest) CollectionView" upload `drop/logs/appium_ios_Controls.TestCases.iOS.Tests-Release-ios-CollectionView.log` — same blob ID, concurrent writes. ## Fix Add a unique artifact name per job using `$(System.StageName)-$(System.JobName)-$(System.JobAttempt)` in `eng/pipelines/common/ui-tests-steps.yml`. This matches the pattern already used by snapshot diff artifacts in `ui-tests-collect-snapshot-diffs.yml`. Fixes dotnet#34477 Ref: dotnet/dnceng#1916 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
The
maui-pr-uitestspipeline has 98+ test jobs that all publish artifacts usingPublishBuildArtifacts@1with no artifact name, defaulting todrop. When multiple jobs upload the same file to the same container simultaneously, AzDO blob storage encounters write conflicts:Recent failures
The specific collision: both "Controls (vlatest)" and "Controls (vlatest) CollectionView" upload
drop/logs/appium_ios_Controls.TestCases.iOS.Tests-Release-ios-CollectionView.log— same blob ID, concurrent writes.Fix
Add a unique artifact name per job using
$(System.StageName)-$(System.JobName)-$(System.JobAttempt)ineng/pipelines/common/ui-tests-steps.yml. This matches the pattern already used by snapshot diff artifacts inui-tests-collect-snapshot-diffs.yml.Fixes #34477
Ref: dotnet/dnceng#1916