2019-07-11 12:25:27 +00:00
parameters :
steps : [ ] # optional -- any additional steps that need to happen before pulling down the performance repo and sending the performance benchmarks to helix (ie building your repo)
variables : [ ] # optional -- list of additional variables to send to the template
jobName : '' # required -- job name
displayName : '' # optional -- display name for the job. Will use jobName if not passed
pool : '' # required -- name of the Build pool
container : '' # required -- name of the container
2019-09-07 12:43:59 +00:00
osGroup : '' # required -- operating system for the job
2019-07-11 12:25:27 +00:00
extraSetupParameters : '' # optional -- extra arguments to pass to the setup script
frameworks : [ 'netcoreapp3.0' ] # optional -- list of frameworks to run against
continueOnError : 'false' # optional -- determines whether to continue the build if the step errors
dependsOn : '' # optional -- dependencies of the job
timeoutInMinutes : 320 # optional -- timeout for the job
enableTelemetry : false # optional -- enable for telemetry
jobs :
- template : ../jobs/jobs.yml
parameters :
dependsOn : ${{ parameters.dependsOn }}
enableTelemetry : ${{ parameters.enableTelemetry }}
enablePublishBuildArtifacts : true
continueOnError : ${{ parameters.continueOnError }}
jobs :
- job : '${{ parameters.jobName }}'
${{ if ne(parameters.displayName, '') }}:
displayName : '${{ parameters.displayName }}'
${{ if eq(parameters.displayName, '') }}:
displayName : '${{ parameters.jobName }}'
timeoutInMinutes : ${{ parameters.timeoutInMinutes }}
variables :
- ${{ each variable in parameters.variables }}:
- ${{ if ne(variable.name, '') }}:
- name : ${{ variable.name }}
value : ${{ variable.value }}
- ${{ if ne(variable.group, '') }}:
- group : ${{ variable.group }}
- IsInternal : ''
- HelixApiAccessToken : ''
- HelixPreCommand : ''
- ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
2019-09-07 12:43:59 +00:00
- ${{ if eq( parameters.osGroup, 'Windows_NT') }}:
2019-07-11 12:25:27 +00:00
- HelixPreCommand : 'set "PERFLAB_UPLOAD_TOKEN=$(PerfCommandUploadToken)"'
- IsInternal : -Internal
2019-09-07 12:43:59 +00:00
- ${{ if ne(parameters.osGroup, 'Windows_NT') }}:
2019-07-11 12:25:27 +00:00
- HelixPreCommand : 'export PERFLAB_UPLOAD_TOKEN="$(PerfCommandUploadTokenLinux)"'
- IsInternal : --internal
2019-09-07 12:43:59 +00:00
2019-07-11 12:25:27 +00:00
- group : DotNet-HelixApi-Access
- group : dotnet-benchview
workspace :
clean : all
pool :
${{ parameters.pool }}
container : ${{ parameters.container }}
strategy :
matrix :
${{ each framework in parameters.frameworks }}:
${{ framework }}:
_Framework : ${{ framework }}
steps :
- checkout : self
clean : true
# Run all of the steps to setup repo
- ${{ each step in parameters.steps }}:
- ${{ step }}
- powershell : $(Build.SourcesDirectory)\eng\common\performance\performance-setup.ps1 $(IsInternal) -Framework $(_Framework) ${{ parameters.extraSetupParameters }}
displayName : Performance Setup (Windows)
condition : and(succeeded(), eq(variables['Agent.Os'], 'Windows_NT'))
continueOnError : ${{ parameters.continueOnError }}
- script : $(Build.SourcesDirectory)/eng/common/performance/performance-setup.sh $(IsInternal) --framework $(_Framework) ${{ parameters.extraSetupParameters }}
displayName : Performance Setup (Unix)
condition : and(succeeded(), ne(variables['Agent.Os'], 'Windows_NT'))
continueOnError : ${{ parameters.continueOnError }}
- script : $(Python) $(PerformanceDirectory)/scripts/ci_setup.py $(SetupArguments)
displayName : Run ci setup script
# Run perf testing in helix
- template : /eng/common/templates/steps/perf-send-to-helix.yml
parameters :
HelixSource : '$(HelixSourcePrefix)/$(Build.Repository.Name)/$(Build.SourceBranch)' # sources must start with pr/, official/, prodcon/, or agent/
HelixType : 'test/performance/$(Kind)/$(_Framework)/$(Architecture)'
HelixAccessToken : $(HelixApiAccessToken)
HelixTargetQueues : $(Queue)
HelixPreCommands : $(HelixPreCommand)
Creator : $(Creator)
WorkItemTimeout : 4 : 00 # 4 hours
WorkItemDirectory : '$(WorkItemDirectory)' # WorkItemDirectory can not be empty, so we send it some docs to keep it happy
CorrelationPayloadDirectory : '$(PayloadDirectory)' # it gets checked out to a folder with shorter path than WorkItemDirectory so we can avoid file name too long exceptions