perf-job.yml 15.4 KB
Newer Older
1 2 3 4
parameters:
  buildConfig: ''
  archType: ''
  osGroup: ''
5
  osSubgroup: ''
6
  container: ''
7
  runtimeVariant: ''
8
  framework: net7.0 # Specify the appropriate framework when running release branches (ie net6.0 for release/6.0)
9
  liveLibrariesBuildConfig: ''
10
  variables: {}
11
  runtimeType: 'coreclr'
12
  pool: ''
13
  codeGenType: 'JIT'
B
Bill Wert 已提交
14
  projectFile: ''
O
Olivia Chen 已提交
15
  runKind: ''
O
Olivia Chen 已提交
16 17
  runJobTemplate: '/eng/pipelines/coreclr/templates/run-performance-job.yml'
  additionalSetupParameters: ''
18
  logicalMachine: ''
19
  pgoRunType: ''
20
  javascriptEngine: 'NoJS'
21
  iOSLlvmBuild: 'False'
22
  skipLiveLibrariesDownload: false
23 24 25 26 27 28 29

### Perf job

### Each perf job depends on a corresponding build job with the same
### buildConfig and archType.

jobs:
O
Olivia Chen 已提交
30
- template: ${{ parameters.runJobTemplate }}
31 32
  parameters:
    # Compute job name from template parameters
33 34
    jobName: ${{ format('perfbuild_{0}{1}_{2}_{3}_{4}_{5}_{6}_{7}_{8}_{9}_{10}', parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.buildConfig, parameters.runtimeType, parameters.codeGenType, parameters.runKind, parameters.logicalMachine, parameters.javascriptEngine, parameters.pgoRunType, parameters.iosLlvmBuild) }}
    displayName: ${{ format('Performance {0}{1} {2} {3} {4} {5} {6} {7} {8} {9} {10}', parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.buildConfig, parameters.runtimeType, parameters.codeGenType, parameters.runKind, parameters.logicalMachine, parameters.javascriptEngine, parameters.pgoRunType, parameters.iosLlvmBuild) }}
35
    pool: ${{ parameters.pool }}
36 37
    buildConfig: ${{ parameters.buildConfig }}
    archType: ${{ parameters.archType }}
38
    osGroup: ${{ parameters.osGroup }}
39
    osSubgroup: ${{ parameters.osSubgroup }}
40
    runtimeVariant: ${{ parameters.runtimeVariant }}
D
Drew Scoggins 已提交
41
    liveLibrariesBuildConfig: ${{ parameters.liveLibrariesBuildConfig }}
42
    runtimeType: ${{ parameters.runtimeType }}
43
    codeGenType: ${{ parameters.codeGenType }}
O
Olivia Chen 已提交
44 45
    projectFile: ${{ parameters.projectFile }}
    runKind: ${{ parameters.runKind }}
O
Olivia Chen 已提交
46
    additionalSetupParameters: ${{ parameters.additionalSetupParameters }}
47
    container: ${{ parameters.container }}
48
    logicalmachine: ${{ parameters.logicalmachine }}
49
    pgoRunType: ${{ parameters.pgoRunType }}
50
    javascriptEngine: ${{ parameters.javascriptEngine }}
51
    iosLlvmBuild: ${{ parameters.iosLlvmBuild }}
52 53 54 55 56 57

    ${{ if and(eq(parameters.runtimeType, 'wasm'), eq(parameters.codeGenType, 'aot')) }}:
      helixTypeSuffix: '/wasm/aot'
    ${{ if and(eq(parameters.runtimeType, 'wasm'), ne(parameters.codeGenType, 'aot')) }}:
      helixTypeSuffix: '/wasm'

58
    # Test job depends on the corresponding build job
59
    dependsOn:
60
    - ${{ if not(in(parameters.runtimeType, 'AndroidMono', 'iOSMono', 'wasm')) }}:
B
Bill Wert 已提交
61
      - ${{ format('coreclr_{0}_product_build_{1}{2}_{3}_{4}', parameters.runtimeVariant, parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.buildConfig) }}
62
    - ${{ if and(ne(parameters.liveLibrariesBuildConfig, ''), eq(parameters.skipLiveLibrariesDownload, 'false')) }}:
