4a6706b638aed2de933f199493d4a8a075f753d8
[platform/upstream/coreclr.git] / eng / common / performance / performance-setup.ps1
1 Param(
2     [string] $SourceDirectory=$env:BUILD_SOURCESDIRECTORY,
3     [string] $CoreRootDirectory,
4     [string] $Architecture="x64",
5     [string] $Framework="netcoreapp5.0",
6     [string] $CompilationMode="Tiered",
7     [string] $Repository=$env:BUILD_REPOSITORY_NAME,
8     [string] $Branch=$env:BUILD_SOURCEBRANCH,
9     [string] $CommitSha=$env:BUILD_SOURCEVERSION,
10     [string] $BuildNumber=$env:BUILD_BUILDNUMBER,
11     [string] $RunCategories="coreclr corefx",
12     [string] $Csproj="src\benchmarks\micro\MicroBenchmarks.csproj",
13     [string] $Kind="micro",
14     [switch] $Internal,
15     [string] $Configurations="CompilationMode=$CompilationMode"
16 )
17
18 $RunFromPerformanceRepo = ($Repository -eq "dotnet/performance")
19 $UseCoreRun = ($CoreRootDirectory -ne [string]::Empty)
20
21 $PayloadDirectory = (Join-Path $SourceDirectory "Payload")
22 $PerformanceDirectory = (Join-Path $PayloadDirectory "performance")
23 $WorkItemDirectory = (Join-Path $SourceDirectory "workitem")
24 $ExtraBenchmarkDotNetArguments = "--iterationCount 1 --warmupCount 0 --invocationCount 1 --unrollFactor 1 --strategy ColdStart --stopOnFirstError true"
25 $Creator = $env:BUILD_DEFINITIONNAME
26 $PerfLabArguments = ""
27 $HelixSourcePrefix = "pr"
28
29 $Queue = "Windows.10.Amd64.ClientRS4.DevEx.15.8.Open"
30
31 if ($Framework.StartsWith("netcoreapp")) {
32     $Queue = "Windows.10.Amd64.ClientRS4.Open"
33 }
34
35 if ($Internal) {
36     $Queue = "Windows.10.Amd64.19H1.Tiger.Perf"
37     $PerfLabArguments = "--upload-to-perflab-container"
38     $ExtraBenchmarkDotNetArguments = ""
39     $Creator = ""
40     $HelixSourcePrefix = "official"
41 }
42
43 $CommonSetupArguments="--frameworks $Framework --queue $Queue --build-number $BuildNumber --build-configs $Configurations"
44 $SetupArguments = "--repository https://github.com/$Repository --branch $Branch --get-perf-hash --commit-sha $CommitSha $CommonSetupArguments"
45
46 if ($RunFromPerformanceRepo) {
47     $SetupArguments = "--perf-hash $CommitSha $CommonSetupArguments"
48     
49     robocopy $SourceDirectory $PerformanceDirectory /E /XD $PayloadDirectory $SourceDirectory\artifacts $SourceDirectory\.git
50 }
51 else {
52     git clone --branch master --depth 1 --quiet https://github.com/dotnet/performance $PerformanceDirectory
53 }
54
55 if ($UseCoreRun) {
56     $NewCoreRoot = (Join-Path $PayloadDirectory "Core_Root")
57     Move-Item -Path $CoreRootDirectory -Destination $NewCoreRoot
58 }
59
60 $DocsDir = (Join-Path $PerformanceDirectory "docs")
61 robocopy $DocsDir $WorkItemDirectory
62
63 # Set variables that we will need to have in future steps
64 $ci = $true
65
66 . "$PSScriptRoot\..\pipeline-logging-functions.ps1"
67
68 # Directories
69 Write-PipelineSetVariable -Name 'PayloadDirectory' -Value "$PayloadDirectory" -IsMultiJobVariable $false
70 Write-PipelineSetVariable -Name 'PerformanceDirectory' -Value "$PerformanceDirectory" -IsMultiJobVariable $false
71 Write-PipelineSetVariable -Name 'WorkItemDirectory' -Value "$WorkItemDirectory" -IsMultiJobVariable $false
72
73 # Script Arguments
74 Write-PipelineSetVariable -Name 'Python' -Value "py -3" -IsMultiJobVariable $false
75 Write-PipelineSetVariable -Name 'ExtraBenchmarkDotNetArguments' -Value "$ExtraBenchmarkDotNetArguments" -IsMultiJobVariable $false
76 Write-PipelineSetVariable -Name 'SetupArguments' -Value "$SetupArguments" -IsMultiJobVariable $false
77 Write-PipelineSetVariable -Name 'PerfLabArguments' -Value "$PerfLabArguments" -IsMultiJobVariable $false
78 Write-PipelineSetVariable -Name 'BDNCategories' -Value "$RunCategories" -IsMultiJobVariable $false
79 Write-PipelineSetVariable -Name 'TargetCsproj' -Value "$Csproj" -IsMultiJobVariable $false
80 Write-PipelineSetVariable -Name 'Kind' -Value "$Kind" -IsMultiJobVariable $false
81 Write-PipelineSetVariable -Name 'Architecture' -Value "$Architecture" -IsMultiJobVariable $false
82 Write-PipelineSetVariable -Name 'UseCoreRun' -Value "$UseCoreRun" -IsMultiJobVariable $false
83 Write-PipelineSetVariable -Name 'RunFromPerfRepo' -Value "$RunFromPerformanceRepo" -IsMultiJobVariable $false
84
85 # Helix Arguments
86 Write-PipelineSetVariable -Name 'Creator' -Value "$Creator" -IsMultiJobVariable $false
87 Write-PipelineSetVariable -Name 'Queue' -Value "$Queue" -IsMultiJobVariable $false
88 Write-PipelineSetVariable -Name 'HelixSourcePrefix' -Value "$HelixSourcePrefix" -IsMultiJobVariable $false
89 Write-PipelineSetVariable -Name '_BuildConfig' -Value "$Architecture.$Kind.$Framework" -IsMultiJobVariable $false
90
91 exit 0