Skip to content

Commit faffb58

Browse files
authored
Use 1ES OutputParentDirectory to reduce scanning tasks (#7023)
1 parent 36a5b01 commit faffb58

4 files changed

Lines changed: 67 additions & 23 deletions

File tree

build/symbols.proj

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<Project ToolsVersion="15.0" DefaultTargets="GetSymbolsAndAssembliesToIndex" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
33
<Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), 'README.md'))\build\common.props" />
4-
4+
55
<!-- Configuration/global properties -->
66
<PropertyGroup>
77
<CommonMSBuildProperties>
@@ -13,6 +13,7 @@
1313
</PropertyGroup>
1414

1515
<Target Name="GetSymbolsAndAssembliesToIndex">
16+
<Error Condition="'$(SymbolsOutputDirectory)' == ''" Text="SymbolsOutputDirectory property must be set."/>
1617
<MSBuild
1718
Projects="@(SolutionProjectsWithoutVSIX)"
1819
Targets="GetSymbolsToIndex"
@@ -25,10 +26,10 @@
2526
<ItemGroup>
2627
<FilteredSymbolsToIndex Include="@(SymbolsToIndex)" Condition="'%(SymbolsToIndex.Extension)' == '.dll' OR '%(SymbolsToIndex.Extension)' == '.exe'
2728
OR '%(SymbolsToIndex.Extension)' == '.pdb'">
28-
<DestinationDir>$(ArtifactsDirectory)symbolstoindex\$([MSBuild]::MakeRelative($(ArtifactsDirectory), %(SymbolsToIndex.Identity)))</DestinationDir>
29+
<DestinationDir>$(SymbolsOutputDirectory)\$([MSBuild]::MakeRelative($(ArtifactsDirectory), %(SymbolsToIndex.Identity)))</DestinationDir>
2930
</FilteredSymbolsToIndex>
3031
</ItemGroup>
3132
<Copy SourceFiles="@(FilteredSymbolsToIndex->'%(Identity)')" DestinationFiles="@(FilteredSymbolsToIndex->'%(DestinationDir)')"/>
3233
<Message Text="SymbolsToIndex: @(FilteredSymbolsToIndex, '%0a')" Importance="High"/>
3334
</Target>
34-
</Project>
35+
</Project>

eng/pipelines/templates/Build.yml

Lines changed: 31 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,13 @@ steps:
1515
- task: PowerShell@1
1616
inputs:
1717
scriptName: "$(Build.Repository.LocalPath)\\scripts\\cibuild\\ConfigureVstsBuild.ps1"
18-
arguments: "-BuildRTM $(BuildRTM) -RepositoryPath $(Build.Repository.LocalPath) -BranchName $(SourceBranch) -CommitHash $(Build.SourceVersion) -BuildNumber $(Build.BuildNumber)"
18+
arguments: >-
19+
-BuildRTM $(BuildRTM)
20+
-RepositoryPath $(Build.Repository.LocalPath)
21+
-BranchName $(SourceBranch)
22+
-CommitHash $(Build.SourceVersion)
23+
-BuildNumber $(Build.BuildNumber)
24+
-BuildInfoDirectory $(Build.StagingDirectory)\BuildInfo
1925
displayName: "Configure VSTS CI Environment"
2026

2127
- task: PowerShell@1
@@ -225,7 +231,7 @@ steps:
225231
displayName: "Generate .runsettings files"
226232
inputs:
227233
solution: 'build\runsettings.proj'
228-
msbuildArguments: '/restore:false /property:OutputPath="$(Build.Repository.LocalPath)\artifacts\RunSettings" /property:TestDrop="$(RunSettingsDropName)" /property:ProfilingInputsDrop="$(ProfilingInputsDropName)" /binarylogger:$(Build.StagingDirectory)\\binlog\\17.GenerateRunSettings.binlog'
234+
msbuildArguments: '/restore:false /property:OutputPath="$(Build.StagingDirectory)\RunSettings" /property:TestDrop="$(RunSettingsDropName)" /property:ProfilingInputsDrop="$(ProfilingInputsDropName)" /binarylogger:$(Build.StagingDirectory)\\binlog\\17.GenerateRunSettings.binlog'
229235
condition: "and(succeeded(), eq(variables['BuildRTM'], 'false'))"
230236

