diff --git a/eng/pipelines/templates/jobs/ci.tests.yml b/eng/pipelines/templates/jobs/ci.tests.yml index b3dfa3d8c620..4a32fed4025f 100644 --- a/eng/pipelines/templates/jobs/ci.tests.yml +++ b/eng/pipelines/templates/jobs/ci.tests.yml @@ -73,6 +73,11 @@ jobs: artifactName: "Crash Dump - $(System.JobName) - $(System.JobAttempt)" condition: eq(variables['uploadDump'], 'true') sbomEnabled: false + - output: pipelineArtifact + targetPath: '$(Build.ArtifactStagingDirectory)/llm-artifacts' + artifactName: "LLM Artifacts - $(System.JobName) - $(System.JobAttempt)" + condition: eq(variables['uploadTestResults'], 'true') + sbomEnabled: false steps: - ${{ if not(contains(variables['Build.DefinitionName'], '-pr - ')) }}: @@ -185,6 +190,7 @@ jobs: testResultsFormat: "VSTest" mergeTestResults: true - template: /eng/pipelines/templates/steps/upload-dumps.yml + - template: /eng/pipelines/templates/steps/upload-llm-artifacts.yml - task: Palmmedia.reportgenerator.reportgenerator-build-release-task.reportgenerator@5 condition: and(succeededOrFailed(), eq(variables['CollectCoverage'], 'true'), eq(variables['coverage.collected'], 'true')) displayName: Generate Code Coverage Reports diff --git a/eng/pipelines/templates/steps/upload-llm-artifacts.yml b/eng/pipelines/templates/steps/upload-llm-artifacts.yml new file mode 100644 index 000000000000..4797b83c1857 --- /dev/null +++ b/eng/pipelines/templates/steps/upload-llm-artifacts.yml @@ -0,0 +1,29 @@ +# This template serves as a place to upload artifacts intended to be used by LLMs +# that handle data from the pipeline (for example github copilot). + +steps: + - pwsh: | + $artifactsDirectory = "$(Build.ArtifactStagingDirectory)/llm-artifacts" + New-Item $artifactsDirectory -ItemType directory -Force + + Write-Host "=================" + Get-ChildItem -Path $(TestTargetFramework)*.trx -Recurse -File + Write-Host "=================" + + foreach($testResultsFile in (Get-ChildItem -Path $(TestTargetFramework)*.trx -Recurse -File)) + { + $fileFullName = $testResultsFile.FullName + + # Convert a path like + # /mnt/vss/_work/1/s/sdk/template/Azure.Template/tests/TestResults/net8.0.trx + # to + # template-Azure.Template-net8.0.trx + $serviceAndPackage = ($fileFullName -split 'sdk[\\/]|[\\/]tests')[1] -replace '[\\/]', '-' + $trxFile = Split-Path $fileFullName -Leaf + $fileName = "$serviceAndPackage-$trxFile" + + Move-Item -Path $fileFullName -Destination "$artifactsDirectory/$fileName" -ErrorAction Continue + Write-Host "##vso[task.setvariable variable=uploadTestResults]true" + } + condition: succeededOrFailed() + displayName: Copy test results files to llm artifacts staging directory