From abfde00e4149da373636f363f1a1cd76326d5a79 Mon Sep 17 00:00:00 2001 From: Will Godbe Date: Mon, 21 Sep 2026 13:01:55 -0700 Subject: [PATCH 1/3] Avoid artifact collisions on job retries Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- azure-pipelines-public.yml | 6 +++--- azure-pipelines.yml | 6 +++--- eng/common/templates-official/job/job.yml | 2 +- eng/common/templates/job/job.yml | 2 +- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/azure-pipelines-public.yml b/azure-pipelines-public.yml index a58d865a95a..d80a2832bd8 100644 --- a/azure-pipelines-public.yml +++ b/azure-pipelines-public.yml @@ -86,7 +86,7 @@ stages: continueOnError: true inputs: pathtoPublish: artifacts/TestResults/$(_BuildConfig)/ - artifactName: $(Agent.Os)_$(Agent.JobName) TestResults + artifactName: $(Agent.Os)_$(Agent.JobName) TestResults_Attempt_$(System.JobAttempt) artifactType: Container parallel: true @@ -110,7 +110,7 @@ stages: continueOnError: true inputs: pathtoPublish: artifacts/TestResults/$(_BuildConfig)/ - artifactName: $(Agent.Os)_$(Agent.JobName) TestResults + artifactName: $(Agent.Os)_$(Agent.JobName) TestResults_Attempt_$(System.JobAttempt) artifactType: Container parallel: true @@ -135,7 +135,7 @@ stages: continueOnError: true inputs: pathtoPublish: artifacts/TestResults/$(_BuildConfig)/ - artifactName: $(Agent.Os)_$(Agent.JobName) TestResults + artifactName: $(Agent.Os)_$(Agent.JobName) TestResults_Attempt_$(System.JobAttempt) artifactType: Container parallel: true diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 4b38f0ad63d..089335b8b0b 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -140,7 +140,7 @@ extends: displayName: Upload TestResults condition: always() path: artifacts/TestResults/$(_BuildConfig)/ - artifact: $(Agent.Os)_$(Agent.JobName) TestResults + artifact: $(Agent.Os)_$(Agent.JobName) TestResults_Attempt_$(System.JobAttempt) - job: macOS pool: name: Azure Pipelines @@ -167,7 +167,7 @@ extends: displayName: Upload TestResults condition: always() path: artifacts/TestResults/$(_BuildConfig)/ - artifact: $(Agent.Os)_$(Agent.JobName) TestResults + artifact: $(Agent.Os)_$(Agent.JobName) TestResults_Attempt_$(System.JobAttempt) - job: Linux timeoutInMinutes: 180 pool: @@ -192,7 +192,7 @@ extends: displayName: Upload TestResults condition: always() path: artifacts/TestResults/$(_BuildConfig)/ - artifact: $(Agent.Os)_$(Agent.JobName) TestResults + artifact: $(Agent.Os)_$(Agent.JobName) TestResults_Attempt_$(System.JobAttempt) - job: Helix timeoutInMinutes: 180 pool: diff --git a/eng/common/templates-official/job/job.yml b/eng/common/templates-official/job/job.yml index 81ea7a261f2..51e7f2991a2 100644 --- a/eng/common/templates-official/job/job.yml +++ b/eng/common/templates-official/job/job.yml @@ -46,7 +46,7 @@ jobs: displayName: Publish Logs PathtoPublish: '$(Build.ArtifactStagingDirectory)/artifacts/log/$(_BuildConfig)' publishLocation: Container - ArtifactName: ${{ coalesce(parameters.enablePublishBuildArtifacts.artifactName, '$(Agent.Os)_$(Agent.JobName)' ) }} + ArtifactName: ${{ coalesce(parameters.enablePublishBuildArtifacts.artifactName, '$(Agent.Os)_$(Agent.JobName)_Attempt_$(System.JobAttempt)' ) }} continueOnError: true condition: always() sbomEnabled: false # we don't need SBOM for logs diff --git a/eng/common/templates/job/job.yml b/eng/common/templates/job/job.yml index 5bdd3dd85fd..f919bbc6e39 100644 --- a/eng/common/templates/job/job.yml +++ b/eng/common/templates/job/job.yml @@ -66,7 +66,7 @@ jobs: displayName: Publish Logs pathToPublish: '$(Build.ArtifactStagingDirectory)/artifacts/log/$(_BuildConfig)' publishLocation: Container - artifactName: ${{ coalesce(parameters.enablePublishBuildArtifacts.artifactName, '$(Agent.Os)_$(Agent.JobName)' ) }} + artifactName: ${{ coalesce(parameters.enablePublishBuildArtifacts.artifactName, '$(Agent.Os)_$(Agent.JobName)_Attempt_$(System.JobAttempt)' ) }} continueOnError: true condition: always() From b6e9000c617db2d5bd1831f801f6bb981066a43a Mon Sep 17 00:00:00 2001 From: Will Godbe Date: Mon, 21 Sep 2026 13:47:20 -0700 Subject: [PATCH 2/3] Allow test result artifact upload failures Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- azure-pipelines.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 089335b8b0b..dfc835cfd93 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -139,6 +139,7 @@ extends: - output: pipelineArtifact displayName: Upload TestResults condition: always() + continueOnError: true path: artifacts/TestResults/$(_BuildConfig)/ artifact: $(Agent.Os)_$(Agent.JobName) TestResults_Attempt_$(System.JobAttempt) - job: macOS @@ -166,6 +167,7 @@ extends: - output: pipelineArtifact displayName: Upload TestResults condition: always() + continueOnError: true path: artifacts/TestResults/$(_BuildConfig)/ artifact: $(Agent.Os)_$(Agent.JobName) TestResults_Attempt_$(System.JobAttempt) - job: Linux @@ -191,6 +193,7 @@ extends: - output: pipelineArtifact displayName: Upload TestResults condition: always() + continueOnError: true path: artifacts/TestResults/$(_BuildConfig)/ artifact: $(Agent.Os)_$(Agent.JobName) TestResults_Attempt_$(System.JobAttempt) - job: Helix From 56bb29fd2f1292065054448814c8dd7e8a90e580 Mon Sep 17 00:00:00 2001 From: Will Godbe Date: Mon, 21 Sep 2026 13:47:20 -0700 Subject: [PATCH 3/3] Suffix custom log artifact names on retries Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- eng/common/templates-official/job/job.yml | 2 +- eng/common/templates/job/job.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/eng/common/templates-official/job/job.yml b/eng/common/templates-official/job/job.yml index 51e7f2991a2..329dcc4b34a 100644 --- a/eng/common/templates-official/job/job.yml +++ b/eng/common/templates-official/job/job.yml @@ -46,7 +46,7 @@ jobs: displayName: Publish Logs PathtoPublish: '$(Build.ArtifactStagingDirectory)/artifacts/log/$(_BuildConfig)' publishLocation: Container - ArtifactName: ${{ coalesce(parameters.enablePublishBuildArtifacts.artifactName, '$(Agent.Os)_$(Agent.JobName)_Attempt_$(System.JobAttempt)' ) }} + ArtifactName: ${{ coalesce(parameters.enablePublishBuildArtifacts.artifactName, '$(Agent.Os)_$(Agent.JobName)') }}_Attempt_$(System.JobAttempt) continueOnError: true condition: always() sbomEnabled: false # we don't need SBOM for logs diff --git a/eng/common/templates/job/job.yml b/eng/common/templates/job/job.yml index f919bbc6e39..d5a4ae6b446 100644 --- a/eng/common/templates/job/job.yml +++ b/eng/common/templates/job/job.yml @@ -66,7 +66,7 @@ jobs: displayName: Publish Logs pathToPublish: '$(Build.ArtifactStagingDirectory)/artifacts/log/$(_BuildConfig)' publishLocation: Container - artifactName: ${{ coalesce(parameters.enablePublishBuildArtifacts.artifactName, '$(Agent.Os)_$(Agent.JobName)_Attempt_$(System.JobAttempt)' ) }} + artifactName: ${{ coalesce(parameters.enablePublishBuildArtifacts.artifactName, '$(Agent.Os)_$(Agent.JobName)') }}_Attempt_$(System.JobAttempt) continueOnError: true condition: always()