2019-07-11 12:25:27 +00:00
#!/usr/bin/env bash
source_directory = $BUILD_SOURCESDIRECTORY
core_root_directory =
2019-08-23 12:33:14 +00:00
baseline_core_root_directory =
2019-07-11 12:25:27 +00:00
architecture = x64
2019-08-17 12:31:30 +00:00
framework = netcoreapp5.0
2019-07-11 12:25:27 +00:00
compilation_mode = tiered
repository = $BUILD_REPOSITORY_NAME
branch = $BUILD_SOURCEBRANCH
commit_sha = $BUILD_SOURCEVERSION
build_number = $BUILD_BUILDNUMBER
internal = false
2019-08-23 12:33:14 +00:00
compare = false
2019-07-11 12:25:27 +00:00
kind = "micro"
run_categories = "coreclr corefx"
csproj = "src\benchmarks\micro\MicroBenchmarks.csproj"
configurations =
run_from_perf_repo = false
use_core_run = true
2019-08-23 12:33:14 +00:00
use_baseline_core_run = true
2019-07-11 12:25:27 +00:00
while ( ( $# > 0) ) ; do
lowerI = " $( echo $1 | awk '{print tolower($0)}' ) "
case $lowerI in
--sourcedirectory)
source_directory = $2
shift 2
; ;
--corerootdirectory)
core_root_directory = $2
shift 2
; ;
2019-08-23 12:33:14 +00:00
--baselinecorerootdirectory)
baseline_core_root_directory = $2
shift 2
; ;
2019-07-11 12:25:27 +00:00
--architecture)
architecture = $2
shift 2
; ;
--framework)
framework = $2
shift 2
; ;
--compilationmode)
compilation_mode = $2
shift 2
; ;
--repository)
repository = $2
shift 2
; ;
--branch)
branch = $2
shift 2
; ;
--commitsha)
commit_sha = $2
shift 2
; ;
--buildnumber)
build_number = $2
shift 2
; ;
--kind)
kind = $2
shift 2
; ;
--runcategories)
run_categories = $2
shift 2
; ;
--csproj)
csproj = $2
shift 2
; ;
--internal)
internal = true
shift 1
; ;
2019-08-23 12:33:14 +00:00
--compare)
compare = true
shift 1
; ;
2019-07-11 12:25:27 +00:00
--configurations)
configurations = $2
shift 2
; ;
--help)
echo "Common settings:"
echo " --corerootdirectory <value> Directory where Core_Root exists, if running perf testing with --corerun"
echo " --architecture <value> Architecture of the testing being run"
echo " --configurations <value> List of key=value pairs that will be passed to perf testing infrastructure."
echo " ex: --configurations \"CompilationMode=Tiered OptimzationLevel=PGO\""
echo " --help Print help and exit"
echo ""
echo "Advanced settings:"
echo " --framework <value> The framework to run, if not running in master"
echo " --compliationmode <value> The compilation mode if not passing --configurations"
echo " --sourcedirectory <value> The directory of the sources. Defaults to env:BUILD_SOURCESDIRECTORY"
echo " --repository <value> The name of the repository in the <owner>/<repository name> format. Defaults to env:BUILD_REPOSITORY_NAME"
echo " --branch <value> The name of the branch. Defaults to env:BUILD_SOURCEBRANCH"
echo " --commitsha <value> The commit sha1 to run against. Defaults to env:BUILD_SOURCEVERSION"
echo " --buildnumber <value> The build number currently running. Defaults to env:BUILD_BUILDNUMBER"
echo " --csproj The relative path to the benchmark csproj whose tests should be run. Defaults to src\benchmarks\micro\MicroBenchmarks.csproj"
echo " --kind <value> Related to csproj. The kind of benchmarks that should be run. Defaults to micro"
echo " --runcategories <value> Related to csproj. Categories of benchmarks to run. Defaults to \"coreclr corefx\""
echo " --internal If the benchmarks are running as an official job."
echo ""
exit 0
; ;
esac
done
2019-09-07 12:43:59 +00:00
if [ " $repository " = = "dotnet/performance" ] || [ " $repository " = = "dotnet-performance" ] ; then
2019-07-11 12:25:27 +00:00
run_from_perf_repo = true
fi
if [ -z " $configurations " ] ; then
configurations = " CompliationMode= $compilation_mode "
fi
if [ -z " $core_root_directory " ] ; then
use_core_run = false
fi
2019-08-23 12:33:14 +00:00
if [ -z " $baseline_core_root_directory " ] ; then
use_baseline_core_run = false
fi
2019-07-11 12:25:27 +00:00
payload_directory = $source_directory /Payload
performance_directory = $payload_directory /performance
workitem_directory = $source_directory /workitem
extra_benchmark_dotnet_arguments = "--iterationCount 1 --warmupCount 0 --invocationCount 1 --unrollFactor 1 --strategy ColdStart --stopOnFirstError true"
perflab_arguments =
queue = Ubuntu.1804.Amd64.Open
creator = $BUILD_DEFINITIONNAME
helix_source_prefix = "pr"
2019-08-23 12:33:14 +00:00
if [ [ " $compare " = = true ] ] ; then
extra_benchmark_dotnet_arguments =
perflab_arguments =
# No open queues for arm64
if [ [ " $architecture " = "arm64" ] ] ; then
echo "Compare not available for arm64"
exit 1
fi
queue = Ubuntu.1804.Amd64.Tiger.Perf.Open
fi
2019-07-11 12:25:27 +00:00
if [ [ " $internal " = = true ] ] ; then
perflab_arguments = "--upload-to-perflab-container"
helix_source_prefix = "official"
creator =
extra_benchmark_dotnet_arguments =
if [ [ " $architecture " = "arm64" ] ] ; then
queue = Ubuntu.1804.Arm64.Perf
else
2019-08-14 19:16:27 +00:00
queue = Ubuntu.1804.Amd64.Tiger.Perf
2019-07-11 12:25:27 +00:00
fi
fi
2020-01-10 13:30:54 +00:00
common_setup_arguments = " --channel master --queue $queue --build-number $build_number --build-configs $configurations "
2019-07-11 12:25:27 +00:00
setup_arguments = " --repository https://github.com/ $repository --branch $branch --get-perf-hash --commit-sha $commit_sha $common_setup_arguments "
if [ [ " $run_from_perf_repo " = true ] ] ; then
payload_directory =
workitem_directory = $source_directory
performance_directory = $workitem_directory
setup_arguments = " --perf-hash $commit_sha $common_setup_arguments "
else
git clone --branch master --depth 1 --quiet https://github.com/dotnet/performance $performance_directory
docs_directory = $performance_directory /docs
mv $docs_directory $workitem_directory
fi
if [ [ " $use_core_run " = true ] ] ; then
new_core_root = $payload_directory /Core_Root
mv $core_root_directory $new_core_root
fi
2019-08-23 12:33:14 +00:00
if [ [ " $use_baseline_core_run " = true ] ] ; then
new_baseline_core_root = $payload_directory /Baseline_Core_Root
mv $baseline_core_root_directory $new_baseline_core_root
fi
2019-08-17 12:31:30 +00:00
ci = true
_script_dir = $( pwd ) /eng/common
. " $_script_dir /pipeline-logging-functions.sh "
2019-07-11 12:25:27 +00:00
# Make sure all of our variables are available for future steps
2019-08-14 19:16:27 +00:00
Write-PipelineSetVariable -name "UseCoreRun" -value " $use_core_run " -is_multi_job_variable false
2019-08-23 12:33:14 +00:00
Write-PipelineSetVariable -name "UseBaselineCoreRun" -value " $use_baseline_core_run " -is_multi_job_variable false
2019-08-14 19:16:27 +00:00
Write-PipelineSetVariable -name "Architecture" -value " $architecture " -is_multi_job_variable false
Write-PipelineSetVariable -name "PayloadDirectory" -value " $payload_directory " -is_multi_job_variable false
Write-PipelineSetVariable -name "PerformanceDirectory" -value " $performance_directory " -is_multi_job_variable false
Write-PipelineSetVariable -name "WorkItemDirectory" -value " $workitem_directory " -is_multi_job_variable false
Write-PipelineSetVariable -name "Queue" -value " $queue " -is_multi_job_variable false
Write-PipelineSetVariable -name "SetupArguments" -value " $setup_arguments " -is_multi_job_variable false
Write-PipelineSetVariable -name "Python" -value " $python3 " -is_multi_job_variable false
Write-PipelineSetVariable -name "PerfLabArguments" -value " $perflab_arguments " -is_multi_job_variable false
Write-PipelineSetVariable -name "ExtraBenchmarkDotNetArguments" -value " $extra_benchmark_dotnet_arguments " -is_multi_job_variable false
Write-PipelineSetVariable -name "BDNCategories" -value " $run_categories " -is_multi_job_variable false
Write-PipelineSetVariable -name "TargetCsproj" -value " $csproj " -is_multi_job_variable false
Write-PipelineSetVariable -name "RunFromPerfRepo" -value " $run_from_perf_repo " -is_multi_job_variable false
Write-PipelineSetVariable -name "Creator" -value " $creator " -is_multi_job_variable false
Write-PipelineSetVariable -name "HelixSourcePrefix" -value " $helix_source_prefix " -is_multi_job_variable false
Write-PipelineSetVariable -name "Kind" -value " $kind " -is_multi_job_variable false
2019-08-23 12:33:14 +00:00
Write-PipelineSetVariable -name "_BuildConfig" -value " $architecture . $kind . $framework " -is_multi_job_variable false
Write-PipelineSetVariable -name "Compare" -value " $compare " -is_multi_job_variable false