perf-job.yml 11.3 KB
Newer Older
1 2 3 4
parameters:
  buildConfig: ''
  archType: ''
  osGroup: ''
5
  osSubgroup: ''
6
  container: ''
7
  runtimeVariant: ''
8
  framework: net6.0 # Specify the appropriate framework when running release branches (ie netcoreapp3.0 for release/3.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 20 21 22 23 24 25

### Perf job

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

jobs:
O
Olivia Chen 已提交
26
- template: ${{ parameters.runJobTemplate }}
27 28
  parameters:
    # Compute job name from template parameters
29 30
    jobName: ${{ format('perfbuild_{0}{1}_{2}_{3}_{4}_{5}_{6}_{7}', parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.buildConfig, parameters.runtimeType, parameters.codeGenType, parameters.runKind, parameters.logicalMachine) }}
    displayName: ${{ format('Performance {0}{1} {2} {3} {4} {5} {6} {7}', parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.buildConfig, parameters.runtimeType, parameters.codeGenType, parameters.runKind, parameters.logicalMachine) }}
31
    pool: ${{ parameters.pool }}
32 33
    buildConfig: ${{ parameters.buildConfig }}
    archType: ${{ parameters.archType }}
34
    osGroup: ${{ parameters.osGroup }}
35
    osSubgroup: ${{ parameters.osSubgroup }}
36
    runtimeVariant: ${{ parameters.runtimeVariant }}
D
Drew Scoggins 已提交
37
    liveLibrariesBuildConfig: ${{ parameters.liveLibrariesBuildConfig }}
38
    runtimeType: ${{ parameters.runtimeType }}
39
    codeGenType: ${{ parameters.codeGenType }}
O
Olivia Chen 已提交
40 41
    projectFile: ${{ parameters.projectFile }}
    runKind: ${{ parameters.runKind }}
O
Olivia Chen 已提交
42
    additionalSetupParameters: ${{ parameters.additionalSetupParameters }}
43
    container: ${{ parameters.container }}
44
    logicalmachine: ${{ parameters.logicalmachine }}
45
    # Test job depends on the corresponding build job
46
    dependsOn:
B
Bill Wert 已提交
47
    - ${{ if ne(parameters.runtimeType, 'AndroidMono')}}:
B
Bill Wert 已提交
48
      - ${{ format('coreclr_{0}_product_build_{1}{2}_{3}_{4}', parameters.runtimeVariant, parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.buildConfig) }}
49
    - ${{ if ne(parameters.liveLibrariesBuildConfig, '') }}:
50
      - ${{ format('libraries_build_{0}{1}_{2}_{3}', parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.liveLibrariesBuildConfig) }}
51
    - ${{ if and(eq(parameters.runtimeType, 'mono'), ne(parameters.codeGenType, 'AOT')) }}:
52
      - ${{ format('mono_{0}_product_build_{1}{2}_{3}_{4}', parameters.runtimeVariant, parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.buildConfig) }}
D
Drew Scoggins 已提交
53 54
    - ${{ if eq(parameters.runtimeType, 'wasm') }}:
      - ${{ format('build_{0}{1}_{2}_{3}_{4}', 'Browser', '', 'wasm', parameters.buildConfig, parameters.runtimeType) }}
55 56
    - ${{ if eq(parameters.codeGenType, 'AOT')}}:
      - ${{ format('build_{0}{1}_{2}_{3}_{4}', parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.buildConfig, parameters.codeGenType) }}
B
Bill Wert 已提交
57 58
    - ${{ if eq(parameters.runtimeType, 'AndroidMono')}}:
      - ${{ 'build_Android_arm64_release_AndroidMono' }}
59

B
Bill Wert 已提交
60
    ${{ if and(eq(parameters.osGroup, 'windows'), ne(parameters.runtimeType, 'AndroidMono')) }}:
61
      ${{ if eq(parameters.runtimeType, 'mono') }}:
O
Olivia Chen 已提交
62 63
        extraSetupParameters: -Architecture ${{ parameters.archType }} -MonoDotnet $(Build.SourcesDirectory)\.dotnet-mono
      ${{ if eq(parameters.runtimeType, 'coreclr') }}:
64
        extraSetupParameters: -CoreRootDirectory $(Build.SourcesDirectory)\artifacts\tests\coreclr\${{ parameters.osGroup }}.${{ parameters.archType }}.Release\Tests\Core_Root -Architecture ${{ parameters.archType }}
B
Bill Wert 已提交
65
    ${{ if and(ne(parameters.osGroup, 'windows'), ne(parameters.runtimeType, 'AndroidMono')) }}:
66
      ${{ if and(eq(parameters.runtimeType, 'mono'), ne(parameters.codeGenType, 'AOT')) }}:
O
Olivia Chen 已提交
67
        extraSetupParameters: --architecture ${{ parameters.archType }} --monodotnet $(Build.SourcesDirectory)/.dotnet-mono
D
Drew Scoggins 已提交
68
      ${{ if eq(parameters.runtimeType, 'wasm') }}:
O
Olivia Chen 已提交
69
        extraSetupParameters: --architecture ${{ parameters.archType }} --wasm $(librariesDownloadDir)/bin/wasm
70 71
      ${{ if eq(parameters.codeGenType, 'AOT') }}:
        extraSetupParameters: --architecture ${{ parameters.archType }} --monoaot $(librariesDownloadDir)/bin/aot
72
      ${{ if and(eq(parameters.runtimeType, 'coreclr'), ne(parameters.osSubGroup, '_musl')) }}:
73
        extraSetupParameters: --corerootdirectory $(Build.SourcesDirectory)/artifacts/tests/coreclr/${{ parameters.osGroup }}.${{ parameters.archType }}.Release/Tests/Core_Root --architecture ${{ parameters.archType }}
74 75
      ${{ 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 已提交
76 77 78
    ${{ if eq(parameters.runtimeType, 'AndroidMono') }}:
      extraSetupParameters: -Architecture ${{ parameters.archType }} -AndroidMono

79
    variables: ${{ parameters.variables }}
80

81 82
    frameworks:
      - ${{ parameters.framework }}
83 84 85
    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)

86 87 88 89 90 91 92 93 94 95
    # Optionally download live-built libraries
    - ${{ if ne(parameters.liveLibrariesBuildConfig, '') }}:
      - 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 已提交
96
    # Download coreclr
B
Bill Wert 已提交
97
    - ${{ if ne(parameters.runtimeType, 'AndroidMono') }}:
B
Bill Wert 已提交
98 99 100 101 102 103
      - template: /eng/pipelines/common/download-artifact-step.yml
        parameters:
          unpackFolder: $(buildProductRootFolderPath)
          artifactFileName: '$(buildProductArtifactName)$(archiveExtension)'
          artifactName: '$(buildProductArtifactName)'
          displayName: 'Coreclr product build'
104

O
Olivia Chen 已提交
105
    # Download mono 
106
    - ${{ if and(eq(parameters.runtimeType, 'mono'), ne(parameters.codeGenType, 'AOT')) }}:
107 108 109 110
      - template: /eng/pipelines/common/download-artifact-step.yml
        parameters:
          unpackFolder: $(librariesDownloadDir)/bin/mono/$(osGroup).$(archType).$(buildConfigUpper)
          cleanUnpackFolder: false
111 112
          artifactFileName: 'MonoProduct__${{ parameters.runtimeVariant }}_$(osGroup)_$(archType)_$(buildConfig)$(archiveExtension)'
          artifactName: 'MonoProduct__${{ parameters.runtimeVariant }}_$(osGroup)_$(archType)_$(buildConfig)'
113
          displayName: 'Mono runtime'
114

O
Olivia Chen 已提交
115
    # Download wasm
D
Drew Scoggins 已提交
116
    - ${{ if eq(parameters.runtimeType, 'wasm') }}:
O
Olivia Chen 已提交
117 118 119 120 121 122
      - template: /eng/pipelines/common/download-artifact-step.yml
        parameters:
          unpackFolder: $(librariesDownloadDir)/BrowserWasm
          artifactFileName: BrowserWasm.zip
          artifactName: BrowserWasm
          displayName: BrowserWasm
D
Drew Scoggins 已提交
123

124
      - script: "mkdir $(librariesDownloadDir)/bin/wasm;unzip -o $(librariesDownloadDir)/BrowserWasm/artifacts/packages/Release/Shipping/Microsoft.NETCore.App.Runtime.Mono.browser-wasm.6.0.0-ci.nupkg data/* runtimes/* -d $(librariesDownloadDir)/bin/wasm;cp src/mono/wasm/runtime-test.js $(librariesDownloadDir)/bin/wasm/runtime-test.js;find $(librariesDownloadDir)/bin/wasm -type f -exec chmod 664 {} \\;"
D
Drew Scoggins 已提交
125 126
        displayName: "Create wasm directory (Linux)"

127 128 129 130 131
    # Download AOT
    - ${{ if eq(parameters.codeGenType, 'AOT') }}:
      - template: /eng/pipelines/common/download-artifact-step.yml
        parameters:
          unpackFolder: $(librariesDownloadDir)/LinuxMonoAOT
132
          artifactFileName: LinuxMonoAOT${{ parameters.archType }}.tar.gz
133
          artifactName: LinuxMonoAOT${{ parameters.archType }}
134 135
          displayName: AOT Mono Artifacts

136
      - 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"
137 138
        displayName: "Create aot directory (Linux)"

B
Bill Wert 已提交
139 140 141 142 143 144 145 146 147 148 149
    # Download AndroidMono
    - ${{ if eq(parameters.runtimeType, 'AndroidMono')}}:
      - template: /eng/pipelines/common/download-artifact-step.yml
        parameters:
          unpackFolder: $(Build.SourcesDirectory)
          cleanUnpackFolder: false
          artifactFileName: 'AndroidMonoarm64.tar.gz'
          artifactName: 'AndroidMonoarm64'
          displayName: 'Mono Android runtime'


150
    # Create Core_Root
151
    - script: $(Build.SourcesDirectory)/src/tests/build$(scriptExt) $(buildConfig) $(archType) generatelayoutonly $(librariesOverrideArg)
152
      displayName: Create Core_Root
153 154
      condition: and(succeeded(), ne(variables.runtimeFlavorName, 'Mono'))

O
Olivia Chen 已提交
155
    # Copy the runtime directory into the testhost folder to include OOBs.
156
    - 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\\6.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\\6.0.0\\corerun.exe"
157
      displayName: "Create mono dotnet (Windows)"
B
Bill Wert 已提交
158
      condition: and(and(succeeded(), eq(variables.runtimeFlavorName, 'Mono')), eq(variables.osGroup, 'windows'), ne('${{ parameters.runtimeType }}', 'AndroidMono'))
159

160
    - 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/6.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/6.0.0/corerun"
161
      displayName: "Create mono dotnet (Linux)"
B
Bill Wert 已提交
162
      condition: and(and(succeeded(), eq(variables.runtimeFlavorName, 'Mono')), ne(variables.osGroup, 'windows'), ne('${{ parameters.runtimeType }}', 'AndroidMono'))