231237
- task: PowerShell@1
@@ -251,7 +257,13 @@ steps:
251257
inputs:
252258
solution: "build\\symbols.proj"
253259
configuration: "$(BuildConfiguration)"
254-
msbuildArguments: "/restore:false /property:BuildProjectReferences=false /property:IsSymbolBuild=true /property:BuildRTM=$(BuildRTM) /binarylogger:$(Build.StagingDirectory)\\binlog\\18.CollectBuildSymbols.binlog"
260+
msbuildArguments: >-
261+
/restore:false
262+
/property:BuildProjectReferences=false
263+
/property:IsSymbolBuild=true
264+
/property:BuildRTM=$(BuildRTM)
265+
/property:SymbolsOutputDirectory=$(Build.StagingDirectory)\\symbolstoindex
266+
/binarylogger:$(Build.StagingDirectory)\\binlog\\18.CollectBuildSymbols.binlog"
255267
maximumCpuCount: true
256268
condition: "and(succeeded(), eq(variables['IsOfficialBuild'], 'true'))"
257269

@@ -260,17 +272,31 @@ steps:
260272
inputs:
261273
solution: "build\\BuildValidator.proj"
262274
configuration: "$(BuildConfiguration)"
263-
msbuildArguments: "/target:ValidateVsix /property:BuildRTM=$(BuildRTM) /property:LogsBasePath=$(Build.Repository.LocalPath)\\logs\\BuildValidatorLogs /property:TempDirectory=$(Agent.TempDirectory) /binarylogger:$(Build.StagingDirectory)\\binlog\\19.ValidateVsixLocalization.binlog"
275+
msbuildArguments: "/target:ValidateVsix /property:BuildRTM=$(BuildRTM) /property:LogsBasePath=$(Build.StagingDirectory)\\BuildValidatorLogs /property:TempDirectory=$(Agent.TempDirectory) /binarylogger:$(Build.StagingDirectory)\\binlog\\19.ValidateVsixLocalization.binlog"
264276
condition: "and(succeeded(), eq(variables['BuildRTM'], 'false'))"
265277

266278
- task: MSBuild@1
267279
displayName: "LocValidation: Verify Artifacts"
268280
inputs:
269281
solution: "build\\BuildValidator.proj"
270282
configuration: "$(BuildConfiguration)"
271-
msbuildArguments: "/target:ValidateArtifacts /property:BuildRTM=$(BuildRTM) /property:LogsBasePath=$(Build.Repository.LocalPath)\\logs\\BuildValidatorLogs /property:TempDirectory=$(Agent.TempDirectory) /binarylogger:$(Build.StagingDirectory)\\binlog\\20.ValidateArtifactsLocalization.binlog"
283+
msbuildArguments: "/target:ValidateArtifacts /property:BuildRTM=$(BuildRTM) /property:LogsBasePath=$(Build.StagingDirectory)\\BuildValidatorLogs /property:TempDirectory=$(Agent.TempDirectory) /binarylogger:$(Build.StagingDirectory)\\binlog\\20.ValidateArtifactsLocalization.binlog"
272284
condition: "and(succeeded(), eq(variables['BuildRTM'], 'false'))"
273285

286+
- task: CopyFiles@2
287+
displayName: Copy product to staging directory
288+
inputs:
289+
SourceFolder: '$(Build.Repository.LocalPath)\\artifacts\\VS15'
290+
Contents: '**'
291+
TargetFolder: '$(Build.StagingDirectory)\\VS15'
292+
293+
- task: CopyFiles@2
294+
displayName: Copy nupkgs to staging directory
295+
inputs:
296+
SourceFolder: '$(Build.Repository.LocalPath)\\artifacts\\$(NupkgOutputDir)'
297+
Contents: '**'
298+
TargetFolder: '$(Build.StagingDirectory)\\nupkgs'
299+
274300
# Use dotnet msbuild instead of MSBuild CLI.
275301
# Using MSBuild CLI results in an assembly binding failure for NuGet.Common.dll 4.4.0.3 because Microsoft.DotNet.Build.Tasks.Feed.dll references SleetLib.dll which references NuGet.Common 4.4.0.3.
276302
# The Microsoft.DotNet.Build.Tasks.Feed package includes NuGet.Common 4.9.0.6 and a binding redirection in Microsoft.DotNet.Build.Tasks.Feed.dll.config but the binding redirection is not processed.