63
      - ${{ format('libraries_build_{0}{1}_{2}_{3}', parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.liveLibrariesBuildConfig) }}
64
    - ${{ if and(eq(parameters.runtimeType, 'mono'), ne(parameters.codeGenType, 'AOT')) }}:
65
      - ${{ format('mono_{0}_product_build_{1}{2}_{3}_{4}', parameters.runtimeVariant, parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.buildConfig) }}
66
    - ${{ if eq(parameters.runtimeType, 'wasm')}}:
67
      - ${{ format('build_{0}{1}_{2}_{3}_{4}_{5}', 'Browser', '', 'wasm', 'Linux', parameters.buildConfig, parameters.runtimeType) }}
68
    - ${{ if and(eq(parameters.codeGenType, 'AOT'), ne(parameters.runtimeType, 'wasm'))}}:
69
      - ${{ format('build_{0}{1}_{2}_{3}_{4}', parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.buildConfig, parameters.codeGenType) }}
B
Bill Wert 已提交
70 71
    - ${{ if eq(parameters.runtimeType, 'AndroidMono')}}:
      - ${{ 'build_Android_arm64_release_AndroidMono' }}
72
      - ${{ 'Build_iOS_arm64_release_MACiOSAndroidMaui' }}
73 74
    - ${{ if eq(parameters.runtimeType, 'iOSMono')}}:
      - ${{ 'build_iOS_arm64_release_iOSMono' }}
75
      - ${{ 'Build_iOS_arm64_release_MACiOSAndroidMaui' }}
76

77
    ${{ if and(eq(parameters.osGroup, 'windows'), not(in(parameters.runtimeType, 'AndroidMono', 'iOSMono'))) }}:
78
      ${{ if eq(parameters.runtimeType, 'mono') }}:
O
Olivia Chen 已提交
79 80
        extraSetupParameters: -Architecture ${{ parameters.archType }} -MonoDotnet $(Build.SourcesDirectory)\.dotnet-mono
      ${{ if eq(parameters.runtimeType, 'coreclr') }}:
81
        extraSetupParameters: -CoreRootDirectory $(Build.SourcesDirectory)\artifacts\tests\coreclr\${{ parameters.osGroup }}.${{ parameters.archType }}.Release\Tests\Core_Root -Architecture ${{ parameters.archType }}
82
    ${{ if and(ne(parameters.osGroup, 'windows'), not(in(parameters.runtimeType, 'AndroidMono', 'iOSMono'))) }}:
83
      ${{ if and(eq(parameters.runtimeType, 'mono'), ne(parameters.codeGenType, 'AOT')) }}:
O
Olivia Chen 已提交
84
        extraSetupParameters: --architecture ${{ parameters.archType }} --monodotnet $(Build.SourcesDirectory)/.dotnet-mono
85
      ${{ if and(eq(parameters.runtimeType, 'wasm'), ne(parameters.codeGenType, 'AOT')) }}:
86
        extraSetupParameters: --architecture ${{ parameters.archType }} --wasm $(librariesDownloadDir)/bin/wasm --javascriptengine ${{ parameters.javascriptEngine }}
87 88 89
      ${{ if and(eq(parameters.runtimeType, 'wasm'), eq(parameters.codeGenType, 'AOT')) }}:
        extraSetupParameters: --architecture ${{ parameters.archType }} --wasm $(librariesDownloadDir)/bin/wasm --wasmaot --javascriptengine ${{ parameters.javascriptEngine }}
      ${{ if and(eq(parameters.codeGenType, 'AOT'), ne(parameters.runtimeType, 'wasm')) }}:
90
        extraSetupParameters: --architecture ${{ parameters.archType }} --monoaot $(librariesDownloadDir)/bin/aot
91
      ${{ if and(eq(parameters.runtimeType, 'coreclr'), ne(parameters.osSubGroup, '_musl')) }}:
92
        extraSetupParameters: --corerootdirectory $(Build.SourcesDirectory)/artifacts/tests/coreclr/${{ parameters.osGroup }}.${{ parameters.archType }}.Release/Tests/Core_Root --architecture ${{ parameters.archType }}
