Skip to content

Commit e0aa738

Browse files
authored
[7.0.x] Use 1ES OutputParentDirectory to reduce scanning tasks (#7027)
1 parent 6f0260c commit e0aa738

4 files changed

Lines changed: 67 additions & 27 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 & 6 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,26 +257,45 @@ 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
256-
condition: "and(succeeded(), eq(variables['IsOfficialBuild'], 'true'))"
257268

258269
- task: MSBuild@1
259270
displayName: "LocValidation: Verify VSIX"
260271
inputs:
261272
solution: "build\\BuildValidator.proj"
262273
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"
274+
msbuildArguments: "/target:ValidateVsix /property:BuildRTM=$(BuildRTM) /property:LogsBasePath=$(Build.StagingDirectory)\\BuildValidatorLogs /property:TempDirectory=$(Agent.TempDirectory) /binarylogger:$(Build.StagingDirectory)\\binlog\\19.ValidateVsixLocalization.binlog"
264275
condition: "and(succeeded(), eq(variables['BuildRTM'], 'false'))"
265276

266277
- task: MSBuild@1
267278
displayName: "LocValidation: Verify Artifacts"
268279
inputs:
269280
solution: "build\\BuildValidator.proj"
270281
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"
282+
msbuildArguments: "/target:ValidateArtifacts /property:BuildRTM=$(BuildRTM) /property:LogsBasePath=$(Build.StagingDirectory)\\BuildValidatorLogs /property:TempDirectory=$(Agent.TempDirectory) /binarylogger:$(Build.StagingDirectory)\\binlog\\20.ValidateArtifactsLocalization.binlog"
272283
condition: "and(succeeded(), eq(variables['BuildRTM'], 'false'))"
273284

285+
- task: CopyFiles@2
286+
displayName: Copy product to staging directory
287+
inputs:
288+
SourceFolder: '$(Build.Repository.LocalPath)\\artifacts\\VS15'
289+
Contents: '**'
290+
TargetFolder: '$(Build.StagingDirectory)\\VS15'
291+
292+
- task: CopyFiles@2
293+
displayName: Copy nupkgs to staging directory
294+
inputs:
295+
SourceFolder: '$(Build.Repository.LocalPath)\\artifacts\\$(NupkgOutputDir)'
296+
Contents: '**'
297+
TargetFolder: '$(Build.StagingDirectory)\\nupkgs'
298+
274299
# Use dotnet msbuild instead of MSBuild CLI.
275300
# 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.
276301
# 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 & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -94,18 +94,18 @@ 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'
107-
condition: "and(succeeded(), eq(variables['IsOfficialBuild'], 'true'))"
108-
targetPath: "$(Build.Repository.LocalPath)\\artifacts\\$(NupkgOutputDir)"
108+
targetPath: "$(Build.StagingDirectory)\\nupkgs"
109109
artifactName: "nupkgs - $(RtmLabel)"
110110
sbomBuildDropPath: $(Build.SourcesDirectory)/artifacts
111111

@@ -114,7 +114,7 @@ stages:
114114
condition: "succeeded()"
115115
dropServiceURI: 'https://devdiv.artifacts.visualstudio.com'
116116
buildNumber: '$(RunSettingsDropName)'
117-
sourcePath: 'artifacts\RunSettings'
117+
sourcePath: '$(Build.StagingDirectory)\RunSettings'
118118
toLowerCase: false
119119
usePat: true
120120
dropMetadataContainerName: 'DropMetadata-RunSettings'
@@ -126,21 +126,20 @@ stages:
126126
condition: "and(succeeded(), eq(variables['IsOfficialBuild'], 'true'))"
127127
dropServiceURI: 'https://devdiv.artifacts.visualstudio.com'
128128
buildNumber: '$(ProfilingInputsDropName)'
129-
sourcePath: '$(Build.ArtifactStagingDirectory)\OptProf\ProfilingInputs'
129+
sourcePath: '$(Build.StagingDirectory)\OptProf\ProfilingInputs'
130130
toLowerCase: false
131131
usePat: true
132132
dropMetadataContainerName: 'DropMetadata-ProfilingInputs'
133133

134134
- output: pipelineArtifact
135135
displayName: 'Publish NuGet.exe and VSIX as artifact'
136-
targetPath: "$(Build.Repository.LocalPath)\\artifacts\\VS15"
136+
targetPath: "$(Build.StagingDirectory)\\VS15"
137137
artifactName: "$(VsixPublishDir)"
138138
sbomBuildDropPath: $(Build.SourcesDirectory)/artifacts
139139

140140
- output: pipelineArtifact
141141
displayName: 'Publish symbols as pipeline artifacts'
142-
condition: "and(succeeded(), eq(variables['IsOfficialBuild'], 'true'))"
143-
targetPath: "$(Build.Repository.LocalPath)\\artifacts\\symbolstoindex"
142+
targetPath: "$(Build.StagingDirectory)\\symbolstoindex"
144143
artifactName: "symbols - $(RtmLabel)"
145144
sbomBuildDropPath: $(Build.SourcesDirectory)/artifacts
146145

@@ -149,7 +148,7 @@ stages:
149148
condition: "succeeded()"
150149
dropServiceURI: 'https://devdiv.artifacts.visualstudio.com'
151150
buildNumber: '$(MicroBuild.ManifestDropName)'
152-
sourcePath: "$(Build.Repository.LocalPath)\\artifacts\\VS15"
151+
sourcePath: "$(Build.StagingDirectory)\\VS15"
153152
toLowerCase: false
154153
usePat: true
155154
dropMetadataContainerName: "DropMetadata-Product"
@@ -158,7 +157,7 @@ stages:
158157
displayName: 'LocValidation: Publish Logs as an artifact'
159158
condition: "succeededOrFailed()"
160159
artifactName: LocValidationLogs - Attempt $(System.JobAttempt)
161-
targetPath: "$(Build.Repository.LocalPath)\\logs\\BuildValidatorLogs"
160+
targetPath: "$(Build.StagingDirectory)\\BuildValidatorLogs"
162161
sbomEnabled: true
163162

164163
- output: pipelineArtifact
@@ -171,7 +170,7 @@ stages:
171170
- output: pipelineArtifact
172171
displayName: Publish SBOM manifest
173172
artifactName: $(ARTIFACT_NAME)
174-
targetPath: "$(Build.SourcesDirectory)/artifacts/_manifest"
173+
targetPath: "$(Build.StagingDirectory)/sbom"
175174
sbomEnabled: false
176175

177176
steps:
@@ -209,24 +208,24 @@ stages:
209208
enabled: true
210209
optprof:
211210
enabled: false
211+
outputParentDirectory: '$(Build.StagingDirectory)'
212212
outputs:
213213
- output: pipelineArtifact
214214
displayName: 'Publish nupkgs'
215215
condition: "succeeded()"
216-
targetPath: "$(Build.Repository.LocalPath)\\artifacts\\$(NupkgOutputDir)"
216+
targetPath: "$(Build.StagingDirectory)\\$(NupkgOutputDir)"
217217
artifactName: "nupkgs - $(RtmLabel)"
218218
sbomBuildDropPath: $(Build.SourcesDirectory)/artifacts
219219

220220
- output: pipelineArtifact
221221
displayName: 'Publish NuGet.exe and VSIX as artifact'
222-
targetPath: "$(Build.Repository.LocalPath)\\artifacts\\VS15"
222+
targetPath: "$(Build.StagingDirectory)\\VS15"
223223
artifactName: "$(VsixPublishDir)"
224224
sbomBuildDropPath: $(Build.SourcesDirectory)/artifacts
225225

226226
- output: pipelineArtifact
227227
displayName: 'Publish symbols as pipeline artifacts'
228-
condition: "and(succeeded(), eq(variables['IsOfficialBuild'], 'true'))"
229-
targetPath: "$(Build.Repository.LocalPath)\\artifacts\\symbolstoindex"
228+
targetPath: "$(Build.StagingDirectory)\\symbolstoindex"
230229
artifactName: "symbols - $(RtmLabel)"
231230
sbomBuildDropPath: $(Build.SourcesDirectory)/artifacts
232231

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)