eng/pipelines/templates/pipeline.yml

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -94,18 +94,19 @@ stages:
9494
DropNamePrefix: OptimizationInputs/$(System.TeamProject)/$(Build.Repository.Name)
9595
ShouldSkipOptimize: $(ShouldSkipOptimize)
9696
AccessToken: $(System.AccessToken)
97+
outputParentDirectory: '$(Build.StagingDirectory)'
9798
outputs:
9899
- output: pipelineArtifact
99100
displayName: 'Publish buildinfo.json as an artifact'
100101
condition: "succeeded()"
101-
targetPath: '$(Build.Repository.LocalPath)\artifacts\buildinfo.json'
102+
targetPath: '$(Build.StagingDirectory)\BuildInfo'
102103
artifactName: 'BuildInfo'
103104
sbomBuildDropPath: $(Build.SourcesDirectory)/artifacts
104105

105106
- output: pipelineArtifact
106107
displayName: 'Publish nupkgs'
107108
condition: "and(succeeded(), eq(variables['IsOfficialBuild'], 'true'))"
108-
targetPath: "$(Build.Repository.LocalPath)\\artifacts\\$(NupkgOutputDir)"
109+
targetPath: "$(Build.StagingDirectory)\\nupkgs"
109110
artifactName: "nupkgs - $(RtmLabel)"
110111
sbomBuildDropPath: $(Build.SourcesDirectory)/artifacts
111112

@@ -114,7 +115,7 @@ stages:
114115
condition: "succeeded()"
115116
dropServiceURI: 'https://devdiv.artifacts.visualstudio.com'
116117
buildNumber: '$(RunSettingsDropName)'
117-
sourcePath: 'artifacts\RunSettings'
118+
sourcePath: '$(Build.StagingDirectory)\RunSettings'
118119
toLowerCase: false
119120
usePat: true
120121
dropMetadataContainerName: 'DropMetadata-RunSettings'
@@ -126,21 +127,21 @@ stages:
126127
condition: "and(succeeded(), eq(variables['IsOfficialBuild'], 'true'))"
127128
dropServiceURI: 'https://devdiv.artifacts.visualstudio.com'
128129
buildNumber: '$(ProfilingInputsDropName)'
129-
sourcePath: '$(Build.ArtifactStagingDirectory)\OptProf\ProfilingInputs'
130+
sourcePath: '$(Build.StagingDirectory)\OptProf\ProfilingInputs'
130131
toLowerCase: false
131132
usePat: true
132133
dropMetadataContainerName: 'DropMetadata-ProfilingInputs'
133134

134135
- output: pipelineArtifact
135136
displayName: 'Publish NuGet.exe and VSIX as artifact'
136-
targetPath: "$(Build.Repository.LocalPath)\\artifacts\\VS15"
137+
targetPath: "$(Build.StagingDirectory)\\VS15"
137138
artifactName: "$(VsixPublishDir)"
138139
sbomBuildDropPath: $(Build.SourcesDirectory)/artifacts
139140

140141
- output: pipelineArtifact
141142
displayName: 'Publish symbols as pipeline artifacts'
142143
condition: "and(succeeded(), eq(variables['IsOfficialBuild'], 'true'))"
143-
targetPath: "$(Build.Repository.LocalPath)\\artifacts\\symbolstoindex"
144+
targetPath: "$(Build.StagingDirectory)\\symbolstoindex"
144145
artifactName: "symbols - $(RtmLabel)"
145146
sbomBuildDropPath: $(Build.SourcesDirectory)/artifacts
146147

@@ -149,7 +150,7 @@ stages:
149150
condition: "succeeded()"
150151
dropServiceURI: 'https://devdiv.artifacts.visualstudio.com'
151152
buildNumber: '$(MicroBuild.ManifestDropName)'
152-
sourcePath: "$(Build.Repository.LocalPath)\\artifacts\\VS15"
153+
sourcePath: "$(Build.StagingDirectory)\\VS15"
153154
toLowerCase: false
154155
usePat: true
155156
dropMetadataContainerName: "DropMetadata-Product"
@@ -158,7 +159,7 @@ stages:
158159
displayName: 'LocValidation: Publish Logs as an artifact'
159160
condition: "succeededOrFailed()"
160161
artifactName: LocValidationLogs - Attempt $(System.JobAttempt)
161-
targetPath: "$(Build.Repository.LocalPath)\\logs\\BuildValidatorLogs"
162+
targetPath: "$(Build.StagingDirectory)\\BuildValidatorLogs"
162163
sbomEnabled: true
163164