93 94
      ${{ if and(eq(parameters.runtimeType, 'coreclr'), eq(parameters.osSubGroup, '_musl')) }}:
        extraSetupParameters: --corerootdirectory $(Build.SourcesDirectory)/artifacts/tests/coreclr/${{ parameters.osGroup }}.${{ parameters.archType }}.Release/Tests/Core_Root --architecture ${{ parameters.archType }} --alpine
B
Bill Wert 已提交
95 96
    ${{ if eq(parameters.runtimeType, 'AndroidMono') }}:
      extraSetupParameters: -Architecture ${{ parameters.archType }} -AndroidMono
97 98
    ${{ if eq(parameters.runtimeType, 'iosMono') }}:
      extraSetupParameters: -Architecture ${{ parameters.archType }} -iOSMono -iOSLlvmBuild:$${{ parameters.iOSLlvmBuild }}
B
Bill Wert 已提交
99

100
    variables: ${{ parameters.variables }}
101

102 103
    frameworks:
      - ${{ parameters.framework }}
104 105 106
    steps:
    # Extra steps that will be passed to the performance template and run before sending the job to helix (all of which is done in the template)

107
    # Optionally download live-built libraries
108
    - ${{ if and(ne(parameters.liveLibrariesBuildConfig, ''), eq(parameters.skipLiveLibrariesDownload, 'false')) }}:
109 110 111 112 113 114 115 116
      - template: /eng/pipelines/common/download-artifact-step.yml
        parameters:
          unpackFolder: $(librariesDownloadDir)
          cleanUnpackFolder: false
          artifactFileName: '$(librariesBuildArtifactName)$(archiveExtension)'
          artifactName: '$(librariesBuildArtifactName)'
          displayName: 'live-built libraries'

O
Olivia Chen 已提交
117
    # Download coreclr
118
    - ${{ if not(in(parameters.runtimeType, 'AndroidMono', 'iOSMono', 'wasm')) }}:
B
Bill Wert 已提交
119 120 121 122 123 124
      - template: /eng/pipelines/common/download-artifact-step.yml
        parameters:
          unpackFolder: $(buildProductRootFolderPath)
          artifactFileName: '$(buildProductArtifactName)$(archiveExtension)'
          artifactName: '$(buildProductArtifactName)'
          displayName: 'Coreclr product build'
125

126
    # Download mono
127
    - ${{ if and(eq(parameters.runtimeType, 'mono'), ne(parameters.codeGenType, 'AOT')) }}:
128 129 130 131
      - template: /eng/pipelines/common/download-artifact-step.yml
        parameters:
          unpackFolder: $(librariesDownloadDir)/bin/mono/$(osGroup).$(archType).$(buildConfigUpper)
          cleanUnpackFolder: false
132 133
          artifactFileName: 'MonoProduct__${{ parameters.runtimeVariant }}_$(osGroup)_$(archType)_$(buildConfig)$(archiveExtension)'
          artifactName: 'MonoProduct__${{ parameters.runtimeVariant }}_$(osGroup)_$(archType)_$(buildConfig)'
134
          displayName: 'Mono runtime'
135

O
Olivia Chen 已提交
136
    # Download wasm
D
Drew Scoggins 已提交
137
    - ${{ if eq(parameters.runtimeType, 'wasm') }}:
O
Olivia Chen 已提交
138 139 140 141 142 143
      - template: /eng/pipelines/common/download-artifact-step.yml
        parameters:
          unpackFolder: $(librariesDownloadDir)/BrowserWasm
          artifactFileName: BrowserWasm.zip
          artifactName: BrowserWasm
          displayName: BrowserWasm
D
Drew Scoggins 已提交
144

145 146 147 148 149
      - script: >-
          mkdir -p $(librariesDownloadDir)/bin/wasm/data &&
          cp -r $(librariesDownloadDir)/BrowserWasm/staging/dotnet-workload $(librariesDownloadDir)/bin/wasm &&
          cp src/mono/wasm/test-main.js $(librariesDownloadDir)/bin/wasm/data/test-main.js &&
          find $(librariesDownloadDir)/bin/wasm -type f -exec chmod 664 {} \;
D
Drew Scoggins 已提交
150 151
        displayName: "Create wasm directory (Linux)"

152 153
    # Download mono AOT
    - ${{ if and(eq(parameters.codeGenType, 'AOT'), ne(parameters.runtimeType, 'wasm')) }}:
154 155 156
      - template: /eng/pipelines/common/download-artifact-step.yml
        parameters:
          unpackFolder: $(librariesDownloadDir)/LinuxMonoAOT
157
          artifactFileName: LinuxMonoAOT${{ parameters.archType }}.tar.gz
158
          artifactName: LinuxMonoAOT${{ parameters.archType }}
159 160
          displayName: AOT Mono Artifacts

161
      - script: "mkdir -p $(librariesDownloadDir)/bin/aot/sgen;mkdir -p $(librariesDownloadDir)/bin/aot/pack;cp -r $(librariesDownloadDir)/LinuxMonoAOT/artifacts/obj/mono/Linux.${{ parameters.archType }}.Release/mono/* $(librariesDownloadDir)/bin/aot/sgen;cp -r $(librariesDownloadDir)/LinuxMonoAOT/artifacts/bin/microsoft.netcore.app.runtime.linux-${{ parameters.archType }}/Release/* $(librariesDownloadDir)/bin/aot/pack"
162 163
        displayName: "Create aot directory (Linux)"

164
    # Download AndroidMono and MauiAndroid
B
Bill Wert 已提交
165 166 167
    - ${{ if eq(parameters.runtimeType, 'AndroidMono')}}:
      - template: /eng/pipelines/common/download-artifact-step.yml
        parameters:
168
          unpackFolder: $(Build.SourcesDirectory)/androidHelloWorld
B
Bill Wert 已提交
169 170 171
          cleanUnpackFolder: false
          artifactFileName: 'AndroidMonoarm64.tar.gz'
          artifactName: 'AndroidMonoarm64'
172
          displayName: 'Mono Android HelloWorld'
173 174 175 176 177 178 179
      - template: /eng/pipelines/common/download-artifact-step.yml
        parameters:
          unpackFolder: $(Build.SourcesDirectory)
          cleanUnpackFolder: false
          artifactFileName: 'MauiAndroidApp.tar.gz'
          artifactName: 'MauiAndroidApp'
          displayName: 'Maui Android App'
180 181 182 183 184 185 186 187
      - template: /eng/pipelines/common/download-artifact-step.yml
        parameters:
          unpackFolder: $(Build.SourcesDirectory)
          cleanUnpackFolder: false
          artifactFileName: 'MauiAndroidPodcast.tar.gz'
          artifactName: 'MauiAndroidPodcast'
          displayName: 'Maui Android Podcast'
          
188

189
    # Download iOSMono tests and MauiiOS/MacCatalyst
190 191 192 193 194 195 196 197
    - ${{ if eq(parameters.runtimeType, 'iOSMono') }}:
      - template: /eng/pipelines/common/download-artifact-step.yml
        parameters:
          unpackFolder: $(Build.SourcesDirectory)/iosHelloWorld/nollvm
          cleanUnpackFolder: false
          artifactFileName: 'iOSSampleAppNoLLVM.tar.gz'
          artifactName: 'iOSSampleAppNoLLVM'
          displayName: 'iOS Sample App NoLLVM'
B
Bill Wert 已提交
198 199 200 201 202 203 204
      - template: /eng/pipelines/common/download-artifact-step.yml
        parameters:
          unpackFolder: $(Build.SourcesDirectory)/iosHelloWorld/llvm
          cleanUnpackFolder: false
          artifactFileName: 'iOSSampleAppLLVM.tar.gz'
          artifactName: 'iOSSampleAppLLVM'
          displayName: 'iOS Sample App LLVM'
205 206
      - template: /eng/pipelines/common/download-artifact-step.yml
        parameters:
207
          unpackFolder: $(Build.SourcesDirectory)/MauiiOSDefaultIPA
208
          cleanUnpackFolder: false
209 210 211
          artifactFileName: 'MauiiOSDefaultIPA.tar.gz'
          artifactName: 'MauiiOSDefaultIPA'
          displayName: 'Maui iOS IPA'
212 213 214 215 216 217 218
      - template: /eng/pipelines/common/download-artifact-step.yml
        parameters:
          unpackFolder: $(Build.SourcesDirectory)/MauiMacCatalystDefault
          cleanUnpackFolder: false
          artifactFileName: 'MauiMacCatalystDefault.tar.gz'
          artifactName: 'MauiMacCatalystDefault'
          displayName: 'Maui MacCatalyst App'
