@@ -144,52 +144,55 @@ extends:
144
144
- job : OfficialBuild
145
145
displayName : Official Build
146
146
timeoutInMinutes : 360
147
+ variables :
148
+ - name : UploadArtifactsDirectory
149
+ value : $(Build.SourcesDirectory)\artifacts\UploadArtifacts
147
150
templateContext :
148
- outputParentDirectory : $(Build.SourcesDirectory)\artifacts
151
+ outputParentDirectory : $(UploadArtifactsDirectory)
149
152
outputs :
150
153
151
154
# Publish OptProf generated JSON files as a pipeline artifact. This allows for easy inspection from
152
155
# a build execution.
153
156
- output : pipelineArtifact
154
157
displayName : ' Publish OptProf Data Files'
155
158
condition : succeeded()
156
- targetPath : ' $(Build.SourcesDirectory)\artifacts \OptProf\$(BuildConfiguration)\Data'
159
+ targetPath : ' $(UploadArtifactsDirectory) \OptProf\$(BuildConfiguration)\Data'
157
160
artifactName : ' OptProf Data Files'
158
161
159
162
- output : pipelineArtifact
160
163
displayName : ' Publish Logs'
161
164
condition : succeededOrFailed()
162
- targetPath : ' $(Build.SourcesDirectory)\artifacts \log\$(BuildConfiguration)'
165
+ targetPath : ' $(UploadArtifactsDirectory) \log\$(BuildConfiguration)'
163
166
artifactName : ' Build Diagnostic Files'
164
167
publishLocation : Container
165
168
166
169
- output : pipelineArtifact
167
170
displayName : ' Publish Ngen Logs'
168
171
condition : and(succeeded(), ${{ not(parameters.SkipApplyOptimizationData) }})
169
- targetPath : ' $(Build.SourcesDirectory)\artifacts \log\$(BuildConfiguration)\ngen'
172
+ targetPath : ' $(UploadArtifactsDirectory) \log\$(BuildConfiguration)\ngen'
170
173
artifactName : ' NGen Logs'
171
174
publishLocation : Container
172
175
173
176
# Publish an artifact that the RoslynInsertionTool is able to find by its name.
174
177
- output : pipelineArtifact
175
178
displayName : ' Publish Artifact VSSetup'
176
179
condition : succeeded()
177
- targetPath : ' $(Build.SourcesDirectory)\artifacts \VSSetup\$(BuildConfiguration)'
180
+ targetPath : ' $(UploadArtifactsDirectory) \VSSetup\$(BuildConfiguration)'
178
181
artifactName : ' VSSetup'
179
182
180
183
# Publish our NuPkgs as an artifact. The name of this artifact must be PackageArtifacts as the
181
184
# arcade templates depend on the name.
182
185
- output : pipelineArtifact
183
186
displayName : ' Publish Artifact Packages'
184
187
condition : succeeded()
185
- targetPath : ' $(Build.SourcesDirectory)\artifacts \packages\$(BuildConfiguration)'
188
+ targetPath : ' $(UploadArtifactsDirectory) \packages\$(BuildConfiguration)'
186
189
ArtifactName : ' PackageArtifacts'
187
190
188
191
# Publish Asset Manifests for Build Asset Registry job
189
192
- output : pipelineArtifact
190
193
displayName : ' Publish Asset Manifests'
191
194
condition : succeeded()
192
- targetPath : ' $(Build.SourcesDirectory)\artifacts \log\$(BuildConfiguration)\AssetManifest'
195
+ targetPath : ' $(UploadArtifactsDirectory) \log\$(BuildConfiguration)\AssetManifest'
193
196
ArtifactName : AssetManifests
194
197
195
198
# Publish OptProf configuration files to the artifact service
@@ -199,7 +202,7 @@ extends:
199
202
condition : succeeded()
200
203
dropServiceURI : ' https://devdiv.artifacts.visualstudio.com'
201
204
buildNumber : ' ProfilingInputs/$(System.TeamProject)/$(Build.Repository.Name)/$(SourceBranchName)/$(Build.BuildNumber)'
202
- sourcePath : ' $(Build.SourcesDirectory)\artifacts \OptProf\$(BuildConfiguration)\Data'
205
+ sourcePath : ' $(UploadArtifactsDirectory) \OptProf\$(BuildConfiguration)\Data'
203
206
toLowerCase : false
204
207
usePat : false
205
208
retentionDays : 90
@@ -208,8 +211,8 @@ extends:
208
211
- output : nuget
209
212
displayName : ' Publish CoreXT Packages'
210
213
condition : succeeded()
211
- packageParentPath : ' $(Build.SourcesDirectory)\artifacts \VSSetup\$(BuildConfiguration)\DevDivPackages'
212
- packagesToPush : ' $(Build.SourcesDirectory)\artifacts \VSSetup\$(BuildConfiguration)\DevDivPackages\**\*.nupkg'
214
+ packageParentPath : ' $(UploadArtifactsDirectory) \VSSetup\$(BuildConfiguration)\DevDivPackages'
215
+ packagesToPush : ' $(UploadArtifactsDirectory) \VSSetup\$(BuildConfiguration)\DevDivPackages\**\*.nupkg'
213
216
allowPackageConflicts : true
214
217
nuGetFeedType : external
215
218
publishFeedCredentials : ' DevDiv - VS package feed'
@@ -219,7 +222,7 @@ extends:
219
222
- output : microBuildVstsDrop
220
223
displayName : Upload VSTS Drop
221
224
condition : succeeded()
222
- dropFolder : ' artifacts \VSSetup\$(BuildConfiguration)\Insertion'
225
+ dropFolder : ' $(UploadArtifactsDirectory) \VSSetup\$(BuildConfiguration)\Insertion'
223
226
dropName : $(VisualStudio.DropName)
224
227
accessToken : $(_DevDivDropAccessToken)
225
228
dropRetentionDays : 90
@@ -349,6 +352,29 @@ extends:
349
352
testRunTitle : ' Unit Tests'
350
353
condition : and(succeededOrFailed(), ne(variables['SkipTests'], 'true'))
351
354
355
+ # Copy all the artifacts we're going to upload from this build to a common directory.
356
+ # This lets guardian scan all the upload artifacts in one go, while also avoiding
357
+ # scanning all the other random build artifacts.
358
+ - powershell : |
359
+ $commonArtifactsDir = "$(UploadArtifactsDirectory)"
360
+ New-Item -ItemType Directory -Force -Path $commonArtifactsDir
361
+
362
+ $artifactsToCopy = @(
363
+ "$(Build.SourcesDirectory)\artifacts\OptProf\",
364
+ "$(Build.SourcesDirectory)\artifacts\log\",
365
+ "$(Build.SourcesDirectory)\artifacts\VSSetup\",
366
+ "$(Build.SourcesDirectory)\artifacts\packages\"
367
+ )
368
+
369
+ foreach ($artifact in $artifactsToCopy) {
370
+ if (Test-Path $artifact) {
371
+ Copy-Item -Path $artifact -Destination $commonArtifactsDir -Recurse -Force
372
+ } else {
373
+ Write-Host "Artifact path not found- $artifact"
374
+ }
375
+ }
376
+ displayName: Copy Artifacts to Common Directory
377
+
352
378
# Publish to Build Asset Registry
353
379
- template : /eng/common/templates-official/job/publish-build-assets.yml@self
354
380
parameters :
0 commit comments