164165
- output: pipelineArtifact
@@ -171,7 +172,7 @@ stages:
171172
- output: pipelineArtifact
172173
displayName: Publish SBOM manifest
173174
artifactName: $(ARTIFACT_NAME)
174-
targetPath: "$(Build.SourcesDirectory)/artifacts/_manifest"
175+
targetPath: "$(Build.StagingDirectory)/sbom"
175176
sbomEnabled: false
176177

177178
steps:
@@ -209,24 +210,25 @@ stages:
209210
enabled: true
210211
optprof:
211212
enabled: false
213+
outputParentDirectory: '$(Build.StagingDirectory)'
212214
outputs:
213215
- output: pipelineArtifact
214216
displayName: 'Publish nupkgs'
215217
condition: "succeeded()"
216-
targetPath: "$(Build.Repository.LocalPath)\\artifacts\\$(NupkgOutputDir)"
218+
targetPath: "$(Build.StagingDirectory)\\$(NupkgOutputDir)"
217219
artifactName: "nupkgs - $(RtmLabel)"
218220
sbomBuildDropPath: $(Build.SourcesDirectory)/artifacts
219221

220222
- output: pipelineArtifact
221223
displayName: 'Publish NuGet.exe and VSIX as artifact'
222-
targetPath: "$(Build.Repository.LocalPath)\\artifacts\\VS15"
224+
targetPath: "$(Build.StagingDirectory)\\VS15"
223225
artifactName: "$(VsixPublishDir)"
224226
sbomBuildDropPath: $(Build.SourcesDirectory)/artifacts
225227

226228
- output: pipelineArtifact
227229
displayName: 'Publish symbols as pipeline artifacts'
228230
condition: "and(succeeded(), eq(variables['IsOfficialBuild'], 'true'))"
229-
targetPath: "$(Build.Repository.LocalPath)\\artifacts\\symbolstoindex"
231+
targetPath: "$(Build.StagingDirectory)\\symbolstoindex"
230232
artifactName: "symbols - $(RtmLabel)"
231233
sbomBuildDropPath: $(Build.SourcesDirectory)/artifacts
232234

scripts/cibuild/ConfigureVstsBuild.ps1

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,9 @@ The commit hash being built
2121
2222
.PARAMETER BuildNumber
2323
The build number of the current build
24+
25+
.PARAMETER BuildInfoDirectory
26+
Optional directory path to write buildinfo.json to. When not provided, defaults to the repository's artifacts directory.
2427
#>
2528

2629
param
@@ -34,7 +37,9 @@ param
3437
[Parameter(Mandatory=$true)]
3538
[string]$CommitHash,
3639
[Parameter(Mandatory=$true)]
37-
[string]$BuildNumber
40+
[string]$BuildNumber,
41+
[Parameter(Mandatory=$false)]
42+
[string]$BuildInfoDirectory
3843
)
3944

4045
Function Get-Version {
@@ -141,11 +146,21 @@ else
141146
NuGetVsVersion = $GetNuGetVsVersion
142147
}
143148

144-
# First create the file locally so that we can laster publish it as a build artifact from a local source file instead of a remote source file.
145-
$localBuildInfoJsonFilePath = [System.IO.Path]::Combine("$RepositoryPath\artifacts", 'buildinfo.json')
149+
if (-not [string]::IsNullOrWhiteSpace($BuildInfoDirectory))
150+
{
151+
$buildInfoDirectoryPath = $BuildInfoDirectory
152+
}
153+
else
154+
{
155+
$buildInfoDirectoryPath = Join-Path $RepositoryPath 'artifacts'
156+
}
157+
158+
New-Item -Path $buildInfoDirectoryPath -ItemType Directory -Force | Out-Null
159+
$localBuildInfoJsonFilePath = Join-Path $buildInfoDirectoryPath 'buildinfo.json'
146160

147161
New-Item $localBuildInfoJsonFilePath -Force | Out-Null
148162
$jsonRepresentation | ConvertTo-Json | Set-Content $localBuildInfoJsonFilePath
163+
Write-Host "Created $localBuildInfoJsonFilePath"
149164

150165
Update-VsixVersion -manifestName source.extension.vsixmanifest -buildNumber $BuildNumber -RepositoryPath $RepositoryPath
151166
}

0 commit comments

Comments
 (0)