219 220 221 222 223 224 225
      - template: /eng/pipelines/common/download-artifact-step.yml
        parameters:
          unpackFolder: $(Build.SourcesDirectory)/MauiiOSPodcastIPA
          cleanUnpackFolder: false
          artifactFileName: 'MauiiOSPodcastIPA.tar.gz'
          artifactName: 'MauiiOSPodcastIPA'
          displayName: 'Maui iOS Podcast IPA'
B
Bill Wert 已提交
226

227
    # Create Core_Root
228
    - script: $(Build.SourcesDirectory)/src/tests/build$(scriptExt) $(buildConfig) $(archType) generatelayoutonly $(librariesOverrideArg)
229
      displayName: Create Core_Root
230
      condition: and(succeeded(), ne(variables.runtimeFlavorName, 'Mono'), ne('${{ parameters.runtimeType }}', 'wasm'))
231

O
Olivia Chen 已提交
232
    # Copy the runtime directory into the testhost folder to include OOBs.
233
    - script: "build.cmd -subset libs.pretest -configuration release -ci -arch $(archType) -testscope innerloop /p:RuntimeArtifactsPath=$(librariesDownloadDir)\\bin\\mono\\$(osGroup).$(archType).$(buildConfigUpper) /p:RuntimeFlavor=mono;xcopy $(Build.SourcesDirectory)\\artifacts\\bin\\runtime\\$(_Framework)-$(osGroup)-$(buildConfigUpper)-$(archType)\\* $(Build.SourcesDirectory)\\artifacts\\bin\\testhost\\$(_Framework)-$(osGroup)-$(buildConfigUpper)-$(archType)\\shared\\Microsoft.NETCore.App\\7.0.0 /E /I /Y;xcopy $(Build.SourcesDirectory)\\artifacts\\bin\\testhost\\$(_Framework)-$(osGroup)-$(buildConfigUpper)-$(archType)\\* $(Build.SourcesDirectory)\\.dotnet-mono /E /I /Y;copy $(Build.SourcesDirectory)\\artifacts\\bin\\coreclr\\$(osGroup).$(archType).$(buildConfigUpper)\\corerun.exe $(Build.SourcesDirectory)\\.dotnet-mono\\shared\\Microsoft.NETCore.App\\7.0.0\\corerun.exe"
234
      displayName: "Create mono dotnet (Windows)"
235
      condition: and(and(succeeded(), eq(variables.runtimeFlavorName, 'Mono')), eq(variables.osGroup, 'windows'), not(in('${{ parameters.runtimeType }}', 'AndroidMono', 'iOSMono')))
236

237
    - script: "mkdir $(Build.SourcesDirectory)/.dotnet-mono;./build.sh -subset libs.pretest -configuration release -ci -arch $(archType) -testscope innerloop /p:RuntimeArtifactsPath=$(librariesDownloadDir)/bin/mono/$(osGroup).$(archType).$(buildConfigUpper) /p:RuntimeFlavor=mono;cp $(Build.SourcesDirectory)/artifacts/bin/runtime/$(_Framework)-$(osGroup)-$(buildConfigUpper)-$(archType)/* $(Build.SourcesDirectory)/artifacts/bin/testhost/$(_Framework)-$(osGroup)-$(buildConfigUpper)-$(archType)/shared/Microsoft.NETCore.App/7.0.0 -rf;cp $(Build.SourcesDirectory)/artifacts/bin/testhost/$(_Framework)-$(osGroup)-$(buildConfigUpper)-$(archType)/* $(Build.SourcesDirectory)/.dotnet-mono -r;cp $(Build.SourcesDirectory)/artifacts/bin/coreclr/$(osGroup).$(archType).$(buildConfigUpper)/corerun $(Build.SourcesDirectory)/.dotnet-mono/shared/Microsoft.NETCore.App/7.0.0/corerun"
238
      displayName: "Create mono dotnet (Linux)"
239
      condition: and(and(succeeded(), eq(variables.runtimeFlavorName, 'Mono')), ne(variables.osGroup, 'windows'), not(in('${{ parameters.runtimeType }}', 'AndroidMono', 'iOSMono')))